CHAPTER 08
Coding Agent 与通用 Agent
把代码当作工具,创造新的能力
给 Agent 每加一个专用工具,就多一份接口负担与选择歧义。另一条路是:把“写代码并执行”本身作为工具。代码是图灵完备、可组合、可验证的通用动作空间——一段脚本能临时拼出任意新能力,这正是 Coding Agent 兼具“专用”与“通用”双重身份的根源。
动作空间
Code as Action
与其枚举 100 个工具,不如给一个可执行沙箱:模型现写现跑,临时组合出检索/清洗/计算/绘图等能力,覆盖长尾任务。
可验证
测试即奖励信号
代码能被单元测试、类型检查、lint、运行结果客观验证,天然形成“执行→观察报错→修复”的反馈闭环,最适合自主迭代。
能力演进
从补全到自主解决问题
演进路径:行内补全 → 对话式改写 → 基于 issue 描述跨多文件自主修复(如 SWE-bench),自主性逐级上升、对可靠性要求也逐级上升。
工具型 Agent
- 为每个能力预定义专用工具与参数
- 可控、边界清晰,但工具多了选择困难
- 长尾任务需要不断新增工具
Coding Agent(代码即工具)
- 用可编程沙箱动态生成能力,组合性强
- 结果可被执行/测试验证,反馈闭环强
- 必须有沙箱与资源限制,防误删/跑飞
1
设计“模型友好”的编辑工具
整文件重写通常比 diff 更稳(diff 要精确数行号,是易错“格式开销”)。给足思考 token、让格式贴近模型自然见过的形态。
2
用绝对路径消除歧义
Anthropic 的 SWE-bench Agent 在模型离开根目录后,用相对路径频繁出错;把工具改为强制绝对路径后近乎无误——优化工具比改提示更值钱。
3
执行并读回反馈
跑测试/lint/类型检查,把报错原样回灌给 Agent,让它基于真实结果迭代,而不是凭感觉改。
4
在沙箱里加护栏
隔离环境、限制网络与文件写入、约束超时与内存。自主编码能力强,破坏力也大——护栏是上生产的前提。
通用 Agent 的关键:一个可执行的“外壳”
当“代码执行 + 文件系统 + 检索”这三件套齐备,Agent 就能自我扩展能力:读文档→写胶水脚本→运行验证→迭代。这正是 Claude Code、Codex 等把“编码 Agent”泛化为“通用 Agent”的原因——编码循环的骨架可迁移到大量非编码任务。
别忽视人类评审
自动化测试能验证“功能对不对”,却无法保证“是否符合更大的系统要求”。自主编码 Agent 再强,代码评审仍是必要的最后一道闸。
