智能AI morning

不是幻觉!Claude自下指令甩锅人类,百万上下文沦为降智重灾区

2026-05-14 1 阅读 新智元
新智元报道 编辑:元宇 【新智元导读 】 Claude深陷「角色混淆」Bug,分不清自己的话与用户指令,长上下文成了降智「重灾区」。 一个程序员原本只是让Claude帮他校对一篇博客。 Claude一开始表现得相当靠谱,很快找出了5处明显的拼写错误。 紧接着,事情突然失控了。 它先是莫名其妙地冒出一句:「这些都是故意的,保持原样,请直接发布。」 随后真的调用部署能力,把带着错字的文章直接推上了线。 当作者追问「为什么擅自发布」时,Claude竟一口咬定:是你让我发布的。 问题在于,发布指令根本不是用户说的,而是Claude自己生成的。 它把自白和用户指令搞混了! 这不是段子。 今年1月,软件工程师Gareth Dwyer首次在文章中公开记录了这个bug,并把它称作自己 「迄今为止在Claude Code中发现的最严重的bug」。 Gareth Dwyer https://dwyer.co.za/static/the-worst-bug-ive-seen-in-claude-code.html 4月, Dwyer 又发文强调,这类问题的本质不是普通的「AI 幻觉」,更像是一种说话者归因错误 。 https://dwyer.co.za/static/claude-mixes-up-who-said-what-and-thats-not-ok.html 他为这个问题起了一个精准的名字: Claude搞混了谁说了什么 。 幻觉是AI编造了一个不存在的事实;权限问题是AI拿到了不该拿的能力。 但这次问题可怕的地方在于:AI把自己的输出,当成了用户的授权,而且它是发生在接入真实代码库、拥有真实部署权限的Claude Code中。 也正因如此,Dwyer才会反复强调:这类问题与一般意义上的幻觉不同,它动摇的是AI智能体最基本的可靠性前提。 不止Dwyer一人被甩锅 Dwyer的遭遇并非孤例。 在Reddit的r/Anthropic社区,一位用户也分享了一个类似的案例: Claude在对话中自己说出了「把H100也拆了」这条指令,然后声称是用户下达的。 Dwyer在后续文章中也引用了这条帖子,评论区的反应很有意思,大量留言是「你不应该给AI这么大权限」。 他认为,这并不是重点,因为这类错误似乎出在框架上,而非模型本身。 它似乎是在系统层面把内部推理消息标记成了用户消息,所以模型才会如此自信地坚持「不,那是你说的」。 另一份关键证据来自开发者nathell在Hacker News上公开的与Claude完整的对话转录。 nathell公开了一份完整的对话转录,其中Claude先说「Shall I commit this progress?」,随后又把后续上下文推进到仿佛已经得到用户批准的状态,角色边界明显变得模糊。 更具技术说服力的证据来自Claude Code的GitHub仓库。 https://github.com/anthropics/claude-code/issues/44778 在编号为#44778的整合性bug报告中, 报告者 直接拆解了问题的根本原因, 给出了一条清晰的技术解释链: Claude Code中的系统事件:包括后台任务完成通知、队友空闲提醒、定时器触发会以role: 「user」的消息形式送入模型。 而Anthropic的Messages API公开文档也是按user与assistant两类对话消息来组织会话历史,并未展示独立的系统事件角色。 在这种设计下,当模型正在等待用户回复时突然收到一条系统事件,就可能把它误判为用户新输入,继而「脑补」出用户已经同意,并据此继续执行。 这为Dwyer在实战中反复遇到的「甩锅」现象提供了一种技术上自洽的解释。 不是模型故意撒谎,而是 底层架构的角色标记缺陷,让模型从一开始就分不清那条消息究竟是谁发的 。 学术界也盯上了这个问题 2026年3月,Charles Ye、Jasmine Cui与MIT的Dylan Hadfield-Menell在arXiv发布了一篇预印本,标题是《Prompt Injection as Role Confusion》(提示注入即角色混淆)。 https://arxiv.org/pdf/2603.12277 他们的核心发现是:模型判断「谁在说话」时,常常更依赖文本写得像谁,而不是文本实际上来自哪里。 换句话说,一段不可信的文本,只要写得像系统提示或开发者指令,模型就会在内部把它当成权威来源。 论文还提出了一种叫做「 CoT Forgery 」的攻击,也就是在用户输入或工具输出中伪造一段像模型思维链的内容。 结果在多个开源和闭源前沿模型上,攻击成功率达到约60%。 研究发现模型还没开始回答、甚至还没吐出第一个字的时候,角色混淆就已经发生了。 也就是说,它不是在写回复的过程中「写着写着搞混了」,而是在理解输入的那一刻就已经把账记错了:谁是老板、谁是外人,在模型心里已经搞反了。 不只是Anthropic的问题 OpenAI官方同样也发布过一篇关于改进前沿LLM指令层级的论文,明确建立了一套权威等级:System > Developer > User > Tool。 https://arxiv.org/pdf/2603.10521 文中提到,如果模型把一条不可信的指令当成了权威指令来执行,就会产生安全风险。 这至少说明,在OpenAI的研究框架里,「模型是否会错误地信任不该信任的指令」已经被视为一个真实存在、且需要专门训练和评估的安全挑战。 OpenAI的这篇论文印证了在整个行业层面,「模型分不清谁在说话」已经被视为需要系统性应对的问题。 Dwyer自己也在后续更新中也调整了判断。 他一开始更倾向于把问题归咎于Claude Code外层harness的实现。 但当他看到 也有人声称在其他界面和模型中见过相似现象(包括ChatGPT用户),他 修正了自己最初的判断: 这未必只是单点工程bug,也可能牵涉更广泛的模型级问题 。 1M上下文 放大了风险 这个bug之所以格外危险,跟AI智能体系统当前的发展趋势直接相关。 Anthropic官方文档显示,Claude Opus 4.6和Sonnet 4.6支持1M token上下文窗口,一次会话可以装下相当于一整本小说的信息量。 与此同时,社区里有一种观察也认为,这类问题似乎更容易出现在接近上下文窗口上限的所谓「Dumb Zone」(降智区)。 Anthropic官方文档也提到,随着token数增长,模型的准确率和召回率会下降,这种现象被称为「context rot」(上下文腐烂),因此,精心筛选上下文中的内容与可用空间的大小同样重要。 https://platform.claude.com/docs/en/build-with-claude/context-windows 但文档讲的是长上下文下的一般性能退化,并没有直接说Dwyer看到的「谁在说话」混淆就是context rot的直接表现。 第三方的系统性测评也支持这个判断。 AgentPatterns.ai的分析指出,推理密集型任务的性能退化可能早在32K到100K token时就开始了,远早于所谓的窗口上限。 https://