jiuwenSwarm 多 Agent 协同经验分享 — 基于 AI 面试天团案例

举报
yd_274732647 发表于 2026/07/16 15:27:15 2026/07/16
【摘要】 jiuwenSwarm 多 Agent 协同经验分享 — 基于 AI 面试天团案例本文以「AI 面试天团」为真实案例,分享 jiuwenSwarm 多智能体协同的构建过程、设计决策与踩坑经验。 一、背景与简介 1.1 为什么要做 AI 面试企业招聘中,面试环节长期存在三个痛点:痛点具体表现造成的损失面试官成本高技术面试官时薪数百元,HR 面试官日程满档,协调面试时间常需数天招聘周期拉长,优...

jiuwenSwarm 多 Agent 协同经验分享 — 基于 AI 面试天团案例

本文以「AI 面试天团」为真实案例,分享 jiuwenSwarm 多智能体协同的构建过程、设计决策与踩坑经验。


一、背景与简介

1.1 为什么要做 AI 面试

企业招聘中,面试环节长期存在三个痛点:

痛点 具体表现 造成的损失
面试官成本高 技术面试官时薪数百元,HR 面试官日程满档,协调面试时间常需数天 招聘周期拉长,优秀候选人流失
评估标准不统一 不同面试官提问随意、评分主观,同一候选人不同人面结果差异大 错招或漏招,入职后才发现不匹配
人为偏见难避免 面试官受首因效应、相似性偏好等影响,对候选人的判断带有隐性偏差 人才多样性受损,合规风险

AI 面试正是为了解决这些问题而生:标准化提问、量化评分、消除偏见、7×24 随时面

1.2 单 AI 做面试的困境

我们最初尝试用单个大模型做面试,很快遇到了瓶颈:

一个 Agent 既要出技术题、又要问 HR 问题、还要评分生成报告
→ Prompt 膨胀到上万字,模型注意力涣散,后半段指令被忽略
→ 角色混乱:技术面试中途突然问"你的职业规划是什么"
→ 深度不够:技术追问和 HR 洞察都需要专业深度,一个模型难以兼顾
→ 无法并行:技术评分和 HR 评分混在一起,难以独立量化

核心矛盾:真实面试是一个团队协作过程——技术专家考技术、HR 专家考综合素质、第三方汇总出报告。单个 AI 试图一人分饰多角,违背了面试的本质。

1.3 多智能体协作:让 AI 也能组队面试

多智能体(Multi-Agent)的思路很简单:不要让一个 AI 什么都做,而是让多个专业 AI 各做各的,协同完成复杂任务。

映射到面试场景:

真实面试团队                    AI 面试天团
─────────────                  ─────────────
面试主持人(协调流程)    →     面试调度总控 (Leader)
技术专家(出题+技术评分)  →     技术面试官 Agent
HR 专家(综合素质评分)    →     HR 面试官 Agent
测评委员会(汇总出报告)   →     人才测评专员 Agent
破冰接待(让候选人放松)    →     通用聊天官 Agent

每个 Agent 只扮演自己擅长的角色,有自己的专属知识库、人设风格和评分标准,互不越界。

1.4 jiuwenSwarm 是什么

jiuwenSwarm 是一个开源的多智能体协作框架(由 openJiuwen 团队维护),专门用于构建多个 AI Agent 协同工作的系统。它的核心能力包括:

