fischer-agentkit/docs/brainstorms/2026-06-14-expert-team-mode...

208 lines
13 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
date: 2026-06-14
topic: expert-team-mode
---
## Summary
在对话框中引入专家团模式Expert Team Mode支持用户手动指定或系统自动组建多专家协作团队。底层采用 Plan-Execute 协作模式(结构化协作计划 + 去中心化执行前端以多角色对话流呈现协作过程。Expert 是比 Skill 更高的角色抽象,聚合多个 Skill 并包含人格、思维方式和协作策略。
## Problem Frame
当前 AgentKit 的多 Agent 协作依赖 Orchestrator-Worker 的集中式编排或 Pipeline 的 DAG 流程驱动。这两种模式适合结构化、可预测的工作流,但无法支撑需要多专家自主协作、实时讨论、动态调整的复杂任务场景。用户在对话框中面对复杂任务时,只能与单个 Agent 交互,无法获得多视角、多专长的协作产出。类似 Qoder 的专家团模式填补了这一空白——让多个专家以目标为导向,自主分析、分工、执行、验证、汇报。
## Key Decisions
- **Plan-Execute 而非纯 Swarm**结构化协作计划保证任务收敛和可预测性Expert 在职责范围内自主协作(去中心化),但整体框架由计划约束。纯 Swarm 模式自由度最高但收敛风险大。
- **Expert 聚合 Skill**Expert 是比 Skill 更高的角色抽象。一个 Expert 聚合多个 Skill并包含人格设定、思维方式、协作策略。Skill 是能力单元Expert 是角色单元。
- **混合 Agent 生成**:核心角色从预定义专家模板库选择(保证质量),辅助角色由 LLM 根据任务现场动态生成(保持灵活性)。
- **前端对话流展示**:协作过程以多角色对话流呈现给用户,每个 Expert 有独立头像和颜色标识。底层是结构化计划驱动,前端是对话式体验。
- **两种并行模式统一支持**:子任务级并行(各做各的,结果汇总)和竞标式并行(同一任务多人做,取最优/融合)都在协作计划中标注,执行引擎按类型处理。
## Actors
- A1. **用户** — 发起任务、指定专家团成员、干预协作过程(调整分工、增减 Expert、修改方向
- A2. **Lead Expert** — 首个加入团队的 Expert 或用户指定的负责人,负责初始任务分解、协作计划生成、最终结果汇总
- A3. **Expert** — 具有特定专长的角色,在职责范围内自主工作,可与其他 Expert 直接交互和交接
- A4. **ExpertTeam** — 专家团容器,管理 Expert 的加入/退出、共享上下文、协作计划的生命周期
- A5. **ExpertTemplate Registry** — 专家模板注册中心,存储预定义的 Expert 模板供选择和组装
## Requirements
### Expert 定义与管理
- R1. Expert 配置包含:名称、人格描述、思维方式、绑定的 Skill 列表、协作策略偏好、头像/颜色标识
- R2. Expert 可聚合一个或多个已注册 Skill执行时按 SkillConfig 驱动
- R3. ExpertTemplate 是可复用的 Expert 预设,存储在 YAML 配置或注册中心中,包含完整的 Expert 配置
- R4. ExpertTemplate Registry 支持模板的注册、查询、列表展示
- R5. 临时 Expert 由 LLM 根据任务分析动态生成 ExpertConfig包含角色名称、职责描述、建议绑定的 Skill
### 专家团组建
- R6. 用户可通过对话框手动指定专家团成员(选择 ExpertTemplate 或指定角色描述)
- R7. Lead Expert 在接收任务后评估复杂度,建议升级为专家团模式(需用户确认,不自动强制升级)
- R8. 自动组建时Lead Expert 分析任务后生成协作计划,计划中包含需要的 Expert 角色定义
- R9. 自动组建采用混合模式:核心角色从模板库匹配,辅助角色动态生成
- R10. 专家团组建后,所有 Expert 的角色信息对用户可见
### 协作计划
- R11. CollaborationPlan 定义专家团的结构化协作蓝图,包含:任务分解、角色分工、依赖关系、并行节点、合并策略
- R12. 协作计划中的每个节点标注执行类型:串行、子任务级并行、竞标式并行
- R13. 竞标式并行节点需指定评判策略:取最优、投票、融合
- R14. 协作计划可由 Lead Expert 或用户动态修改;普通 Expert 可提议修改,需 Lead Expert 审批后生效
- R15. 计划修改后,受影响的 Expert 立即感知变更并调整行为
### 去中心化协作
- R16. Expert 之间可直接交互、请求协助、交接任务,无需经过 Lead Expert 中转
- R17. Expert 间的交互通过共享对话流进行,所有消息对团队内所有 Expert 可见;上下文管理采用摘要共享策略(长内容自动摘要后广播,原始内容存入 SharedWorkspace 按需获取)
- R18. Lead Expert 负责初始分解和最终汇总,但不控制中间流程
- R19. Expert 通过共享上下文中的角色描述了解其他 Expert 的专长,可据此发起协作请求
### 并行执行与结果合并
- R20. 子任务级并行:多个 Expert 同时执行不同子任务,结果由 Lead Expert 或指定 Expert 汇总
- R21. 竞标式并行:多个同类型 Expert 独立完成同一子任务,结果按评判策略处理
- R22. 评判策略"取最优":由 Lead Expert 或指定评审 Expert 选择最佳结果
- R23. 评判策略"投票":所有 Expert 投票选择最佳结果,平局时由 Lead Expert 仲裁
- R24. 评判策略"融合":由 Lead Expert 或指定 Expert 将多个结果融合为统一产出
### 用户干预
- R25. 用户可随时在对话流中插入指令,指令对全体 Expert 可见
- R26. 用户可调整专家团分工(修改协作计划)
- R27. 用户可增减 Expert添加新 Expert 或移除已有 Expert
- R28. 用户可修改任务方向或补充需求Lead Expert 据此重新规划
### 前端展示
- R29. 协作过程以多角色对话流形式呈现,每个 Expert 的消息带有独立头像和颜色标识
- R30. 协作计划以可视化方式展示(分工图/时间线),用户可展开查看详情
- R31. 并行执行时,多个 Expert 的消息流通过消息标签expert_id复用同一 WebSocket 通道同时更新,用户可按 Expert 切换关注焦点
- R32. Expert 间的交接、请求协助等交互以特殊消息类型展示(区别于普通对话)
### 触发与路由
- R33. Lead Expert 在接收任务后评估复杂度,建议升级为专家团模式(与 R7 一致)
- R34. 用户可通过 `@team` 或类似指令主动触发专家团模式
- R35. 用户指定专家团成员时,跳过自动分析,直接进入协作计划生成
- R36. 专家团任务完成后,团队自动解散,临时 Expert 被回收;临时 Expert 的产出保留在 SharedWorkspace 中不随实例销毁丢失
## Key Decisions (Updated)
- **Expert 与 Agent 的关系**Expert 是 Agent 的配置层ExpertConfig运行时通过 AgentPool 创建对应的 ConfigDrivenAgent 实例。Expert 本身不是 Agent 实例,而是角色定义 + Skill 聚合 + 协作策略的配置单元。
## Key Flows
- F1. 手动组建专家团
- **Trigger:** 用户在对话框中指定专家团成员
- **Actors:** A1, A4, A2
- **Steps:** 用户指定 ExpertTemplate 或角色描述 → ExpertTeam 创建 → Lead Expert 生成 CollaborationPlan → 计划展示给用户确认 → Expert 按计划开始协作
- **Covered by:** R6, R10, R11, R35
- F2. 自动组建专家团
- **Trigger:** 系统检测到高复杂度任务或用户请求专家团
- **Actors:** A1, A4, A2, A5
- **Steps:** Lead Expert 分析任务 → 识别需要的 Expert 角色 → 核心角色从模板库匹配、辅助角色动态生成 → 生成 CollaborationPlan → 计划展示给用户确认 → Expert 按计划开始协作
- **Covered by:** R7, R8, R9, R11
- F3. 去中心化协作执行
- **Trigger:** CollaborationPlan 确认后开始执行
- **Actors:** A2, A3, A4
- **Steps:** Expert 按计划执行各自任务 → Expert 间可直接交互和交接 → 并行节点同时执行 → 结果按合并策略处理 → Lead Expert 汇总最终产出
- **Covered by:** R16, R17, R18, R20, R21
- F4. 用户干预协作
- **Trigger:** 用户在对话流中插入指令
- **Actors:** A1, A4, A2
- **Steps:** 用户发出指令 → 指令对全体 Expert 可见 → Lead Expert 评估影响 → 修改 CollaborationPlan如需要 → 受影响 Expert 调整行为
- **Covered by:** R25, R26, R27, R28
- F5. 竞标式并行执行
- **Trigger:** CollaborationPlan 中某节点标注为竞标式并行
- **Actors:** A3, A2
- **Steps:** 多个同类型 Expert 独立完成同一子任务 → 各自提交结果 → 按评判策略处理(取最优/投票/融合) → 产出最终结果
- **Covered by:** R21, R22, R23, R24
- F6. 专家团解散
- **Trigger:** 任务完成或用户主动解散
- **Actors:** A4, A1
- **Steps:** Lead Expert 汇总最终结果 → 结果呈现给用户 → 临时 Expert 被回收 → ExpertTeam 销毁 → 模板 Expert 保留在注册中心
- **Covered by:** R36
## Acceptance Examples
- AE1. **手动组建 + 子任务并行**
- **Covers R6, R20.** Given 用户输入"帮我分析这份市场报告,叫上数据分析师和战略顾问", When 系统创建 ExpertTeam 并生成计划, Then 数据分析师和战略顾问各自独立分析Lead Expert 汇总两份分析为统一报告
- AE2. **自动组建 + 竞标并行**
- **Covers R7, R21, R22.** Given 用户输入一个复杂的技术方案评审任务, When 系统自动升级为专家团模式, Then Lead Expert 生成 3 个架构师 Expert 竞标式并行出方案Lead Expert 选择最优方案
- AE3. **用户干预调整方向**
- **Covers R25, R26, R28.** Given 专家团正在执行任务, When 用户在对话流中说"重点看成本优化,别管性能了", Then Lead Expert 修改计划,受影响 Expert 调整分析方向
- AE4. **Expert 间直接协作**
- **Covers R16, R17.** Given 数据分析师 Expert 需要行业数据, When 数据分析师直接请求行业研究员 Expert 协助, Then 行业研究员提供数据,无需 Lead Expert 中转
- AE5. **动态增减 Expert**
- **Covers R27.** Given 专家团正在执行, When 用户说"再加一个法律顾问", Then 系统从模板库匹配或动态生成法律顾问 Expert加入团队并更新计划
## Success Criteria
- 专家团能在 5 分钟内完成一个需要 3+ 专家协作的中等复杂度任务
- 用户能清晰追踪每个 Expert 的工作状态和产出
- 用户干预后Expert 在 1 轮交互内感知并响应变更
- 临时 Expert 在任务完成后被完全回收,不残留资源
## Scope Boundaries
**Deferred for later:**
- Expert 间的学习与进化机制(经验共享、能力提升)
- 跨会话的 Expert 持久化和记忆共享
- Expert 市场和共享模板库
- 专家团的 A/B 测试和效果评估
**Outside this product's identity:**
- 通用的工作流引擎(已有 PipelineEngine
- 人工审核节点(已有 Workflow approval
- 实时音视频协作
## Dependencies / Assumptions
- 依赖现有 `AgentPool` 管理 Agent 实例的创建和销毁
- 依赖现有 `MessageBus` 支持 Expert 间的消息通信
- 依赖现有 `HandoffManager` 支持 Expert 间的任务交接(需扩展为进程内模式)
- 依赖现有 `Orchestrator` 的任务分解能力GoalPlanner + LLM 分解)
- 依赖现有 `PipelineEngine` 的并行执行和拓扑排序
- 假设 LLM 能生成质量合格的 CollaborationPlan含角色定义、依赖关系、并行标注
- 假设前端 WebSocket 能支持多路并发消息流
## Outstanding Questions
**Resolve Before Planning:**
- 协作计划的粒度:定义大阶段和角色分工(粗粒度,灵活调整)还是精确到每步操作(细粒度,强约束)
- 协作计划失败时的降级策略:回退到单 Agent 还是重试
- HandoffManager 进程内模式的实现策略:扩展现有 HandoffManager 还是新建 InProcessHandoff
**Deferred to Planning:**
- ExpertTemplate 的 YAML Schema 设计
- 协作计划的可视化组件选型
- 并行消息流的前端渲染策略
- 竞标式并行执行引擎的扩展设计(当前 PipelineEngine 仅支持拓扑排序并行)
## Sources / Research
- `src/agentkit/core/orchestrator.py` — Orchestrator-Worker 编排模式,三级任务分解降级
- `src/agentkit/orchestrator/pipeline_engine.py` — DAG 拓扑并行执行、Saga 补偿、对抗闭环
- `src/agentkit/orchestrator/handoff.py` — Redis Pub/Sub 点对点任务转交
- `src/agentkit/orchestrator/dynamic_pipeline.py` — 条件/嵌套/循环动态 Pipeline
- `src/agentkit/core/agent_pool.py` — 运行时 Agent 实例管理
- `src/agentkit/core/shared_workspace.py` — Redis 共享状态 + 分布式锁
- `src/agentkit/chat/skill_routing.py` — CostAwareRouter 三层路由
- `src/agentkit/skills/base.py` — SkillConfig 定义ExpertConfig 可参考扩展