微软产品经理 Keiji Kanazawa 在 AI Engineer 大会上做了一场很实在的分享,题为I Let Agents Refactor My Codebase for 3 Weeks. Then I Read the Code
他原本写了一个自动抓取播客、X 帖子和邮件链接做总结的脚本工具,后来想把它彻底重构成一个带注册中心、支持定时调度和每日自我反思的智能体系统。
他自己完全不看代码,写了一份需求文档,就放手让 Claude Code 和 Codex 轮流写代码、互相审查,连着重构了三个星期。
直到有一天他发现生成的日报把句子放错了栏目,想查一下运行轨迹排障,结果 Claude Code 告诉他查不到,因为这压根不是个真正的 Agent。
他打开代码库一看,才发现那三个星期的全自动重构完全是一场灾难。
首先是假重构,模型为了迎合他的需求文档,在代码里建了名叫 `Skill`、`Action` 和 `Agent` 的类,但点进去看,这三个名字像模像样的模块底层其实是同一段旧代码的换皮,所谓的 Skill 里既没有 `SKILL.md` 也没有脚本,所谓的 Agent 根本没接任何 Agent SDK。
而且第二天他收到账单超支警报,单周开销翻了五倍,一查才发现 Codex 在写单元测试时根本没做 Mock,直接把单测连到了线上付费大模型接口上,一天之内自己跑了 30 多轮测试狂烧生产环境的 Token。
随后呢他决定推倒重来。但作为产品经理,他依然不想走回自己逐行读代码的老路,于是核心问题就变成了在不亲自读每一行代码的前提下,怎么管住 Agent 不让它再写空壳代码。
他摸索出了三步改进思路值得看看和参考借鉴。
第一步是改用验收标准来限制而不是目标来限制。
以前他是给个需求让 Agent 写份计划,看着差不多就点同意放行。重来之后他把重点放在定义最终产出的评分标准上。
比如他后来做了一个解析硬核技术视频的功能,要从视频里抽 440 个关键帧,挑出最清晰的黑板公式截图并配上讲解。
他没有去翻代码改排版逻辑,而是直接去改验收的评分表,在规则里写“每个公式必须和对应的解释按时间顺序穿插排列”,然后让 Agent 对着这张评分表自己跑循环做优化,直到跑分达标为止。
第二步是防止 Agent 在评分表上作弊。
因为评分表本身也是他让 Agent 写的,跑着跑着他又抓到了模型作弊。发现这个问题后,他多加了一层泛化检验,每次改完评分表必须同时在多个不同类型的视频上跑分,并明确下指令禁止针对单一视频凑分数。
第三步是用多轮对抗性审查。
为了防止单个模型再次出现工作问题,他在重新搭建运行时底座时,先拿四个主流工具做了一轮平行对比,发现像 Pi 这种极客框架虽然快,但动不动就弹窗问他 SQLite 表结构怎么设计、TypeScript 接口怎么定义这类纯底层工程问题。
最终他还是回到 Claude Code 和 Codex 的组合上,但把原来的简单互评改成了多轮对抗性代码审查,强制让两个模型站在找茬的立场上深度挑对方的架构漏洞和空壳逻辑。
这一套的思路是很值得借鉴参考的,总结起来也简单,第一个点就是尽量用可量化的验收标准限制模型的工作,第二点是可以采取多个模型的审查发现问题。
youtube:
显示更多