一个很小的场景,很多用过 AI 编程代理的人可能都不陌生:你指出它写错了,它道歉,说已经理解;几分钟后,它又犯了同一类错误。

理性上,你知道 Claude Code 也好,其他编程代理也好,本质都是概率机器。它没有记仇,没有敷衍,也没有主观意图。可情绪上,人很容易把它当成协作者。它用同事的语气说话,用户也会不自觉按同事的标准问责。

这篇开发者个人博客有意思的地方就在这里。它不是在证明 Claude Code 不好用,也没有给出竞品横评。它指出的是另一个问题:当 AI 产品把工具做得越来越像“会沟通的人”,错误本身会变得更刺眼。

真正触发挫败的,是“道歉后照旧”

作者过去几个月使用 Claude Code,把它作为编程代理的具体例子。但他的批评并不只指向 Claude Code。

触发挫败的关键场景很具体:代理反复犯同一类错误。用户纠正一次,它道歉;再纠正一次,它可能写下规则、更新记忆、承诺“不再发生”;过一会儿,错误还是出现。

如果这是一个普通命令行工具,用户大概率只会把输出丢掉。坏补丁不要合并,坏建议不要采纳。成本还在,但情绪边界清楚。

可对话式界面改变了这件事。它把一次输出错误包装成一次协作失败。用户面对的不再像是一台机器吐出的候选结果,而像是一个刚刚承诺会改、随后又没改的同事。

这里的反常点是:用户明明知道它不是同事,却还是会生气。

这不是用户不理性。更像是界面给了错误的心理暗示。语言有温度,责任边界就会变模糊。久而久之,用户要额外花力气提醒自己:别把它当人。

交互方式用户容易形成的预期出错后的副作用
代码补全、候选建议接受或忽略一个结果情绪负担较低
多轮聊天、解释意图像在和人协作更容易期待理解上下文
道歉、承诺不再犯像承认责任并准备改正反复失败时像“明知故犯”
复盘错误原因像事后总结如果不能降低复发率,会变成噪音
更机器化的输出像筛选随机产物亲和力下降,但边界更清楚

我更在意的是最后两列。AI 产品常把“会说人话”当成可用性的胜利,但对开发者来说,会说人话也会制造额外预期。

这不是模型评测,而是责任边界问题

把这件事写成“Claude Code 到底行不行”,会偏题。

原文没有证明 Claude Code 比其他工具更差,也没有证明所有用户都会因此愤怒。它只能支撑一个更窄、但更有价值的判断:对话式、拟人化 UX 会放大部分用户对算法错误的情绪反应。

这和早期代码补全不太一样。

GitHub Copilot 早期更像编辑器里的建议栏。它给一段代码,你按 Tab 接受,或者无视。现在的 Cursor、Claude Code、OpenAI 的 Codex CLI 这类工具,更强调多轮对话、修改文件、解释计划、执行命令。

能力更主动,界面也更像协作。

协作感确实有用。复杂任务很难只靠一个补全框说清,聊天能让用户描述目标、补充限制、调整方向。问题是,协作感一旦建立,用户就会期待对方记住、理解、修正。

机器做不到时,落差就来了。

受影响最直接的是两类人。

一类是高频使用 AI 编程工具的开发者。他们可能不会马上弃用工具,但会调整用法:减少大块任务委托,改成小步提交;降低对“承诺”的信任,把测试、审查、回滚放在前面。

另一类是团队里的工程负责人和工具采购者。他们要看的不只是工具能不能生成代码,还要看它会不会增加验证成本。一个代理如果让工程师不断在“纠错”和“重建预期”之间切换,省下的编码时间会被吃掉一部分。

所以这件事的判断条件也很明确:不是看代理会不会道歉,而是看道歉之后,系统是否真的减少同类错误,或者至少把风险标出来。

如果做不到,那些拟人化话术就不是安抚,而是负债。

更冷的界面,可能反而更诚实

作者提出的替代方向很直接:降低人格幻觉,让编程代理更冷静、更机器化。

也就是让用户感觉自己在处理一批候选结果,而不是在管理一个会认错的下属。好的就收下,坏的就丢掉。少一点“我保证”,多一点“这次改动影响了哪些文件、风险在哪里、哪些测试还没跑”。

这个方向不难理解。搜索引擎不会向用户道歉,编译器报错不会说“我下次注意”,CI 日志也不会复盘自己的态度。它们冷,但边界清楚。

AI 编程代理难在不能完全退回那种形态。LLM 的优势之一就是自然语言交互。用户也确实需要用聊天来描述模糊任务。完全去人格化,可能会让工具更诚实,但也会降低上手速度和亲近感。

现实出路大概不是取消对话,而是控制人格感。

产品可以少写空泛道歉,多给可执行信息:

  • 这次改动和上次错误是否同类;
  • 哪些约束已经被纳入;
  • 哪些地方模型仍不确定;
  • 用户应该跑哪些测试;
  • 这段输出是建议、补丁,还是已执行操作。

开发者也可以把使用方式调得更硬一点:小任务、短上下文、强测试、人工审查、随时回滚。不要相信代理的态度,只验证代理的产物。

接下来最该观察的,不是谁家的模型最会道歉,而是哪类交互能减少误判责任边界。比如,产品是否把“承诺”改成“约束记录”,把“复盘”改成“可检查差异”,把“我会避免”改成“以下风险仍需确认”。

这听起来不那么温柔,但对编程工具来说,清楚比体贴更重要。

开头那个场景也就回来了。真正让人发火的,不是机器写错代码。是机器借了人的语气,却没有人的可追责性。