fischer-agentkit/docs/plans/2026-06-14-001-feat-expert-...

574 lines
28 KiB
Markdown
Raw 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
status: active
origin: docs/brainstorms/2026-06-14-expert-team-mode-requirements.md
---
## Summary
实现专家团模式Expert Team Mode在对话框中引入多专家协作能力。底层采用 Plan-Execute 协作模式(结构化协作计划 + 去中心化执行前端以多角色对话流呈现协作过程。Expert 是比 Skill 更高的角色抽象,聚合多个 Skill 并包含人格和协作策略。支持用户手动指定专家团和系统自动组建两种触发方式,支持子任务级并行和竞标式并行两种并行模式,支持全程用户干预。
## Problem Frame
当前 AgentKit 的多 Agent 协作依赖 Orchestrator-Worker 集中式编排或 Pipeline DAG 流程驱动,无法支撑多专家自主协作、实时讨论、动态调整的复杂任务场景。用户在对话框中只能与单个 Agent 交互,无法获得多视角、多专长的协作产出。专家团模式填补这一空白——让多个 Expert 以目标为导向,自主分析、分工、执行、验证、汇报。
## Requirements
Source: `docs/brainstorms/2026-06-14-expert-team-mode-requirements.md`
Key requirements traced to origin R-IDs:
- Expert 定义与管理 (R1-R5)
- 专家团组建 (R6-R10)
- 协作计划 (R11-R15)
- 去中心化协作 (R16-R19)
- 并行执行与结果合并 (R20-R24)
- 用户干预 (R25-R28)
- 前端展示 (R29-R32)
- 触发与路由 (R33-R36)
## Key Technical Decisions
- **KTD1: Expert 是 Agent 的配置层** — ExpertConfig 继承 AgentConfig运行时通过 AgentPool 创建 ConfigDrivenAgent 实例。Expert 本身不是 Agent 实例,而是角色定义 + Skill 聚合 + 协作策略的配置单元。Expert 运行时包装器Expert 类)持有 ConfigDrivenAgent 引用并添加团队感知行为。(see origin: Key Decisions Updated)
- **KTD2: Plan-Execute 协作模式** — CollaborationPlan 定义阶段和里程碑粗粒度Expert 在阶段内自主决定具体步骤(细粒度),但必须通过里程碑检查点。这平衡了灵活性和可控性。
- **KTD3: HandoffTransport 抽象层** — 引入 HandoffTransport 协议两个实现RedisHandoffTransport提取现有 Redis pub/sub 逻辑)和 InProcessHandoffTransportasyncio.Queue用于同进程 Expert 团队。HandoffManager 根据上下文自动选择 Transport。
- **KTD4: 前端多角色对话流** — 扩展 IChatMessage 增加 expert_id/expert_name/expert_color 字段WebSocket 消息增加 team_* 事件类型。多个 Expert 的消息通过 expert_id 标签复用同一 WebSocket 通道,前端按 Expert 过滤展示。
- **KTD5: 降级策略** — 协作计划失败时先重试 1 次(调整分解策略),仍失败则回退到单 Agent 模式继续完成任务。
- **KTD6: 计划修改权限** — Lead Expert 和用户可直接修改 CollaborationPlan普通 Expert 可提议修改,需 Lead Expert 审批后生效。
- **KTD7: 上下文管理** — 采用摘要共享策略:长内容自动摘要后广播给全体 Expert原始内容存入 SharedWorkspace 按需获取。避免上下文窗口膨胀。
## High-Level Technical Design
### Expert Team 架构总览
```
┌─────────────────────────────────────────────────────┐
│ Frontend │
│ ExpertTeamView ── ExpertMessage ── PlanViz │
│ │ │ │ │
│ └────────────────┼───────────────┘ │
│ │ WebSocket (team_* events) │
└────────────────────────┼────────────────────────────┘
┌────────────────────────┼────────────────────────────┐
│ Server │
│ TeamSessionManager ── ExpertTeamRouter │
│ │ │
│ ▼ │
│ ┌──────────┐ manages ┌──────────────┐ │
│ │ExpertTeam│──────────▶│ Expert[] │ │
│ │ │ │ (wrappers) │ │
│ │ Plan │ └──────┬───────┘ │
│ │ Context │ │ creates │
│ └────┬─────┘ ▼ │
│ │ ┌──────────────────┐ │
│ │ │ ConfigDrivenAgent│ │
│ │ │ (AgentPool) │ │
│ │ └──────────────────┘ │
│ │ │
│ ┌────▼─────────────────────────────┐ │
│ │ TeamOrchestrator │ │
│ │ execute_plan / merge / retry │ │
│ └──────────────────────────────────┘ │
│ │ │ │
│ ▼ ▼ │
│ HandoffTransport SharedWorkspace │
│ (InProcess/Redis) (Redis/InMemory) │
└─────────────────────────────────────────────────────┘
```
### CollaborationPlan 执行流程
```
用户任务 → ExpertTeamRouter → 创建 ExpertTeam
Lead Expert 生成 CollaborationPlan
用户确认计划 ──否──▶ 修改计划
TeamOrchestrator.execute_plan()
┌────────────┼────────────┐
▼ ▼ ▼
Phase 1 Phase 2 Phase 3
(串行) (子任务并行) (竞标并行)
│ │ │
▼ ▼ ▼
里程碑检查 里程碑检查 里程碑检查
│ │ │
└────────────┼────────────┘
Lead Expert 汇总最终结果
ExpertTeam 解散,临时 Expert 回收
```
### Expert 间协作消息流
```
Expert A ──send_message()──▶ TeamChannel ──broadcast──▶ Expert B, C, D
Expert A ──request_assist()──▶ InProcessHandoff ──▶ Expert B
Expert A ──propose_modification()──▶ Lead Expert ──approve──▶ Plan Update ──broadcast──▶ All Experts
User ──intervene()──▶ TeamChannel ──broadcast──▶ All Experts + Lead re-plans
```
---
## Implementation Units
### U1. ExpertConfig & ExpertTemplate & Registry
**Goal:** 建立 Expert 的数据模型层——ExpertConfig 配置、ExpertTemplate 模板、ExpertTemplateRegistry 注册中心。
**Requirements:** R1, R2, R3, R4
**Dependencies:** None
**Files:**
- `src/agentkit/experts/__init__.py` (create)
- `src/agentkit/experts/config.py` (create)
- `src/agentkit/experts/registry.py` (create)
- `tests/unit/experts/__init__.py` (create)
- `tests/unit/experts/test_config.py` (create)
- `tests/unit/experts/test_registry.py` (create)
**Approach:**
- `ExpertConfig` 继承 `AgentConfig`,新增字段:`persona`(人格描述)、`thinking_style`(思维方式)、`collaboration_strategy`(协作策略偏好)、`bound_skills`(绑定的 Skill 名称列表)、`avatar`(头像标识)、`color`(颜色标识)、`is_lead`(是否为 Lead Expert
- `ExpertTemplate``ExpertConfig` 的可复用预设包装,包含 `name`、`config`、`is_builtin`、`description` 字段
- `ExpertTemplateRegistry` 提供 `register(template)`、`get(name)`、`list()`、`search(query)` 方法,内存字典存储,支持从 YAML 目录批量加载
- 遵循 `SkillConfig` 继承 `AgentConfig` 的模式see `src/agentkit/skills/base.py`
**Patterns to follow:** `SkillConfig` extending `AgentConfig` in `src/agentkit/skills/base.py`; `SkillRegistry` pattern in `src/agentkit/skills/registry.py`
**Test scenarios:**
- Happy path: 创建 ExpertConfig 并验证所有字段
- Happy path: ExpertConfig 继承 AgentConfig 的基础字段
- Happy path: ExpertTemplate 注册和查询
- Happy path: ExpertTemplateRegistry 从 YAML 目录加载模板
- Edge case: bound_skills 为空列表时默认行为
- Edge case: search 查询无匹配结果返回空列表
- Error path: 注册同名 ExpertTemplate 覆盖旧模板
**Verification:** ExpertConfig 可实例化并序列化ExpertTemplateRegistry 可注册、查询、搜索模板
---
### U2. CollaborationPlan Data Model
**Goal:** 定义协作计划的数据结构——阶段、角色分工、依赖关系、并行类型、合并策略、里程碑。
**Requirements:** R11, R12, R13
**Dependencies:** U1
**Files:**
- `src/agentkit/experts/plan.py` (create)
- `tests/unit/experts/test_plan.py` (create)
**Approach:**
- `CollaborationPlan` 包含 `phases`PlanPhase 列表)、`variables`(共享变量)、`status`(计划状态)
- `PlanPhase` 包含:`id`、`name`、`assigned_expert`Expert 名称)、`task_description`、`depends_on`(依赖的 Phase ID 列表)、`parallel_type`ParallelType 枚举)、`merge_strategy`MergeStrategy 枚举,仅竞标式并行时使用)、`milestone`(里程碑检查点描述)、`status`PhaseStatus 枚举)
- `ParallelType` 枚举SERIAL、SUBTASK_PARALLEL、COMPETITIVE_PARALLEL
- `MergeStrategy` 枚举BEST、VOTE、FUSION
- `PhaseStatus` 枚举PENDING、IN_PROGRESS、COMPLETED、FAILED
- `PlanStatus` 枚举DRAFT、CONFIRMED、EXECUTING、COMPLETED、FAILED、FALLBACK
- 提供序列化/反序列化方法to_dict/from_dict供 SharedWorkspace 存储
**Patterns to follow:** `PipelineStage`/`Pipeline` in `src/agentkit/orchestrator/pipeline_schema.py`
**Test scenarios:**
- Happy path: 创建 CollaborationPlan 并添加 phases
- Happy path: 串行 phase 的依赖关系正确
- Happy path: 子任务级并行 phase 标注
- Happy path: 竞标式并行 phase 带合并策略
- Edge case: 依赖关系形成 DAG无环
- Edge case: 竞标式并行 phase 未指定 merge_strategy 时默认 BEST
- Error path: 依赖关系有环时验证失败
- Integration: to_dict/from_dict 往返序列化
**Verification:** CollaborationPlan 可构建、验证、序列化;依赖环检测正确
---
### U3. HandoffTransport Abstraction
**Goal:** 抽象 Handoff 传输层,支持 Redis 和进程内两种模式,使 Expert 间交接不依赖 Redis。
**Requirements:** R16
**Dependencies:** None
**Files:**
- `src/agentkit/core/handoff_transport.py` (create)
- `tests/unit/core/test_handoff_transport.py` (create)
**Approach:**
- 定义 `HandoffTransport` 协议Protocol`send(channel, message)`、`listen(channel) -> AsyncIterator`、`register_handler(channel, handler)`
- `RedisHandoffTransport`:提取 `BaseAgent.handoff()` 中的 Redis pub/sub 逻辑,封装为独立类
- `InProcessHandoffTransport`:基于 `asyncio.Queue` 的进程内传输,每个 channel 对应一个 Queue支持多消费者广播
- `HandoffManager` 重构:接受 `HandoffTransport` 注入,`send_handoff`/`listen_for_handoffs`/`register_handler` 委托给 transport
- 向后兼容:`HandoffManager()` 无参构造时自动创建 `RedisHandoffTransport`
**Patterns to follow:** `SharedWorkspace` 的双模式模式Redis + 内存降级in `src/agentkit/core/shared_workspace.py`
**Test scenarios:**
- Happy path: InProcessHandoffTransport 发送和接收消息
- Happy path: InProcessHandoffTransport 多消费者广播
- Happy path: HandoffManager 使用 InProcessHandoffTransport
- Edge case: InProcessHandoffTransport 队列为空时 listen 阻塞等待
- Error path: 发送到不存在的 channel 不抛异常(消息丢弃)
- Integration: HandoffManager 向后兼容(无参构造使用 Redis
**Verification:** InProcessHandoffTransport 可在同进程内传递消息HandoffManager 向后兼容
---
### U4. Expert Runtime Wrapper
**Goal:** 实现 Expert 运行时包装器——ExpertConfig → AgentPool 创建 ConfigDrivenAgent添加团队感知行为。
**Requirements:** R1, R2, R5, R16, R17, R19
**Dependencies:** U1, U3
**Files:**
- `src/agentkit/experts/expert.py` (create)
- `tests/unit/experts/test_expert.py` (create)
**Approach:**
- `Expert` 类持有 `ExpertConfig``ConfigDrivenAgent` 引用
- `Expert.create(config, pool)` → 调用 `AgentPool.create_agent()` 创建 ConfigDrivenAgent注入团队上下文到 system prompt角色描述、其他 Expert 的角色摘要)
- `Expert.send_message(channel, content)` → 通过 TeamChannel 广播消息给全体 Expert摘要共享原始内容存 SharedWorkspace
- `Expert.request_assist(target_expert, task)` → 通过 InProcessHandoff 向目标 Expert 交接任务
- `Expert.propose_plan_modification(plan_id, modification)` → 提交修改提议给 Lead Expert
- `Expert.get_capabilities_summary()` → 返回角色描述 + 绑定 Skill 列表,供其他 Expert 了解
- `Expert.destroy()` → 调用 `AgentPool.remove_agent()` 清理,产出保留在 SharedWorkspace
**Patterns to follow:** `ConfigDrivenAgent` lifecycle in `src/agentkit/core/config_driven.py`; `BaseAgent.handoff()` in `src/agentkit/core/base.py`
**Test scenarios:**
- Happy path: Expert.create 从 ExpertConfig 创建 ConfigDrivenAgent
- Happy path: Expert.send_message 广播到 TeamChannel
- Happy path: Expert.request_assist 通过 Handoff 交接任务
- Happy path: Expert.get_capabilities_summary 返回角色摘要
- Edge case: Expert 绑定多个 Skill 时全部注入 Agent
- Error path: Expert.create 时 AgentPool 中同名 Agent 已存在
- Integration: Expert 销毁后 ConfigDrivenAgent 被移除
**Verification:** Expert 可创建、发送消息、请求协助、销毁
---
### U5. ExpertTeam Container
**Goal:** 实现 ExpertTeam 容器——管理 Expert 生命周期、共享上下文、协作计划、团队状态。
**Requirements:** R4, R6, R8, R9, R10, R14, R15, R25, R27, R36
**Dependencies:** U1, U2, U4
**Files:**
- `src/agentkit/experts/team.py` (create)
- `tests/unit/experts/test_team.py` (create)
**Approach:**
- `ExpertTeam` 管理一组 Expert 实例,持有 `CollaborationPlan`、`SharedWorkspace` 引用、`TeamChannel`
- 团队生命周期FORMING → PLANNING → EXECUTING → SYNTHESIZING → COMPLETED
- `create_team(lead_config, member_configs)` → 创建 Lead Expert + 成员 Expert设置 InProcessHandoff
- `add_expert(config_or_template)` → 动态添加 ExpertR27
- `remove_expert(name)` → 动态移除 ExpertR27
- `update_plan(plan)` → Lead Expert 或用户修改计划R14广播变更给受影响 ExpertR15
- `get_shared_context()` → 返回团队共享上下文(通过 SharedWorkspace
- `broadcast_user_message(content)` → 用户干预消息广播给全体 ExpertR25
- `dissolve()` → 解散团队,临时 Expert 回收产出保留R36
- `generate_plan(task)` → Lead Expert 生成 CollaborationPlan混合模式核心角色从模板匹配辅助角色动态生成
**Patterns to follow:** `AgentPool` lifecycle management in `src/agentkit/core/agent_pool.py`
**Test scenarios:**
- Happy path: 创建 ExpertTeam 并设置 Lead Expert
- Happy path: 添加和移除 Expert
- Happy path: update_plan 广播变更给受影响 Expert
- Happy path: broadcast_user_message 对全体 Expert 可见
- Happy path: dissolve 回收临时 Expert
- Edge case: 移除 Lead Expert 时自动指定新 Lead
- Edge case: dissolve 时临时 Expert 产出保留在 SharedWorkspace
- Error path: 向已解散的 ExpertTeam 添加 Expert 抛异常
- Integration: generate_plan 混合模式(模板 + 动态生成)
**Verification:** ExpertTeam 可创建、管理 Expert、更新计划、广播消息、解散
---
### U6. TeamOrchestrator
**Goal:** 实现团队编排引擎——驱动 CollaborationPlan 执行、并行策略、结果合并、重试与降级。
**Requirements:** R12, R13, R18, R20, R21, R22, R23, R24
**Dependencies:** U2, U4, U5
**Files:**
- `src/agentkit/experts/orchestrator.py` (create)
- `tests/unit/experts/test_team_orchestrator.py` (create)
**Approach:**
- `TeamOrchestrator` 持有 `ExpertTeam` 引用,驱动 `CollaborationPlan` 执行
- `execute_plan(plan)` → 按 phase 依赖关系拓扑排序,逐层执行
- 串行 phase直接执行完成后检查里程碑
- 子任务级并行 phase`asyncio.gather` 并行执行,结果由 Lead Expert 汇总R20
- 竞标式并行 phase`asyncio.gather` 并行执行,结果按 MergeStrategy 处理R21-R24
- BESTLead Expert 选择最佳结果
- VOTE所有 Expert 投票,平局时 Lead Expert 仲裁R23
- FUSIONLead Expert 融合多个结果
- 里程碑检查phase 完成后 Expert 必须通过检查点才能进入下一阶段
- 失败处理:重试 1 次(调整分解策略),仍失败则回退单 AgentKTD5
- 执行事件:每个 phase 状态变更、并行结果合并都通过 TeamChannel 广播
**Patterns to follow:** `PipelineEngine._topological_group()` + `asyncio.gather` in `src/agentkit/orchestrator/pipeline_engine.py`; adversarial loop (Worker-Verifier) pattern
**Test scenarios:**
- Happy path: 串行 phase 依次执行
- Happy path: 子任务级并行 phase 并行执行后汇总
- Happy path: 竞标式并行 BEST 策略
- Happy path: 竞标式并行 VOTE 策略(含平局仲裁)
- Happy path: 竞标式并行 FUSION 策略
- Happy path: 里程碑检查通过后进入下一阶段
- Edge case: 并行 phase 部分失败时的处理
- Error path: phase 失败后重试 1 次
- Error path: 重试仍失败回退单 Agent
- Integration: 完整计划执行(串行+并行混合)
**Verification:** TeamOrchestrator 可执行计划、处理并行、合并结果、重试降级
---
### U7. Expert Team Routing
**Goal:** 扩展路由系统支持专家团模式——@team 触发、复杂度评估升级、团队路由。
**Requirements:** R7, R33, R34, R35
**Dependencies:** U5, U6
**Files:**
- `src/agentkit/experts/router.py` (create)
- `src/agentkit/chat/skill_routing.py` (modify)
- `tests/unit/experts/test_router.py` (create)
**Approach:**
- 扩展 `ExecutionMode` 枚举新增 `TEAM_COLLAB`
- `ExpertTeamRouter` 解析用户输入:
- `@team` 前缀 → 触发专家团模式R34
- `@team:analyst,strategist` → 指定专家团成员R35
- 无前缀 → Lead Expert 评估复杂度后建议升级R7, R33
- 修改 `CostAwareRouter.route()`:当 `execution_mode == TEAM_COLLAB` 时,委托给 `ExpertTeamRouter`
- `ExpertTeamRouter.resolve()` → 返回 `ExpertTeamRoutingResult`(包含 team 配置、plan、execution_mode
- 复杂度评估:在 `quick_classify` 返回高复杂度(>0.7)时,附加 team_suggestion 标记
**Patterns to follow:** `CostAwareRouter` three-layer routing in `src/agentkit/chat/skill_routing.py`
**Test scenarios:**
- Happy path: @team 前缀触发专家团模式
- Happy path: @team:analyst,strategist 指定专家团成员
- Happy path: 高复杂度任务建议升级为专家团
- Happy path: 低复杂度任务不触发专家团
- Edge case: @team 后无成员描述时自动组建
- Edge case: 指定的 ExpertTemplate 不存在时回退到动态生成
- Integration: CostAwareRouter 集成 TEAM_COLLAB 模式
**Verification:** @team 触发、复杂度升级、指定成员路由均正确工作
---
### U8. Frontend Data Model & WebSocket Protocol
**Goal:** 扩展前端数据模型和 WebSocket 协议支持专家团消息流。
**Requirements:** R29, R31, R32
**Dependencies:** U6
**Files:**
- `src/agentkit/server/frontend/src/types/chat.ts` (modify)
- `src/agentkit/server/routes/portal.py` (modify)
- `src/agentkit/server/routes/chat.py` (modify)
- `src/agentkit/server/frontend/src/stores/chat.ts` (modify)
**Approach:**
- 扩展 `IChatMessage` 接口:新增 `expert_id?: string`、`expert_name?: string`、`expert_color?: string`、`message_type?: 'chat' | 'handoff' | 'assist_request' | 'plan_update' | 'milestone'`
- 新增 WebSocket 事件类型:
- `team_formed`:专家团组建完成,包含 Expert 列表和 Plan
- `expert_step`Expert 执行步骤(带 expert_id 标签)
- `expert_result`Expert 完成子任务
- `plan_update`:协作计划变更
- `team_synthesis`Lead Expert 汇总最终结果
- `team_dissolved`:专家团解散
- 服务端:新增 `TeamSessionManager` 管理 ExpertTeam 实例,与 `SessionManager` 协同
- `chat.ts` store 扩展:处理 team_* 事件,维护 team 状态
**Patterns to follow:** Existing WebSocket event handling in `src/agentkit/server/routes/chat.py`; `IChatMessage` interface in `src/agentkit/server/frontend/src/types/chat.ts`
**Test scenarios:**
- Happy path: team_formed 事件正确解析 Expert 列表
- Happy path: expert_step 事件带 expert_id 标签
- Happy path: plan_update 事件触发前端状态更新
- Edge case: 非专家团消息不受影响(向后兼容)
- Integration: 完整 team 事件流formed → step → result → synthesis → dissolved
**Verification:** 前端可接收和解析所有 team_* 事件;非专家团消息不受影响
---
### U9. ExpertTeam UI Components
**Goal:** 实现专家团前端组件——多角色对话流、计划可视化、Expert 过滤。
**Requirements:** R29, R30, R31, R32
**Dependencies:** U8
**Files:**
- `src/agentkit/server/frontend/src/components/chat/ExpertTeamView.vue` (create)
- `src/agentkit/server/frontend/src/components/chat/ExpertMessage.vue` (create)
- `src/agentkit/server/frontend/src/components/chat/PlanVisualization.vue` (create)
- `src/agentkit/server/frontend/src/stores/team.ts` (create)
**Approach:**
- `ExpertTeamView.vue`:专家团状态栏,显示活跃 Expert 列表(头像+颜色+状态),计划可视化切换按钮
- `ExpertMessage.vue`:扩展 ChatMessage添加 Expert 头像、颜色标识、角色 badgehandoff/assist_request 消息类型用特殊样式展示
- `PlanVisualization.vue`:协作计划时间线/DAG 可视化,显示 phase 状态、Expert 分工、依赖关系;用户可展开查看详情
- `team.ts` store管理 team 状态active experts, plan, phase progress提供按 Expert 过滤消息的 computed
- ChatView 集成:当 conversation 进入专家团模式时,切换到 ExpertTeamView 布局
**Patterns to follow:** `ChatMessage.vue` component structure; `MentionDropdown.vue` for dropdown patterns; `chat.ts` store for state management
**Test scenarios:**
- Happy path: ExpertMessage 正确显示 Expert 头像和颜色
- Happy path: PlanVisualization 显示协作计划时间线
- Happy path: 按 Expert 过滤消息
- Happy path: handoff 消息特殊样式展示
- Edge case: Expert 被移除后消息保留但标记为已退出
- Edge case: 并行执行时多个 Expert 消息同时更新
**Verification:** 专家团模式下前端正确显示多角色对话流和计划可视化
---
### U10. Integration Tests
**Goal:** 端到端集成测试——验证专家团完整流程。
**Requirements:** All R-IDs
**Dependencies:** U1-U9
**Files:**
- `tests/integration/test_expert_team.py` (create)
**Approach:**
- 测试覆盖所有 Key FlowsF1-F6和 Acceptance ExamplesAE1-AE5
- 使用 mock LLM 和 mock tools验证编排逻辑而非 LLM 输出质量
- 测试场景:
1. 手动组建专家团 + 子任务并行F1, AE1
2. 自动组建专家团 + 竞标并行F2, AE2
3. 去中心化协作执行F3, AE4
4. 用户干预协作F4, AE3
5. 竞标式并行执行 + 投票仲裁F5
6. 专家团解散 + 产出保留F6, AE5
7. 降级策略:重试 + 回退单 Agent
8. 动态增减 Expert
**Patterns to follow:** `tests/integration/test_gap_closure.py` integration test patterns
**Test scenarios:**
- Covers F1. 手动组建专家团
- Covers F2. 自动组建专家团
- Covers F3. 去中心化协作执行
- Covers F4. 用户干预协作
- Covers F5. 竞标式并行执行
- Covers F6. 专家团解散
- Covers AE1. 手动组建 + 子任务并行
- Covers AE2. 自动组建 + 竞标并行
- Covers AE3. 用户干预调整方向
- Covers AE4. Expert 间直接协作
- Covers AE5. 动态增减 Expert
**Verification:** 所有 Key Flows 和 Acceptance Examples 通过集成测试
---
## Scope Boundaries
**In scope:**
- Expert/ExpertTeam/CollaborationPlan 核心抽象
- HandoffTransport 进程内传输
- TeamOrchestrator 编排引擎(串行 + 两种并行 + 三种合并策略)
- ExpertTeamRouter 路由扩展
- 前端多角色对话流和计划可视化
- 端到端集成测试
**Deferred to follow-up work:**
- Expert 间的学习与进化机制
- 跨会话的 Expert 持久化和记忆共享
- Expert 市场和共享模板库
- 专家团的 A/B 测试和效果评估
- ExpertTemplate YAML 文件的标准模板集(本计划只实现框架,不提供大量预置模板)
- 计划可视化的高级交互(拖拽调整、实时编辑)
- 竞标式并行的更复杂评判策略(加权投票、多轮评审)
**Outside this product's identity:**
- 通用工作流引擎(已有 PipelineEngine
- 人工审核节点(已有 Workflow approval
- 实时音视频协作
## Risks & Dependencies
| Risk | Impact | Mitigation |
|------|--------|------------|
| LLM 生成的 CollaborationPlan 质量不稳定 | 高:劣质计划导致协作效率低 | Plan 验证逻辑(依赖环检测、必填字段检查);用户确认环节;重试降级策略 |
| 去中心化协作可能陷入循环讨论 | 中Expert 反复交互不收敛 | 里程碑检查点强制推进最大交互轮次限制Lead Expert 可强制推进 |
| 多 Expert 并行时上下文窗口膨胀 | 中LLM 调用成本增加、可能超限 | 摘要共享策略KTD7SharedWorkspace 按需获取原始内容 |
| 前端多路消息流渲染性能 | 低:大量并行消息可能导致 UI 卡顿 | 消息批量更新;虚拟滚动;按 Expert 过滤减少渲染量 |
| HandoffTransport 重构影响现有 Handoff | 中:可能破坏现有 Agent 间交接 | 向后兼容设计(无参构造使用 Redis充分单元测试 |
**Dependencies:**
- 依赖现有 `AgentPool` 管理 Agent 实例
- 依赖现有 `SharedWorkspace` 支持共享上下文
- 依赖现有 `CostAwareRouter` 三层路由架构
- 依赖前端 WebSocket 基础设施
- 依赖 LLM 能生成质量合格的 CollaborationPlan
## Open Questions
- ExpertTemplate YAML 文件的标准目录位置(建议 `config/experts/`,待确认)
- 竞标式并行中"融合"策略的具体实现——是 LLM 融合还是规则融合(建议 LLM 融合,待确认)
- 前端计划可视化组件的选型——自研还是使用第三方库(建议自研轻量时间线,待确认)
## Sources & Research
- `src/agentkit/core/base.py` — BaseAgent 生命周期、Handoff、Progress 上报
- `src/agentkit/core/config_driven.py` — ConfigDrivenAgent、AgentConfig、执行模式
- `src/agentkit/skills/base.py` — SkillConfig 继承 AgentConfig 的模式
- `src/agentkit/core/agent_pool.py` — AgentPool 生命周期管理
- `src/agentkit/core/shared_workspace.py` — SharedWorkspace 双模式Redis + 内存)
- `src/agentkit/core/orchestrator.py` — Orchestrator-Worker 编排模式
- `src/agentkit/orchestrator/pipeline_engine.py` — DAG 拓扑并行、Saga 补偿
- `src/agentkit/orchestrator/handoff.py` — Redis Pub/Sub Handoff
- `src/agentkit/chat/skill_routing.py` — CostAwareRouter 三层路由
- `src/agentkit/server/routes/chat.py` — Chat WebSocket 消息协议
- `src/agentkit/server/frontend/src/types/chat.ts` — IChatMessage 接口
- `src/agentkit/server/frontend/src/stores/chat.ts` — Chat Pinia Store