Back to Aionui

Agent → Team 引导流程设计

docs/architecture/agent-team-guide-flow.md

1.9.2525.7 KB
Original Source

Agent → Team 引导流程设计

全景流程图

┌─────────────────────────────────────────────────────────────────────────────┐
│                           USER  (普通 Agent 对话)                           │
└─────────────────┬───────────────────────────────────────────────────────────┘
                  │
                  │ ① 发送消息:"帮我做一个完整的电商网站,
                  │    包含前端、后端、数据库设计和部署方案"
                  ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│                         SOLO AGENT  (ACP Session)                           │
│                                                                             │
│  ┌────────────────────────────────────────────────────────────────────┐     │
│  │ System Prompt (注入的引导规则)                                      │     │
│  │                                                                    │     │
│  │  "你是 Aion 智能助手。当用户需求涉及多个专业领域(前端/后端/架构/   │     │
│  │   测试/设计等),且并行协作能显著提升效率时,应建议用户启用团队模式。 │     │
│  │   判断标准:                                                       │     │
│  │   - 任务可拆分为 2+ 独立子领域                                     │     │
│  │   - 子任务间存在并行空间                                           │     │
│  │   - 单 Agent 完成耗时远大于多 Agent 协作                           │     │
│  │   建议时需说明:为什么推荐、团队能怎么分工。                        │     │
│  │   用户同意后,调用 aion_create_team 工具。"                        │     │
│  └────────────────────────────────────────────────────────────────────┘     │
│                                                                             │
│  ② Agent 分析需求 → 判断:涉及前端+后端+数据库+DevOps,适合 Team       │
│                                                                             │
└─────────────────┬───────────────────────────────────────────────────────────┘
                  │
                  │ ③ 回复用户(自然语言建议)
                  ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│  AGENT → USER:                                                              │
│                                                                             │
│  "我分析了你的需求,这是一个涉及多个领域的复杂项目:                        │
│   - 前端工程(React/UI)                                                    │
│   - 后端服务(API/业务逻辑)                                                │
│   - 数据库设计(Schema/索引)                                               │
│   - 部署方案(CI/CD/基础设施)                                              │
│                                                                             │
│   我认为组建团队来完成会更高效——多个专业 Agent 可以并行工作。               │
│   需要我开启团队模式来完成这个任务吗?"                                     │
└─────────────────┬───────────────────────────────────────────────────────────┘
                  │
                  │ ④ 用户回复:"好的,开启团队模式"
                  ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│                    AGENT 调用 MCP Tool: aion_create_team                     │
│                                                                             │
│  Tool Input:                                                                │
│  {                                                                          │
│    "summary": "构建完整电商网站,包含:                                      │
│                1) React 前端(商品展示/购物车/结算)                          │
│                2) Node.js 后端(RESTful API/认证/支付)                       │
│                3) PostgreSQL 数据库设计(用户/商品/订单)                     │
│                4) Docker + CI/CD 部署方案",                                  │
│    "name": "电商网站全栈开发"    ← 可选,Agent 自动起名                     │
│  }                                                                          │
└─────────────────┬───────────────────────────────────────────────────────────┘
                  │
                  ▼
