agent-Specialization/docs/multi_agent_mode/06_implementation_plan.md

7.5 KiB
Raw Blame History

多智能体模式实现计划

实现顺序不作为严格 phase而是按依赖关系自然推进。
核心原则:完全隔离、复制改造、底层复用。


1. 目录与文件规划

1.1 后端代码

modules/multi_agent/
├── __init__.py
├── terminal.py                  # MultiAgentTerminal
├── manager.py                   # 多智能体会话与全局状态管理
├── agent_store.py               # 角色配置加载与保存
├── conversation_store.py        # 多智能体会话存储
├── message_router.py            # 消息路由与待处理队列
├── sub_agent_task.py            # MultiAgentSubAgentTask
├── sub_agent_manager.py         # MultiAgentSubAgentManager
├── prompts.py                   # prompt 模板
└── tools/
    ├── __init__.py
    ├── master_tools.py          # Team Leader 工具定义
    ├── agent_tools.py           # 子智能体工具定义
    └── tool_handlers.py         # 工具处理函数

1.2 前端代码

static/src/views/MultiAgentView.vue
static/src/components/multi-agent/
├── ChatPanel.vue
├── AgentList.vue
├── MessageBubble.vue
└── CreateAgentDialog.vue

1.3 设计文档

docs/multi_agent_mode/
├── 01_overview.md
├── 02_message_protocol.md
├── 03_tool_definitions.md
├── 04_message_routing.md
├── 05_data_model.md
├── 06_implementation_plan.md
└── 07_existing_code_analysis.md

1.4 数据目录

~/.astrion/astrion/host/mutiagents/
├── agents/
├── conversations/
└── state.json

2. 实现步骤

Step 1基础设施

  1. 创建 modules/multi_agent/
  2. 创建 docs/multi_agent_mode/ 目录(已完成)
  3. 创建 ~/.astrion/astrion/host/mutiagents/ 数据目录
  4. 预置 4 个角色文件到 agents/

Step 2角色配置

  1. 实现 agent_store.py

    • 加载角色 Frontmatter
    • 保存自定义角色
    • 列出所有角色
    • 构建完整 prompt基础 prompt + 自定义 prompt
  2. 预置角色:

    • ui-operator
    • full-stack-engineer
    • code-reviewer
    • researcher