能力 通俗解释 在 AI 面试中的作用
多 Agent 团队 定义一个"团队",里面有 Leader 和多个专业成员 组建面试天团:1 个调度 + 4 个面试官
Skill 机制 每个 Agent 绑定一份"行为规则书"(SKILL.md 技术面试官的规则书只写技术出题评分,不写 HR 问题
任务 DAG 声明任务间的依赖关系,框架自动按顺序执行 破冰→技术→HR→报告,前一步完成才解锁下一步
多模型分配 不同 Agent 可以用不同的大模型 技术面试用快速模型,报告生成用强逻辑模型
多渠道接入 同一套 Agent 逻辑可接入飞书、Web、钉钉等 候选人通过飞书机器人直接面试,无需装 App
团队持久化 团队可以长期保活,不因一次面试结束就解散 面试完一个候选人,自动等待下一个

jiuwenSwarm 官网:https://gitcode.com/openJiuwen/jiuwenswarm

1.5 本文要分享什么

本文不是 jiuwenSwarm 的使用手册,而是一次完整的多 Agent 系统构建经验分享。我们以 AI 面试天团为案例,讲清楚以下几件事:

  • 怎么想的:为什么这样拆角色、定流程、配信号(第二章)
  • 怎么做的:Skill 怎么写、模型怎么选、知识库怎么分(第三章)
  • 踩了什么坑:心跳刷屏、消息转发、状态跳转等真实问题(第五章)
  • 最后才说为什么:为什么选 jiuwenSwarm 而不是其他方案(第七章)

二、构建思路

2.1 核心设计原则:先拆角色,再定流程,最后配信号

这是我们在实践中总结的三步法:

第一步:拆角色 → 谁参与?各自的专业边界是什么?
第二步:定流程 → 谁先谁后?依赖关系是什么?谁是唯一对用户说话的人?
第三步:配信号 → Agent 之间怎么交接?数据怎么流转?什么时候算完成?

2.2 第一步:拆角色

原则:每个 Agent 只做一件事,做到极致。

Agent 唯一职责 不做什么 人设关键词
面试调度总控 (Leader) 流程协调 + 唯一对候选人说话 不出题、不评分 严谨的项目管理专家
通用聊天官 破冰 + 回答公司问题 不问技术/HR问题 阳光热情有亲和力
技术面试官 从题库出题 + 评分 + 保存 不问HR问题、不告知得分 严谨理性的资深技术专家
HR面试官 从题库出题 + 评分 + 保存 不问技术问题、不谈薪资 亲和有原则的HRBP
人才测评专员 加权计算 + 生成HTML报告 不接触候选人 客观数据驱动的分析师

关键决策:为什么 Leader 不直接面试?

因为「协调」和「执行」是两种完全不同的认知模式。Leader 需要全局视野(管理状态机、处理信号、转发消息),如果同时让它出题评分,prompt 会膨胀,注意力分散。分离后,Leader 的 SKILL.md 只有 11KB,纯粹做调度。

关键决策:为什么测评专员不接触候选人?

面试和评分必须分离,避免「自己考自己打分」的偏差。测评专员只接收结构化数据,做纯计算,保证客观性。

2.3 第二步:定流程

原则:用任务 DAG 声明依赖,不要硬编码顺序。

破冰聊天 (可跳过)
    ↓
技术面试 ← 依赖破冰完成
    ↓
HR面试   ← 依赖技术面试完成
    ↓
生成报告  ← 依赖技术+HR评分数据

在 jiuwenSwarm 中通过 create_task + depends_on 声明:

# Leader 创建任务 DAG
create_task: 破冰聊天
create_task: 技术面试 (depends_on: 破冰聊天)
create_task: HR面试   (depends_on: 技术面试)
create_task: 生成报告  (depends_on: HR面试)

框架自动管理状态流转:前序完成才解锁后续,不需要手写 if-else。

关键决策:单发言人控制

这是整个系统最重要的约束。如果不控制,多个 Agent 可能同时向候选人发消息,体验灾难性。

实现方式:Leader 的 SKILL.md 中定义严格协议:

  1. Leader 是唯一对候选人说话的接口
  2. 每次只激活一个 Agent,通过 send_message(to=agent) 下发指令
  3. 等待该 Agent 返回 CONTROL_RETURN 信号后才激活下一个
  4. Agent 之间不直接通信,所有数据通过 Leader 中转

2.4 第三步:配信号

原则:Agent 间用结构化信号通信,不用自然语言。

# 进度报告(每题评分后)
PROGRESS_REPORT|QUESTION_1|TOTAL_5|SCORE_9|评分依据

# 心跳(等待候选人作答时,每5秒)
HEARTBEAT|QUESTION_1|IN_PROGRESS

# 控制权返回(环节完成)
CONTROL_RETURN
TECHNICAL_SCORING_DATA|张三|AI算法工程师|9,9,9,9,9|45|9.0|文件路径

# 报告就绪
REPORT_READY|张三|AI算法工程师|8.4|强烈推荐|报告路径

为什么不用自然语言通信?

  • 结构化信号可精确解析,不会误解
  • Leader 可以自动提取数据字段做流转
  • 可审计:日志中一眼看出流程进度
  • Agent 的 prompt 更简单:只需按格式输出,不需要理解对方在说什么

三、具体怎么构建

3.1 Skill 设计要点

每个 SKILL.md 是一个 Agent 的完整行为定义,设计时有四个必填部分:

---
name: <skill-name>
description: <英文简述>
---
# Role          ← 我是谁,我的专业边界
# 核心规则       ← 我必须遵守的约束(出题顺序、评分标准、保存路径等)
# 信号格式       ← 我与 Leader 通信的协议
# 边界处理       ← 异常情况怎么办(答不出、检索失败等)

实践建议

  • SKILL.md 控制在 8-12KB,太长模型会忽略后半部分
  • 知识库路径、保存路径等硬编码在 SKILL.md 中,不通过运行时传参
  • 评分标准用三档(优秀/合格/不合格)+ 分数区间,比五档更容易执行

3.2 模型分配策略

原则:按任务特性选模型,不是全部用最贵的。

角色 任务特性 选模型原则
Leader 流程协调、状态管理 强推理、长上下文
通用聊天官 闲聊、回答公司问题 对话能力即可
技术面试官 出题+评分+追问 快速响应优先
HR面试官 理解人性、捕捉矛盾 均衡理解力
测评专员 精确计算+HTML生成 强逻辑、代码能力

关键收益:技术面试官用 flash 模型,出题评分快;测评专员用 deepseek,报告质量高。如果全用 glm-5.2,成本翻倍但体验不会更好。

3.3 知识库设计

原则:每个 Agent 只看到自己需要的知识库,不交叉。

D:\zhishiku\
├── 公司介绍.pdf                    → 通用聊天官
├── 招聘简章.pdf                    → Leader
├── 技术面试题库.pdf                → 技术面试官
└── HR面试题库.pdf                  → HR面试官

技术面试官不需要看 HR 题库,反之亦然。隔离的好处:

  • prompt 更短,注意力更集中
  • 不会串题(技术面试官不会突然问 HR 问题)
  • 知识库可独立更新,不影响其他 Agent

3.4 人设(persona)与提示词(prompt_hint)的区分

jiuwenSwarm 提供两层注入:

字段 可见性 放什么
公开 persona 全员可见 角色身份描述(“严谨的技术专家”)
私有 prompt_hint 仅自己可见 详细行为规则(出题格式、评分标准、信号协议)

实践建议:persona 写简短的人设画像(1-2句话),prompt_hint 写完整的 SKILL.md 级别的行为规则。这样其他 Agent 知道"这个人是做什么的",但不知道他的具体规则。

3.5 异常处理设计

SKILL.md 中必须定义边界处理,否则 Agent 遇到异常会卡住:

- 候选人答不出某题 → 按不合格档评分,继续下一题
- 候选人问非本环节问题 → "这个问题请咨询面试主持人"
- 知识库检索失败 → 报错并通知 Leader,等待指令
- 候选人要求跳过破冰 → Leader 取消破冰任务,直接激活技术面试

本案例的真实经历:候选人说"我想直接进行面试",Leader 立即取消破冰任务,技术面试任务自动从 blocked 变为 pending,流程无缝衔接。这就是任务 DAG 的价值——声明式依赖,框架自动处理状态流转。


四、架构模式总结

4.1 适用于本案例的模式:串行流水线 + 单发言人

Leader (唯一出口)
  → Agent ACONTROL_RETURN
  → Agent BCONTROL_RETURN + 数据
  → Agent CCONTROL_RETURN + 数据
  → Agent DREPORT_READY

特征:严格顺序、单点通信、数据逐级汇总。

4.2 jiuwenSwarm 还支持的其他模式

模式 适用场景 何时考虑
并行扇出 多个独立子任务同时执行 如:同时面试多个候选人
对抗验证 两个 Agent 互查结果 如:出题Agent + 审题Agent
动态增减 运行时按需 spawn 新成员 如:根据岗位动态加载专业面试官
HITT(人在团队中) 真人作为团队成员参与 如:真人面试官 + AI 辅助

4.3 选择建议

能用串行流水线解决的 → 不要用并行
能用 DAG 声明依赖的 → 不要硬编码 if-else
能用结构化信号的 → 不要用自然语言通信
能用 Skill 隔离的 → 不要塞进一个 prompt

五、踩过的坑与经验

5.1 心跳信号处理

技术面试官在等待候选人作答时会持续发送 HEARTBEAT|QUESTION_N|IN_PROGRESS。Leader 需要识别这是心跳而非正式消息,不要每次都回复,否则会刷屏。

解法:Leader 的 SKILL.md 中明确:HEARTBEAT 信号静默忽略,只在收到 PROGRESS_REPORT 或 CONTROL_RETURN 时才行动。

5.2 候选人消息转发

候选人通过飞书/Web 发的消息,只有 Leader 能收到。Leader 需要及时将回答转发给当前活跃的面试官。

解法:Leader 维护"当前活跃 Agent"状态,收到候选人消息后立即 send_message(to=当前Agent, content=候选人回答)

5.3 破冰跳过的状态处理

候选人要求跳过破冰时,需要:取消破冰任务 → 技术面试任务自动解锁 → 激活技术面试官。

解法update_task(task_id=破冰, status=cancelled),框架自动将依赖它的技术面试从 blocked 变为 pending。

5.4 评分数据持久化

每个面试官的评分数据需要:保存到本地文件 + 回传给 Leader + 最终汇总给测评专员。

解法:面试官保存 txt 到 D:\面试记录\,同时通过信号回传结构化数据。Leader 收到后写入 team-workspace 的 JSON 文件,测评专员从 JSON 读取做汇总。


六、一页纸清单

想用 jiuwenSwarm 构建多 Agent 系统,按这个顺序走:

  1. 拆角色:列出所有参与方,明确各自的唯一职责和不做什么
  2. 定流程:画 DAG,标注依赖关系,确定谁对用户说话
  3. 选模型:按任务特性分配,协调用强模型、执行用快模型
  4. 写 Skill:每个 Agent 一个 SKILL.md,含角色/规则/信号/异常处理
  5. 配信号:定义 Agent 间的结构化通信协议
  6. 备知识库:按 Agent 隔离知识库,不交叉
  7. 配团队:在 config.yaml 中定义 predefined_members + agents 模型分配
  8. 配渠道:飞书/Web/钉钉,开启 send_file_allowed
  9. 验证:发一条消息走完全流程,检查信号日志和输出文件

七、为什么选择 jiuwenSwarm

7.1 我们要解决的问题

AI 面试是一个典型的多角色、多阶段、有严格流程约束的复杂任务:

  • 多角色:破冰聊天、技术面试、HR 面试、人才测评,每个角色有完全不同的专业领域和人设风格
  • 多阶段:收集信息 → 选岗位 → 破冰 → 技术面试 → HR 面试 → 生成报告,阶段间有严格依赖
  • 单发言人约束:同一时刻只能有一个面试官与候选人对话,避免混乱
  • 数据流转:各环节评分数据需汇总到测评专员做加权计算
  • 知识库隔离:技术题库和 HR 题库是不同的 PDF,各面试官只看自己的题库

如果用单 Agent 做,要么 prompt 巨长导致注意力涣散,要么角色混乱(技术面试官突然问 HR 问题),要么难以维护。

7.2 jiuwenSwarm 的核心优势

能力 解决了什么问题 在本案例中的体现
多 Agent 团队 角色专业化,每个 Agent 只做自己擅长的事 5 个 Agent 各司其职,互不越界
Skill 机制 行为规则与模型解耦,可独立迭代 每个面试官一个 SKILL.md,改题库不用改代码
任务 DAG 阶段依赖关系声明式定义,框架自动调度 破冰→技术→HR→测评,前序完成才解锁后续
单发言人控制 Leader 统一管控谁在说话,避免抢话 候选人始终只看到一个人在提问
多模型分配 不同角色用不同模型,兼顾效果与成本 技术面试用快速模型,测评用强逻辑模型
多渠道接入 同一套 Agent 逻辑,飞书/Web/钉钉通用 飞书机器人直接面试,无需额外开发
团队持久化 团队保活,跨会话复用 面试完不解散,等下一个候选人
信号协议 Agent 间通过结构化信号通信,可审计 CONTROL_RETURN / PROGRESS_REPORT 精确交接

7.3 对比其他方案

方案 问题
单 Agent + 超长 Prompt 角色混乱、注意力涣散、难以维护、无法并行
手写编排脚本 每次改流程都要改代码,没有模型分配、渠道接入、持久化
LangChain Multi-Agent 偏代码编排,缺少 Skill 机制、团队持久化、多渠道开箱即用
jiuwenSwarm 声明式配置 + Skill 解耦 + 多模型 + 多渠道 + 持久化,开箱即用

jiuwenSwarm 多 Agent 协同经验分享 v1.0 | 基于 AI 面试天团案例 | 2026-07-15

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。