Agentic 编程的四个层级
“Vibe coding”是个糟糕透顶的说法。软件开发方式经历了最重大的一次转变,结果被它简化成一个“贬义词”,搞得认真的工程师不敢亮出自己用的工具,粗心的人不敢亮出自己的产出。我明白这词起初不是这个意思,但它后来成了一个扼杀思考的标签,不管什么东西,只要沾了 AI(有时甚至根本没沾),就被不假思索地扣上去。于是又冒出更糟的词汇,比如“meat proxy”(肉代理)或“slop”(垃圾产出),说得好像 LLM 工具出现之前,软件就没有这些词所指的那些毛病一样。
如今每个工程团队都在某种程度上用 AI,而我认为缺少一个衡量 AI 参与程度的标准,所以任何沾了 AI 的贡献都被贴上同一个贬义标签。审查者分不清作者是真的看懂了代码,还是压根没读过,于是只好一视同仁地怀疑。这反而最伤那些认真做事、老老实实走审查流程的 agentic 开发者——因为在乎这件事的正是他们。一来二去,他们就不愿在被直接指派的范围之外做任何贡献,团队本该更需要的贡献也就这样流失了。
真正的问题从来不是 LLM 写了代码——它们每天都在变强。问题在于没有任何人能为产出背书,这是两码事,却被那些单一的“词”混为一谈了。
我想提出一个简单的代码分类,围绕“责任归属”来划分:
- A0:人工编写,AI 顶多当搜索引擎或讨论对象
- A1:AI 辅助,比如自动补全、代码片段、样板代码,但作者是人
- A2:Agent 生成 + 人工审查(也就是开发者能解释每一行,并像自己写的一样承担责任)
- A3:Agent 生成 + 未经审查(这正是“vibe coding”最初描述的情况),适合原型和一次性工具。这一类里还包括 Agent 生成 + Agent 审查。
这样一来,我们真正能达成共识要避免的,是大量 A3 级代码堆积在需要 A2 或更高等级的地方。让贡献者自己打标签,能告诉审查者或下游用户该投入多少精力去审查,以及他们是否愿意承担这个风险。
不过这套标准是双向的。如果作者要为每一行代码背书,那审查者也得为每一条反对意见负责。喊一句“垃圾”不是审查结论,只是一种感觉——把一份代码改动丢给某个智能体或“垃圾检测器”,然后转发它的判定结果,这本身就是 A3 级审查,价值和它正在指责的 A3 代码一样低。所以审查应该承担和代码同样的责任,甚至更多:要么指出具体的缺陷,要么这个标签本身就是未经审查的输出。
也许会有更好的标签,边界也会随时间模糊,但根本问题不会变:提出这段代码的人在被问到的时候能解释清楚吗?别人能看懂吗?它是在正确地做它该做的事吗?因此,团队应该争论的是这些问题,而不是工具本身。
这篇文章是 A1。