
新智元报道
编辑:元宇
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://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