┌═════════════════════════════════════════════════════════════════════════════┐
║                     MCP SERVER  (主进程内运行)                               ║
║                                                                             ║
║  ┌─── aion_create_team handler ───────────────────────────────────────┐     ║
║  │                                                                    │     ║
║  │  1. 接收 summary + name                                           │     ║
║  │                                                                    │     ║
║  │  2. 构建 createTeam 参数                                          │     ║
║  │     {                                                              │     ║
║  │       userId: currentUserId,                                       │     ║
║  │       name: "电商网站全栈开发",                                    │     ║
║  │       workspace: "",              // 自动分配                      │     ║
║  │       workspaceMode: "shared",                                     │     ║
║  │       agents: [{                                                   │     ║
║  │         slotId: "slot-xxx",                                        │     ║
║  │         role: "lead",                                              │     ║
║  │         agentType: "acp",         // 默认 lead 类型               │     ║
║  │         agentName: "Team Lead",                                    │     ║
║  │         ...                                                        │     ║
║  │       }]                                                           │     ║
║  │     }                                                              │     ║
║  │                                                                    │     ║
║  │  3. 调用 TeamSessionService.createTeam(params)                    │     ║
║  │     → 生成 teamId (UUID)                                          │     ║
║  │     → 创建 lead agent 的 conversation                             │     ║
║  │     → 持久化到 SQLite                                             │     ║
║  │                                                                    │     ║
║  │  4. 调用 TeamSessionService.getOrStartSession(teamId)             │     ║
║  │     → 创建 TeamSession                                            │     ║
║  │     → 启动 Team MCP Server                                        │     ║
║  │     → 注入 MCP config 到 agent conversations                     │     ║
║  │                                                                    │     ║
║  │  5. 向 lead agent 发送首条消息(用户需求摘要)                     │     ║
║  │     ipcBridge.team.sendMessage.invoke({                            │     ║
║  │       teamId,                                                      │     ║
║  │       content: summary    // 需求摘要作为 lead 的第一条指令        │     ║
║  │     })                                                             │     ║
║  │                                                                    │     ║
║  │  6. 返回结果                                                       │     ║
║  │     {                                                              │     ║
║  │       teamId: "abc-123-def",                                       │     ║
║  │       name: "电商网站全栈开发",                                    │     ║
║  │       route: "/team/abc-123-def",                                  │     ║
║  │       leadAgent: "Team Lead",                                      │     ║
║  │       status: "session_started"                                    │     ║
║  │     }                                                              │     ║
║  └────────────────────────────────────────────────────────────────────┘     ║
║                                                                             ║
╚═════════════════════════════════════════════════════════════════════════════╝
                  │
                  │ ⑤ MCP 返回 Team 信息
                  ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│                         SOLO AGENT  (收到 MCP 结果)                         │
│                                                                             │
│  Agent 知道 Team 已创建,需要引导用户跳转                                    │
│                                                                             │
│  ⑥ 调用 MCP Tool: aion_navigate                                            │
│     { "route": "/team/abc-123-def" }                                        │
│                                                                             │
│  同时回复用户:                                                              │
│  "已为你组建团队「电商网站全栈开发」,正在跳转... 🚀"                        │
│                                                                             │
└─────────────────┬───────────────────────────────────────────────────────────┘
                  │
                  ▼
┌═════════════════════════════════════════════════════════════════════════════┐
║                  MCP SERVER: aion_navigate handler                          ║
║                                                                             ║
║  1. 校验 route 合法性(白名单:/team/:id, /conversation/:id, ...)         ║
║                                                                             ║
║  2. 通过 IPC 通知 Renderer 跳转                                            ║
║     ipcBridge.deepLink.received.emit({                                      ║
║       action: "navigate",                                                   ║
║       params: { route: "/team/abc-123-def" }                                ║
║     })                                                                      ║
║                                                                             ║
║  3. 返回 { success: true }                                                  ║
╚═════════════════════════════════════════════════════════════════════════════╝
                  │
                  │ ⑦ IPC emit → Renderer
                  ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│                           RENDERER  (前端)                                   │
│                                                                             │
│  useDeepLink() hook 监听到 deepLink.received 事件                           │
│  action === "navigate" → navigate("/team/abc-123-def")                      │
│                                                                             │
│  ┌────────────────────────────────────────────────────────────────────┐     │
│  │  React Router 匹配 /team/:id                                      │     │
│  │  → 加载 TeamIndex (lazy)                                          │     │
│  │  → fetch team via ipcBridge.team.get                              │     │
│  │  → 渲染 TeamPage                                                  │     │
│  └────────────────────────────────────────────────────────────────────┘     │
│                                                                             │
│  ┌────────────────────────────────────────────────────────────────────┐     │
│  │  useTeamSession(team) hook                                         │     │
│  │  → session 已在 MCP handler 中预启动,直接复用                     │     │
│  │  → 订阅 agentStatusChanged / agentSpawned / agentRemoved 事件     │     │
│  └────────────────────────────────────────────────────────────────────┘     │
│                                                                             │
└─────────────────┬───────────────────────────────────────────────────────────┘
                  │
                  │ ⑧ 页面渲染完成
                  ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│                        TEAM PAGE  (用户看到的)                               │
