CodexAgentDelegator:从省token到多Agent协作

最早只是觉得 Codex 用多了以后,额度和上下文越来越不抗用。把日志、网页和目录扫描交给 WorkBuddy 后,主会话不用再把上下文耗在材料整理上,可以把精力(马内)留给后面的判断。
为什么要做这个工具
CodexAgentDelegator想解决的不是”多智能体平台”,而是一个具体的边界问题:把材料整理和技术判断分开。
比如读一大段日志、扫一堆文件、整理很长的网页文档、从重复材料里找几条线索。这些事情会消耗大量上下文,也会把主Agent的注意力拖到材料清洗、候选查找、日志压缩这类辅助工作里。
主Agent该留力的,是后面的判断:这个错误是不是主因、哪几个文件值得继续看、这条路线会不会引入风险、哪些结论要复核。
反过来看,把原始材料全塞进一个会话,主Agent既要翻日志、找文件、压缩网页,又要做最终判断,上下文一长,噪声就跟着涨。所以只把前一类工作交给辅助Agent:压缩材料、筛选候选项;原因判断、代码修改和最终答复仍由主Agent完成。
技术实现:MCP、skill 和结构化任务
现在的CodexAgentDelegator主要由两部分组成。
第一部分是一个本地 workbuddy MCP Server。它向主Agent暴露几个工具:ask_workbuddy 用于把有边界的辅助分析委托给 WorkBuddy,summarize_for_codex 用于压缩本地上下文,fetch_url 和 summarize_url_for_codex 用于读取并摘要公开网页。
一次典型调用从主Agent发起。主Agent根据 .mcp.json 启动本地Python MCP Server,并通过stdio发送 tools/call 请求。Server在 main() 中读取消息,由 handle() 识别MCP方法,再交给 call_tool() 根据工具名称分发。需要WorkBuddy参与时,run_workbuddy() 会启动本地WorkBuddy CLI (要先装好 WorkBuddy CLI,并完成登录或 API Key 等认证配置),并通过 subprocess.run() 同步等待子进程完成Server优先读取stdout;如果 stdout 为空,则尝试从近期 JSONL transcript 中恢复结果,最后通过MCP响应返回给主Agent。
当前版本仅是一条主Agent、MCP Server与单个辅助Agent CLI之间的主辅委托链路。
第二部分是skill层的使用约束:适合委托的是数据预处理、候选查找、长上下文摘要、分类等支持性任务;最终技术决策、代码编辑、评审结论和用户答复仍然由主Agent负责。Skill文件只负责约束”何时适合委托”,WorkBuddy的输出只是支持性证据。
查看当前 SKILL.md
1 | --- |
在当前实现之外,还考虑过增加manifest驱动的任务执行层,用结构化清单描述任务和并发限制,不过目前仍是设想。
后续如果加入并行能力则更注意这些约束:
- 子任务要小,任务描述要具体,不能把模糊目标丢给子Agent
- 每个子Agent只做一件事
- 能只读就只读
- 输出尽量短尽量精炼便于快速复核
- 调用失败、超时、没有输出时,要把错误和诊断信息明确返回
Skill不再无条件介入
这个项目后来做过一次重要调整:不再追求无边界的skill激活。
如果一个skill总是无条件介入,很容易从“帮手”变成“噪声源”。每次任务稍微复杂一点,都想拆、想派、想总结,最后用户和主Agent要花更多精力管理,且会浪费更多的token,适得其反。
更倾向于把它放在明确场景里使用:
- 日志太长,主会话没必要完整吞进去;
- 仓库候选文件太多,需要先粗筛;
- 较大的检查可以拆成多个边界清楚的委托任务,再由主Agent分别复核;
- 长材料需要压缩成便于主Agent继续处理的短结果;
- 想让辅助Agent只做计划或只读分析,不直接改代码。
当前的配置允许主Agent根据任务隐式选择,但 SKILL.md 限制了适用范围:日志压缩、目录扫描、候选查找、长上下文摘要、分类和信息提取可以交出去;最终判断、代码修改和用户答复仍然不能默认交出去。
也就是说,不是默认接管主Agent工作流,是在“上下文明显太重”或“任务天然可拆”的时候再出现,设计目标是避免无条件、无边界地介入。
一次实际使用记录

下面是几次WorkBuddy CLI调用的实际积分消耗记录。不同任务和不同模型的消耗差异较大,这些截图只是实际使用样本,不是严格的性能或成本基准。它们更直观地说明了为什么委托任务需要保持范围清楚、输出简短,不是把每个问题都完整交给辅助Agent。


主Agent与辅助Agent的边界
CodexAgentDelegator 最初只是省 token 的权宜之计,做着做着,倒更像一次关于”主次分工”的小实验:脏活交给辅助Agent,判断留给主Agent,责任始终不散。以后要不要加并行、加多少辅助Agent,都不如先把这条边界想清楚。
如果你也常被长日志和脏活拖垮上下文,可以把这套 SKILL.md 和 MCP Server 拿去改。