AI Coding Agent 的两派:全自动黑箱 vs 人类主导

现在讨论 AI 编程时,很多分歧其实不是模型能力的分歧,而是我们到底想让 Agent 扮演什么角色

一种路线是“黑灯工厂”:把需求写成规格,丢给一批 Agent,让它们在无人值守的环境里持续编码、测试、修复,最后产出一个看似可运行的软件。这个想象很诱人,因为它承诺把软件开发从“人写代码”变成“机器生产代码”。如果这个模式成立,工程师只需要描述目标,剩下都交给机器。

另一种路线更保守,也更工程化:Agent 是强力工具,但人仍然是系统设计者、上下文提供者和最终责任人。Agent 可以帮我读代码、写样板、补测试、改 bug、跑检查、整理 changelog,但它不能替我判断一个系统边界是否合理,也不能替我承担线上事故的责任。

Mario Zechner 在访谈中明显站在第二派。他不是不相信 Agent 的价值,恰恰相反,他每天都高频使用 Agent,也用 Pi 来开发 Pi。但他反对把 Agent 当成完全自治的软件工厂,原因很简单:模型不会从虚空中长出工程判断。它学到的是互联网上的大量代码、问答和强化学习轨迹,而互联网上的代码质量并不稳定。

这就带来一个核心风险:规格中没有写清楚的地方,模型会用训练数据里的默认模式去填空。而这些默认模式未必是你的业务需要的,也未必符合你当前代码库的设计约束。人类工程师也会犯错,但 Agent 犯错的速度更快、产量更高。如果没有持续的人工校准,错误会叠加,复杂度会膨胀,最后形成一种看起来很勤奋、实际上很难维护的代码库。

所以问题不是“要不要让 Agent 写代码”,而是“哪些事情可以放权,哪些事情必须人来控制”。Mario 的经验是:低风险、边界清晰、可验证的任务,可以更大胆地交给 Agent;涉及安全、架构、核心业务和长期维护成本的任务,人必须在环。

这不是对 AI 的悲观,而是对软件工程的尊重。软件不是代码行数的堆积,而是一组边界、契约、状态和演化路径。Agent 可以极大提高局部实现效率,但如果没有人负责系统结构,它也会极大提高技术债生成效率。

因此,在 AI 编程时代,更现实的分工应该是:Agent 负责加速执行,人负责定义方向。Agent 负责扩大产能,人负责控制复杂度。Agent 可以帮我们走得更快,但人必须决定什么路不该走。

相关:Mario 的日常 AI 编程工作流、如何让 Agent 不把代码库写烂、AI 编程时代的软件工程原则