│                                                                             │
│  ┌──────────────────────────────────────────────────────────────┐           │
│  │                                                              │           │
│  │  📋 电商网站全栈开发                                         │           │
│  │                                                              │           │
│  │  ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐           │           │
│  │  │ Lead ★  │ │Frontend │ │Backend  │ │  DBA    │  ← 按需   │           │
│  │  │(工作中) │ │ (待派发)│ │ (待派发)│ │ (待派发)│    spawn   │           │
│  │  └─────────┘ └─────────┘ └─────────┘ └─────────┘           │           │
│  │                                                              │           │
│  │  Lead Agent:                                                 │           │
│  │  "收到任务,我来拆分并分配:                                  │           │
│  │   1. @Frontend → React 商品展示/购物车/结算页面               │           │
│  │   2. @Backend  → Node.js API 服务/认证/支付集成               │           │
│  │   3. @DBA      → PostgreSQL Schema 设计                      │           │
│  │   让我先创建团队成员..."                                      │           │
│  │                                                              │           │
│  └──────────────────────────────────────────────────────────────┘           │
│                                                                             │
│  ✅ 用户看到 Team 已在工作,无需手动操作                                     │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

时序图

 User          Renderer        Solo Agent       MCP Server       Main Process       Team Lead
  │               │                │                │                 │                  │
  │──① 发消息────▶│───── IPC ─────▶│                │                 │                  │
  │               │                │                │                 │                  │
  │               │                │─② 分析需求──┐  │                 │                  │
  │               │                │  判断适合Team│  │                 │                  │
  │               │                │◀────────────┘  │                 │                  │
  │               │                │                │                 │                  │
  │◀──③ 建议────── │◀──────────────│                │                 │                  │
  │  "建议开启                     │                │                 │                  │
  │   团队模式"                    │                │                 │                  │
  │               │                │                │                 │                  │
  │──④ "好的"───▶│───── IPC ─────▶│                │                 │                  │
  │               │                │                │                 │                  │
  │               │                │──⑤ call ──────▶│                 │                  │
  │               │                │ aion_create_   │── createTeam ──▶│                  │
  │               │                │ team           │                 │─ 写入 DB         │
  │               │                │                │                 │─ 创建 Session    │
  │               │                │                │                 │─ 启动 MCP Server │
  │               │                │                │◀── team info ──│                  │
  │               │                │                │                 │                  │
  │               │                │                │── sendMessage ─▶│────── IPC ──────▶│
  │               │                │                │   (需求摘要)    │                  │─ 开始
  │               │                │◀─⑥ return ────│                 │                  │  工作
  │               │                │  {teamId,      │                 │                  │
  │               │                │   route}       │                 │                  │
  │               │                │                │                 │                  │
  │               │                │──⑦ call ──────▶│                 │                  │
  │◀── "正在跳转" │               │ aion_navigate  │── deepLink ────▶│                  │
  │               │                │                │   emit          │                  │
  │               │◀───────────────│────────────────│── IPC emit ────│                  │
  │               │                │                │                 │                  │
  │               │─⑧ navigate ──┐│                │                 │                  │
  │               │  /team/:id   ││                │                 │                  │
  │               │◀─────────────┘│                │                 │                  │
  │               │                │                │                 │                  │
  │  ┌────────────▼────────────┐  │                │                 │                  │
  │  │  ⑨ Team Page 渲染       │  │                │                 │    ┌─────────────▼┐
  │  │  Lead Agent 已在工作     │  │                │                 │    │ 拆分任务      │
  │  │  用户看到实时进展        │  │                │                 │    │ spawn 成员    │
  │  └─────────────────────────┘  │                │                 │    │ 分配工作      │
  │               │                │                │                 │    └───────────────┘

需要新增的模块清单

#模块位置职责
1Team Guide Promptsrc/process/resources/prompts/teamGuidePrompt.ts注入 solo agent 的团队引导规则
2Aion MCP Serversrc/process/services/aionMcpServer.ts主进程内 MCP,提供 aion_create_team + aion_navigate
3MCP 注册src/process/agent/acp/mcpSessionConfig.ts将 Aion MCP 注册到 solo agent session
4DeepLink 扩展src/renderer/hooks/system/useDeepLink.ts处理 navigate action,支持任意路由跳转

边界与约束

  • Agent 不自动创建 Team:必须先征得用户同意
  • 路由白名单aion_navigate 只允许跳转到已知路由(/team/:id, /conversation/:id
  • 摘要质量:Agent 的 summary 直接决定 Lead Agent 的理解质量,prompt 需要引导生成结构化摘要
  • 回退:用户拒绝团队模式时,Agent 继续以 solo 模式正常完成任务