Step 3子智能体改造

  1. 实现 MultiAgentSubAgentTask(继承 SubAgentTask

    • 覆盖 _run_loop,使用多智能体工具列表
    • 覆盖系统提示词生成
    • 捕获 assistant 输出并转发到主智能体
    • 维护 pending_messages 队列
    • 维护 pending_tool_calls 等待列表
    • 支持 inline 消息注入
    • 支持自然结束(不依赖 finish_task
  2. 实现 MultiAgentSubAgentManager(继承 SubAgentManager

    • 创建 MultiAgentSubAgentTask 实例
    • 管理所有子智能体状态
    • 提供查询活跃子智能体接口
    • 提供终止实例接口

Step 4消息路由

  1. 实现 message_router.py

    • route_message(target_agent_id, message)
    • 根据目标状态选择 inline / 工具结果返回 / 触发新任务
    • 处理边界情况(最后一轮输出时收到消息)
    • 批量消费待处理消息
  2. 实现消息格式化函数

    • format_task_message(display_name, content)
    • format_output_message(display_name, content)
    • format_ask_message(display_name, content, message_id)
    • format_message_message(display_name, content, message_id)
    • format_answer_message(display_name, content, message_id)

Step 5主智能体 Terminal

  1. 实现 MultiAgentTerminal(基于 MainTerminal 复制)

    • 移除旧版子智能体工具
    • 添加多智能体专用工具
    • 使用 MultiAgentSubAgentManager
    • 使用 MultiAgentConversationStore
    • 实现 answer_sub_agent_question 等工具处理
  2. 实现工具处理函数

    • create_sub_agent
    • terminate_sub_agent
    • send_message_to_sub_agent
    • ask_sub_agent
    • answer_sub_agent_question
    • list_active_sub_agents
    • get_sub_agent_status
    • create_custom_agent
    • list_agents

Step 6会话存储

  1. 实现 MultiAgentConversationStore
    • 复制 ConversationManager 的 CRUD 逻辑
    • 数据目录指向 ~/.astrion/astrion/host/mutiagents/conversations/
    • 保存主智能体对话
    • 保存每个子智能体对话

Step 7前端页面

  1. 创建 MultiAgentView.vue

    • 类似现有 ChatView但专门用于多智能体模式
    • 支持消息气泡按角色/类型渲染
    • 支持显示活跃子智能体列表
    • 支持创建子智能体
  2. 创建组件

    • MessageBubble.vue:渲染统一消息格式
    • AgentList.vue:显示子智能体状态
    • CreateAgentDialog.vue:创建自定义角色
  3. 添加路由 /multiagent/new

Step 8入口

  1. 登录页添加「多智能体模式 beta」按钮
  2. 点击后跳转到 /multiagent/new
  3. 初始化 MultiAgentTerminal

Step 9联调测试

  1. 测试创建子智能体
  2. 测试子智能体自然输出转发
  3. 测试 send_message_to_sub_agent 运行中引导
  4. 测试 ask_master / answer_sub_agent_question
  5. 测试 ask_other_agent / answer_other_agent
  6. 测试子智能体对话持久化
  7. 测试角色创建与保存

3. 代码隔离清单

现有文件 处理方式
core/main_terminal.py 复制为 modules/multi_agent/terminal.py
core/main_terminal_parts/tools_definition/agent_tools.py 复制改造为 modules/multi_agent/tools/master_tools.py
core/main_terminal_parts/tools_execution.py 复制需要的部分到 modules/multi_agent/terminal.py
modules/sub_agent/manager.py 继承创建 modules/multi_agent/sub_agent_manager.py
modules/sub_agent/task.py 继承创建 modules/multi_agent/sub_agent_task.py
modules/sub_agent/toolkit.py 复制改造为 modules/multi_agent/tools/agent_tools.py
modules/sub_agent/prompts.py 复制改造为 modules/multi_agent/prompts.py
utils/conversation_manager/*.py 复制改造为 modules/multi_agent/conversation_store.py
server/chat_flow.py 参考实现,为 /multiagent 创建新的 API 入口
server/chat_flow_task_support.py 参考 inject_runtime_user_message 实现多智能体消息注入
static/src/views/ChatView.vue 复制改造为 static/src/views/MultiAgentView.vue

4. 复用点清单

能力 复用方式
模型调用 DeepSeekClient
工具执行底层 WebTerminal.handle_tool_call 的执行链路
文件/终端/搜索等工具 现有工具函数
沙箱/权限 evaluate_tool_permission
对话存储格式 ConversationManager 的 JSON 结构
原子写入 _atomic_write_json 模式
前端组件 复制 ChatView 改造

5. 风险与应对

风险 应对
子智能体消息丢失 待处理队列持久化 + 唯一 id + 消费确认
子智能体状态错乱 状态机清晰 + reconcile 机制
主智能体上下文爆炸 子智能体只汇报关键步骤,详细内容放文件
多实例并发冲突 每个实例独立上下文,独立存储
与现有代码耦合 严格隔离,复制改造

6. 验收标准

  1. 登录页有「多智能体模式 beta」按钮
  2. 点击后进入 /multiagent/new
  3. 可以创建至少 2 个不同角色的子智能体
  4. 子智能体输出自动显示在主对话中
  5. Team Leader 可以运行中引导子智能体
  6. 子智能体可以向 Team Leader 提问并收到回答
  7. 子智能体可以向其他子智能体提问并收到回答
  8. 子智能体对话完整保存,刷新后可恢复
  9. 现有单智能体模式不受影响