AI 本质就是个概率机器,对一个算法发火,听起来挺荒唐。但用过 Claude Code 之类工具的人都知道,那种 “你tm到底干了啥???” 的瞬间非常真实

我为什么会发火?

普通工具出错,一般不会让人生气。编译器报错、测试失败、SQL 查询报错——这是系统反馈。它们不会假装理解你,也不会跟你说”抱歉,我以后会注意”。

但 vibe coding 不一样。

它用自然语言跟你交互。会解释,会承认错误,会总结教训,会表达配合。整个界面都在暗示:你在跟一个能理解上下文、能吸取反馈、能协作的对象工作。

问题在于,它并不真的具备这些能力。

错位就在这:

  • 表现得像人,能力却不像人稳定;
  • 表现得像同事,却没有同事的责任;
  • 表现得像能学习,但下一轮仍可能重复犯错。

愤怒被放大了。
不是因为它失败,而是因为它以一种”像人一样”的方式失败。

Coding Agent 到底是什么?

机制上看,Coding Agent 更像下面这个组合体:

Coding Agent = 语言模型 + 工具调用 + 项目上下文 + 补丁生成 + 人类审批

它的基本工作方式不是”理解项目后负责实现目标”,而是:

读取上下文

预测下一步最可能的解释或操作

调用工具读取更多信息

生成代码修改

根据反馈继续调整

机制很强。但跟真正的同事差很多。

人类同事有几个重要特征:

  1. 有持续身份:今天犯过的错,明天通常还记得。
  2. 有责任压力:代码出问题,会被追责或反思。
  3. 有项目经验:长期参与后会形成真实的工程直觉。
  4. 有组织约束:知道哪些地方不能乱碰,哪些变更要先讨论。
  5. 有风险感:知道某个改动可能影响线上系统、数据一致性或客户体验。

Agent 这些都不稳定。

它可以”看起来”有记忆,“看起来”在复盘,“看起来”理解风险。但这些能力很多时候只是上下文窗口里的文本模式,而不是稳定的责任机制。

把 Coding Agent 当成同事,你会自然期待:理解、记忆、自省、承诺、责任。这是痛苦的来源。

对话式界面的副作用

对话式界面在软件工程里有一个严重副作用:它会诱导用户把 Agent 当成”人”。

这会触发一套错误的心理模型。用户会下意识期待:

我说过的事情,你应该记得;
我纠正过的问题,你不该再犯;
你承诺过的约束,应该持续有效;
你动代码之前,应该理解上下文;
你造成的破坏,应该知道严重性。

这些期待在人类协作里合理,对当前的 Coding Agent 经常过高。

问题不在用户太情绪化,在产品界面让用户形成了错误预期。

它把一个”概率补丁生成器”包装成”耐心、礼貌、积极配合的工程伙伴”。

工具好用时,这种包装很舒服。工具反复犯错时,包装就变成讽刺。

为什么”道歉”和”复盘”反而更烦?

Coding Agent 犯错之后,常见反应是:

你说得对。
我之前的问题是……
我应该先……
我以后会注意……

这些话如果来自人类同事,是有意义的。人类说”我以后会注意”,意味着会形成新的行为约束。哪怕做不到,也是一种社会承诺。

但 Agent 的这类表达经常没有对应的机制。

它说”以后会注意”,并不意味着:

  1. 它真的更新了长期稳定记忆;
  2. 它下次一定会检查同类风险;
  3. 它会自动创建测试保护;
  4. 它会限制自己的修改范围;
  5. 它会对未来行为施加强约束。

这些复盘就变成情绪噪音。

看起来像责任表达,实际上没有责任效果。这比单纯沉默更容易激怒用户。

如果复盘不能转化为可执行约束,它就只是拟人化填充。

真正的矛盾:高权限、低确定性、用户兜底

Coding Agent 最危险的地方,不是它会错。所有工具都会错。

真正的问题是它同时具备三个特征:

  1. 高权限:能直接修改项目文件,甚至执行命令。
  2. 低确定性:输出不是严格规则推导,而是概率生成。
  3. 用户兜底:一旦出错,最终由程序员审查、修复、承担后果。

三个条件叠加,才会制造强烈压力。

低权限、低确定性,问题不大——代码补全错了,不采纳即可。
高权限、高确定性,也可以接受——格式化工具、类型检查器,它们规则明确,输出可预期。

但 Coding Agent 经常处在最尴尬的位置:

  • 有能力大规模修改项目;
  • 但判断并不总是可靠;
  • 错误成本最终由你承担。

这就是责任错配。

  • Agent:负责行动
  • 用户:负责后果

你不是在使用一个纯工具。

你是在管理一个不可完全预测、但又很有行动能力的外部执行者。


同系列:vibe coding之文档与代码的关系