v0.6.0
v0.6.0 — Sub-Agent System
Release date: 2026-06-11
子代理系统 (Sub-Agent System)
实现了一套完整的子代理协作系统。CommanderAgent 作为调度层,将用户任务拆解并委派给 Planner / Worker / Reviewer / GitHelper 四个专用子代理,形成"计划→执行→审查→提交"的自动化流水线。
架构
用户 ──► CommanderAgent (调度层)
│
├─► create_sub_agent("planner", ...) 制定计划
├─► create_sub_agent("worker", ...) 执行代码
├─► create_sub_agent("reviewer", ...) 审查产出
└─► create_sub_agent("git_helper", ...) 提交 commit
子代理一览
| 代理 | 职责 | 迭代上限 | 最终能力要点 |
|---|---|---|---|
| CommanderAgent | 意图识别、任务拆分、调度子代理、结果汇总 | N/A | 可使用 Read/Bash 探索代码库;不直接 Write/Edit 代码;与 MainAgent 共享 session UUID、可互相切换并保留完整上下文 |
| Planner | 制定开发+测试计划 | 25轮 | 输出含完整 Plan 模板(影响范围/验收标准/风险防御),持久化到 .oy-agent-output/plans/ |
| Worker | 按计划产出完整可编译代码 | 50轮 | 严格遵循 Plan,不偏离、不引入未要求特性、不留 TODO 占位符 |
| Reviewer | 审计代码,输出通过/不通过 | 15轮 | 问题分三级(严重/中度/轻度),结果写入 .oy-agent-output/reviews/;中度及以上不通过 |
| GitHelper | git add + commit | 10轮 | 生成含 commit-hash-id 的输出 |
核心运行机制
- 独立 Runtime:子代理在独立 tokio runtime 中运行,不阻塞主循环
- 消息结构:System Prompt 自动注入工作目录、当前时间及工具描述,子代理具备完整上下文
- Session 持久化:MainAgent 与 CommanderAgent 共享同一 UUID 和 session 文件,切换 agent 自动恢复对话历史;子代理 session 自动保存用于调试
- Prompt 队列:Worker drain loop 不静默丢弃 prompt,所有消息可靠传递
- 错误处理:tool 执行 panic 在 UI 展示,不静默丢失
- UUID 工具:子代理可调用
uuid工具生成 v4/v7 标识符 - System Prompt 升级:五大子代理提示词强化角色定位(Planner "建筑设计师般严谨"、Worker "外科手术刀般精准"、Reviewer "编译器般严谨"),约束更明确
TUI 集成
- Shift+Tab 切换 MainAgent / CommanderAgent,状态栏显示当前 active agent
- 底部 Sub-Agents 面板:实时显示执行状态(▶ 运行中 / ✓ 完成 / ✗ 失败),支持鼠标滚轮滚动,子代理面板最多显示 5 行
- 每个 toolcall 显示对应 agent 名称,带实时计时器
- 两个 agent 共享 UI 会话历史,独立维护 LLM 上下文,response receiver 合并为统一事件流
核心文件
| 文件 | 职责 |
|---|---|
oy-agent/src/domain/sub_agent.rs |
子代理类型枚举、System Prompt 模板、迭代上限定义 |
oy-agent/src/infrastructure/agents/commander_agent.rs |
CommanderAgent 实现 |
oy-agent/src/infrastructure/agents/sub_agent_runner.rs |
子代理有界循环执行器 |
oy-agent/src/infrastructure/tools/sub_agent_tool.rs |
统一 create_sub_agent 元工具 |
其他变更
de2fa7d— feat: 移除技能列表编号,注入 Karpathy behavioral guidelines 到系统提示词5f3421f— fix: 修复 thinking/assistant 渲染尾部空行问题675e526— chore: 精简依赖特性,重组 workspace Cargo.toml458e5aa— fix: 更新测试断言匹配新 skill heading 格式
完整提交日志
以下 23 个 commit 可合并理解为本版本的一次完整 feat+fix,以最终系统能力为准。
6d16eeb feat: 实现子代理系统 (CommanderAgent/Planner/Worker/Reviewer/GitHelper)
a06bac0 fix: 修复子代理消息结构 — 添加User消息和工具描述到System Prompt
10726b0 fix: sub_agent_runner 移除 tokio::spawn 嵌套解决 tool 结果丢失
bf6b30d fix: 子代理 system prompt 注入工作目录和当前时间
2d98797 fix
1867f22 fix: tool 执行 panic 不再静默丢失,错误展示在 UI
d8a09fc fix: CommanderAgent session 持久化 + 子代理独立 runtime
2d8af7e chore: remove accidentally committed test.md
59f5cf6 fix: MainAgent 和 CommanderAgent 共用同一 UUID、同一 session 文件
a03c522 fix: 切换 agent 时从 session 文件恢复完整对话历史
c478a24 fix: Shift+Tab 切换 agent 时通过 channel 传递对话历史
c87b71e fix: 子代理创建改为 tokio::spawn + .await,移除嵌套 runtime
a110bcf fix: 子代理面板支持鼠标滚轮滚动 + 计时器冻结 + toolcall显示agent名
c025eb9 feat: 子代理自动保存 session 文件用于调试
b857ff7 feat: 新增 uuid tool (v4/v7)
25e1771 fix: Worker drain loop 不再静默丢弃 Prompt,CommanderAgent 后台启动使用共享 session UUID
28aa976 fix: 子代理面板最大显示行数从 3 提升到 5
4e7dc3b feat: 全面升级子代理系统提示词,增强角色定位、约束规范与Plan模板
5f3421f fix: resolve trailing blank lines in thinking & assistant content rendering
de2fa7d feat: remove numbering from skills title and add Karpathy behavioral guidelines
675e526 chore: prune dependency features and reorganize workspace Cargo.toml
458e5aa fix: update test assertion to match skill heading format
What's Changed
- Feat v0.6.0 by @cherish-ltt in #8
Full Changelog: v0.5.2...v0.6.0