# agent67v2 — 多智能体协作版个人助手 > Lambda: `Memory(Loop(Coordinator >> Handoff(SkillRegistry)))` ## 1. 动机 agent67 (v1) 是单体 ReAct agent,42 个工具全量注入 system prompt: | 问题 | 原因 | 影响 | |------|------|------| | 响应慢 | 42 工具描述 ~2000 tokens 注入 prompt | LLM 推理 token 多,首响延迟高 | | 无法协同 | 单一 ReAct 循环,不暴露为可调用 Skill | 其他编排器无法复用 agent67 的能力 | | 不可拆分 | 所有工具平铺在一个 agent 中 | 调试困难,职责不清 | ## 2. 架构 ``` agent67v2 协调者 (6 个元工具, ~500 tokens prompt) ├── code-agent (13工具: 文件/代码/Git) ├── shell-agent (1工具: Bash) ├── web-agent (10工具: 搜索/知识库/文档) ├── memory-agent (17工具: 记忆/任务/调度/画像) ├── system-agent (4工具: 浏览器/应用/系统/截图) └── researcher (17工具: 读论文→复现→实验→记录) ``` ### Lambda 表达式对比 ``` v1: λ = Memory(Loop(Brain >> Route(42 tools))) # 单体 v2: λ = Memory(Loop(Coordinator >> Handoff(Registry))) # 多智能体 ├─ code-agent = Loop(CodeBrain >> Route(13)) ├─ shell-agent = Guard(Loop(ShellBrain >> Bash)) ├─ web-agent = Loop(WebBrain >> Route(10)) ├─ memory-agent = Memory(Loop(MemBrain >> Route(17))) ├─ system-agent = Guard(Loop(SysBrain >> Route(4))) └─ researcher = Loop(ResBrain >> Route(17)) ``` ## 3. 三大改进 ### 3.1 拆分微代理 42 个工具按职责拆分为 6 个专业微代理。协调者只持有 7 个元工具 (`call_code`, `call_shell`, `call_web`, `call_memory`, `call_system`, `call_research`, `ToolSearch`)。 **效果**: system prompt 从 ~2000 tokens 缩减到 ~500 tokens,首次响应快 2-3x。 ### 3.2 Skill 复用 (SkillRegistry) 每个微代理注册为 `Skill`,通过全局 `SkillRegistry` 可被任何编排器发现和调用: ```python from lambdagent.skills import SkillRegistry registry = SkillRegistry() code_agent = registry.get("code-agent") result = code_agent.apply("读取 main.py") ``` **复用场景**: - research67 编排器可复用 `code-agent` 做代码实验 - agentbuilder67 可复用 `web-agent` 搜索参考配置 - 新编排器只需 `registry.get("code-agent")` 即可使用 ### 3.3 工具懒加载 (ToolSearch) 参考 Claude Code 的 deferred tools 模式,协调者不在 prompt 中注入全部工具描述,而是通过 `ToolSearch` 元工具按需查找: ```json {"action": "ToolSearch", "input": {"query": "文件操作"}} ``` 返回匹配的工具列表,协调者再决定委派给哪个代理。 ## 4. 配置与启动 ### 统一配置文件 `agent-config.yml` 包含协调者 + 子代理定义。子代理通过 `subAgents` 节声明,支持两种模式: ```yaml subAgents: code-agent: config: agents/code-agent.yml # 文件引用 (本地开发) inline: {type: react, ...} # 内联配置 (PaaS 部署) tool: call_code ``` ### 启动方式 ```bash # PaaS CLI (与 agent67 一致) python3 -m agentpaas agent create --name lambda2 \ --config agentexample/agent67v2/agent-config.yml python3 -m agentpaas chat lambda2 # 直接运行 cd agentexample/agent67v2 && python run.py ``` ### 编译器扩展 `from_config()` 编译器新增 `subAgents` 支持: - `build_agent()` 检测 `subAgents` 节 → 编译子代理 → 注入为 `call_*` 工具 - 子代理使用**懒编译** — 首次调用时才 `from_config()` - `inline` 模式通过 `build_agent(dict)` 直接编译,不依赖文件路径 - 自动注册为 `Skill` 到全局 `SkillRegistry` ## 5. Research Skill Pack 独立的可复用技能包,封装 "读论文→复现→实验→记录" 研究流程: ``` lambdagent/skillpacks/research/ ├── __init__.py ├── skills.py # 4 个独立 Skill + 1 个 Pipeline └── agent-config.yml # PaaS 可部署的编排器 ``` | Skill | 职责 | 工具 | |-------|------|------| | `paper-reader` | 搜索→阅读→提取关键信息 | WebSearch, WebFetch | | `code-reproducer` | 克隆→理解→运行→对比 | Bash, ReadFile, CodeSearch | | `experimenter` | 设计实验→执行→分析 | Bash, WriteFile, RunTests | | `lab-notebook` | 整理笔记→报告→知识库 | WriteFile, KBAdd, MemoryStore | | `research-pipeline` | 完整流程 (组合以上) | reader >> reproducer >> experimenter >> notebook | agent67 (v1) 通过 `ResearchWorkflow` 工具也能调用此流程。 ## 6. 文件清单 ``` agent67v2/ ├── agent-config.yml # 统一配置 (协调者 + 6个子代理 inline) ├── orchestrator.yml # 协调者配置 (独立版) ├── DESIGN.md # 本文件 ├── run.py # 交互式运行入口 ├── launch_paas.py # PaaS 部署入口 ├── agents/ │ ├── code-agent.yml │ ├── shell-agent.yml │ ├── web-agent.yml │ ├── memory-agent.yml │ └── system-agent.yml ├── core/ │ ├── coordinator.py # 协调者 ReAct 循环 │ └── bootstrap.py # 从 agent-config.yml 构建完整 Term ├── skills/ │ └── registry.py # 微代理 Skill 注册 └── tools/ └── tool_search.py # ToolSearch 懒加载元工具 ```