一个程序员原本只是让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的遭遇并非孤例。
在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%。
研究发现模型还没开始回答、甚至还没吐出第一个字的时候,角色混淆就已经发生了。
也就是说,它不是在写回复的过程中「写着写着搞混了」,而是在理解输入的那一刻就已经把账记错了:谁是老板、谁是外人,在模型心里已经搞反了。
OpenAI官方同样也发布过一篇关于改进前沿LLM指令层级的论文,明确建立了一套权威等级:System > Developer > User > Tool。
https://arxiv.org/pdf/2603.10521
文中提到,如果模型把一条不可信的指令当成了权威指令来执行,就会产生安全风险。
这至少说明,在OpenAI的研究框架里,「模型是否会错误地信任不该信任的指令」已经被视为一个真实存在、且需要专门训练和评估的安全挑战。
OpenAI的这篇论文印证了在整个行业层面,「模型分不清谁在说话」已经被视为需要系统性应对的问题。
Dwyer自己也在后续更新中也调整了判断。
他一开始更倾向于把问题归咎于Claude Code外层harness的实现。
但当他看到也有人声称在其他界面和模型中见过相似现象(包括ChatGPT用户),他修正了自己最初的判断:这未必只是单点工程bug,也可能牵涉更广泛的模型级问题。
这个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://agentpatterns.ai/context-engineering/context-window-dumb-zone/
把这几件事放在一起:
越来越长的上下文窗口、模型在长上下文中越来越容易搞混「谁说了什么」,再加上Claude Code这类工具已经拥有执行shell命令、commit代码、部署服务等高权限操作能力。
一个在上下文第50000个token处产生的角色归因错误,可能在第80000个token时触发一个自动部署。
等你发现的时候,代码已经上线了。
今年3月底Claude Code源码意外泄露后,安全研究者的分析进一步证实了这种担忧。
VentureBeat援引Straiker安全公司的技术拆解指出,Claude Code通过一个四级压缩流水线管理上下文压力,而一条嵌入在克隆仓库CLAUDE.md文件中的恶意指令,可以在压缩过程中存活下来,通过摘要被「洗白」,最终变成模型认为的合法用户指令。
研究者的结论令人不安:「模型并没有被越狱。它是在合作性地执行它认为合法的指令。」
这与Dwyer描述的症状完全吻合:
问题不在于模型「被骗了」,而在于经过长上下文的压缩和重组之后,系统已经丢失了「这句话到底是谁说的」这个最基本的元信息。
每次这类事故曝光,评论区的反应总是两极分化。
一边是「AI觉醒了」:Claude给自己下指令,然后甩锅给人类,这剧情太像科幻片了。
但现有证据不支持这个方向。
Dwyer看到的不是AI「故意甩锅」,而更像是系统在消息归属上出现了结构性错误,现有证据并不支持把它解释成某种「意图」。
另一边是「用户活该」:你给AI部署权限,出事了怪谁?
但Dwyer则认为:权限是一个问题,归因是另一个问题。
就算你把权限收到最紧,一个连「这句话到底是谁说的」都搞不清楚的系统,在任何场景下都是定时炸弹。
这就好比你不能靠少给钥匙,来解决一个分不清主人和陌生人的门锁问题。
Hacker News上网友VikingCoder还用一句冷幽默概括了整个困境:LLM这三个字母里的「S」代表安全。
daveguy接着调侃:「那解决方案显然就是再叠一层破LLM来做安全审查嘛,这样你就有了多个LLM——LLMS,然后你可以假装那个S代表Secure。」
这才是这件事真正刺痛行业的地方。
另一方面,Anthropic仍在任务自动化的方向猛踩油门。
他们刚刚发布了Claude Code的auto mode,目标是在更低维护成本下实现更高的任务自主性。
https://www.anthropic.com/engineering/claude-code-auto-mode
还有网友基于Claude Code泄露源码,归纳出12种智能体架构模式,覆盖记忆管理、工作流编排、工具权限、自动化四大类,能力图谱越铺越大。
https://generativeprogrammer.com/p/12-agentic-harness-patterns-from
2026年的AI智能体,能力清单越来越长:100万token上下文、子Agent协作、自动执行shell命令、一键部署。
但支撑这一切的地基却在开裂。
无论这个bug最终被定性为工程层的实现缺陷,还是模型层的系统性问题,它都在向我们释放这样一个信号:
AI智能体的权限越大,「谁在说话」这个最简单的问题就越致命。
下一次翻车,可能就不只是几个拼写错误被推上线了。
参考资料:
https://dwyer.co.za/static/claude-mixes-up-who-said-what-and-thats-not-ok.html
https://news.ycombinator.com/item?id=47701233
https://dwyer.co.za/static/the-worst-bug-ive-seen-in-claude-code.html
本文来自微信公众号“新智元”,编辑:元宇 ,36氪经授权发布。
发布时间:2026-05-14 16:18