Skip to content

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 11 Jun 12:57
· 68 commits to main since this release
dabfc83

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 元工具

其他变更

  • de2fa7dfeat: 移除技能列表编号,注入 Karpathy behavioral guidelines 到系统提示词
  • 5f3421ffix: 修复 thinking/assistant 渲染尾部空行问题
  • 675e526chore: 精简依赖特性,重组 workspace Cargo.toml
  • 458e5aafix: 更新测试断言匹配新 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

Full Changelog: v0.5.2...v0.6.0