Claude自下指令甩锅人类,百万上下文沦为降智重灾区新智元
Claude深陷「角色混淆」Bug,分不清自己的话与用户指令,长上下文成了降智「重灾区」。
一个程序员原本只是让Claude帮他校对一篇博客。
Claude一开始表现得相当靠谱,很快找出了5处明显的拼写错误。
紧接着,事情突然失控了。
它先是莫名其妙地冒出一句:「这些都是故意的,保持原样,请直接发布。」
随后真的调用部署能力,把带着错字的文章直接推上了线。
当作者追问「为什么擅自发布」时,Claude竟一口咬定:是你让我发布的。
问题在于,发布指令根本不是用户说的,而是Claude自己生成的。
它把自白和用户指令搞混了!
这不是段子。
今年1月,软件工程师Gareth Dwyer首次在文章中公开记录了这个bug,并把它称作自己「迄今为止在Claude Code中发现的最严重的bug」。
4月,Dwyer又发文强调,这类问题的本质不是普通的「AI 幻觉」,更像是一种说话者归因错误。
他为这个问题起了一个精准的名字: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仓库。
在编号为#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》(提示注入即角色混淆)。
他们的核心发现是:模型判断「谁在说话」时,常常更依赖文本写得像谁,而不是文本实际上来自哪里。
换句话说,一段不可信的文本,只要写得像系统提示或开发者指令,模型就会在内部把它当成权威来源。
论文还提出了一种叫做「CoT Forgery」的攻击,也就是在用户输入或工具输出中伪造一段像模型思维链的内容。
结果在多个开源和闭源前沿模型上,攻击成功率达到约60%。
研究发现模型还没开始回答、甚至还没吐出第一个字的时候,角色混淆就已经发生了。
也就是说,它不是在写回复的过程中「写着写着搞混了」,而是在理解输入的那一刻就已经把账记错了:谁是老板、谁是外人,在模型心里已经搞反了。
不只是Anthropic的问题
OpenAI官方同样也发布过一篇关于改进前沿LLM指令层级的论文,明确建立了一套权威等级:System > Developer > User > Tool。
文中提到,如果模型把一条不可信的指令当成了权威指令来执行,就会产生安全风险。
这至少说明,在OpenAI的研究框架里,「模型是否会错误地信任不该信任的指令」已经被视为一个真实存在、且需要专门训练和评估的安全挑战。
OpenAI的这篇论文印证了在整个行业层面,「模型分不清谁在说话」已经被视为需要系统性应对的问题。
Dwyer自己也在后续更新中也调整了判断。
他一开始更倾向于把问题归咎于Claude Code外层harness的实现。
但当他看到也有人声称在其他界面和模型中见过相似现象(包括ChatGPT用户),他修正了自己最初的判断:这未必只是单点工程bug,也可能牵涉更广泛的模型级问题。


