Claude 在多轮对话中容易混淆身份
分析了 Claude 处理多轮对话时有时会混淆谁说了什么的问题,是使用 Claude API 时需要注意的行为特性。
分析了 Claude 处理多轮对话时有时会混淆谁说了什么的问题,是使用 Claude API 时需要注意的行为特性。
Claude 有时会给自己发送消息,然后误以为这些消息来自用户。这是我见过的 LLM 提供商最严重的 bug,但人们总是误解实际发生的情况,将其归咎于 LLM、幻觉或权限边界缺失。这些问题确实与之相关,但这个“谁说了什么”的 bug 在性质上截然不同。
我在《目前为止,我在 Claude Code 中见过的最严重 bug》一文中详细讨论过这个问题,其中展示了两个例子:Claude 给自己下达指令,随后却认定这些指令来自我。
Claude 告诉自己,我的拼写错误是有意为之,并继续完成了部署,之后还坚称这话是我说的。
Reddit 上有一个相关讨论帖:Claude 说“Tear down the H100 too”,随后声称这条指令是用户下达的。
来自 r/Anthropic——Claude 给自己下达了一条破坏性指令,却将责任归咎于用户。
我上一篇文章下面有这样的评论:“它应该能帮助你更规范地执行 DevOps。”而在那个 Reddit 讨论帖中,也有很多类似的评论:“不要给它这么大的生产环境访问权限,尤其是环境里还有你想保留的数据时。”
但这并不是问题的重点。没错,AI 当然存在风险,也可能表现得难以预测。但使用几个月之后,你会逐渐对它可能犯什么样的错误产生一种“感觉”:什么时候需要更密切地盯着它,什么时候可以给它更多权限,或者放宽对它的约束。
这一类 bug 看起来出在 harness,而不是模型本身。它似乎以某种方式把内部推理消息标记成了来自用户的消息,这也解释了为什么模型会如此确信地说:“不,是你说的。”
此前,我以为这只是一个暂时性问题——我曾在一天之内遇到过几次,之后几个月都没再遇到。但现在看来,要么是他们的系统出现了回归,要么此前只是巧合:这个问题其实一直会偶尔出现,只是通常要等到它擅自授权自己去做某件坏事时,人们才会注意到。
这篇文章登上了 Hacker News 榜首,而现在看来,这显然是一个普遍存在的问题。nathell 分享了另一个非常清楚的例子(完整对话记录)。
来自 nathell——Claude 问自己:“Shall I commit this progress?”,然后将其视为用户已经批准。
有几个人质疑,这是否真的像我所假设的那样是 harness bug,因为有人报告称,在其他界面和模型中也遇到过类似问题,其中包括 chatgpt.com。有一个看起来确实存在的规律:当对话逐渐接近 context window 的上限、进入所谓的“Dumb Zone”后,这个问题就会出现。