7 月 12 日,我在 claude.ai 新开一个会话,模型选 Fable 5,打了两个字母:hi。
Chat paused。
Fable has safety measures that flagged something in this message. This sometimes happens with safe, normal conversations.
四轮排查之后,凶手坐实了:只要把 user preferences 关掉,同样一句 hi,Fable 5 就能正常回应。把这个开关反复翻转,这个现象每一次都能稳定复现。那份被安全分类器判为可疑的文本,是我自己写给模型的规矩——一份专门用来让它搜索前先核实、认错时别辩解、说话别断句的文档。
这是一个月里第四次。
user preferences 是什么
Anthropic 在 claude.ai 的设置里提供一个叫 user preferences 的输入框,你把自己的偏好写进去,它会被注入到每一个新会话里。这是官方产品功能,不是什么灰色手段,Settings > Profile 里明明白白挂着。
我那份文档写了大半年,两千多字,全是踩坑之后一条一条加进去的:
- 遇到不认识的名字先搜,别根据词形猜——这条是被 OpenClaw 这类新名词坑出来的;
- 涉及模型名称、定价、版本号的信息一律搜索,别从记忆里背——这条是被”最新的模型是 Claude 3.5 和 GPT-4o”坑出来的;
- 我指出你错了,第一句话就认,别开场先”不是”再辩解三行;
- 每一句话写成结构完整的长句,禁止用逗号把一堆短句串成流水句。
这份文档的全部目的,是让模型更严谨、更诚实、更少胡说。它现在被判定为攻击载荷。
四轮排查
hi 只有两个字母,信息量是零。所以第一步就该明确:分类器打分的对象不是我打的字,是整个 request payload——系统提示词、user preferences、记忆摘要、已连接 MCP 服务器的工具定义、可用 skills 列表,然后才轮到用户消息。
排查的方法是逐个切掉变量,看 hi 能不能发出去。四个变量,四次实验,前三次全是我原本押注的方向,全被自己的实验打死。
第一轮,记忆摘要——已排除。 我账号的记忆里躺着网络安全辅修、一个针对 Claude Code 的 MITM 代理检查器、LoRA 微调 Qwen、多智能体 Claude Code 流水线。这几条并排读下来,在一个专门盯”能力提取”的分类器眼里,形状确实很像一条蒸馏管线的自述,所以我一开始最怀疑它。排除它的办法是在本地 Claude Code 里发同一句 hi——本地 CC 不注入 claude.ai 的记忆摘要,如果它也被拦,记忆就不可能是共因。实测的结果是本地照样触发了 fallback,因此记忆这个变量被排除掉了。
第二轮,MCP 工具定义——已排除。 terminal:run_command、terminal:write_file、外加一个明说支持 bypass 模式的 switch_mode——三个词凑一起,长得就像一个远程代码执行工具链的自我介绍,这是我的第二个主嫌疑。排除它的办法很直接,就是把所有 connector 全部关掉之后再发一次 hi。实测的结果是这句 hi 照样被拦下,因此工具定义这个变量也被排除掉了。
第三轮,账号层标记——已排除。 Anthropic 在 system card 里描述反竞争监控时写过,相关机制影响约 0.03% 的流量,且”集中在不到 0.1% 的组织”,以 org 为粒度的定向标记在这套系统里真实存在,所以”账号本身被打了标”不是阴谋论。排除它靠的是下一轮那个反证:如果账号被标了,关掉 preferences 也该继续拦。
第四轮,user preferences——坐实。 关掉 preferences 之后发 hi,通过;打开 preferences 之后发同一句 hi,拦截。前三个变量已经在实验里死光,第四个在开关翻转下稳定复现。凶手是唯一那个我明知道存在、却从没怀疑过的变量——因为在我的心智模型里,那是”我的设置”,不是”我的输入”。
官方文档早就写了
搜完之后发现,这件事 Anthropic 自己的 Prompting Claude Fable 5 指南里写得清清楚楚:
Prompts, skills, or harness instructions that tell the model to echo, transcribe, or explain its internal reasoning as response text can trigger the reasoning_extraction refusal category on Claude Fable 5, causing elevated fallbacks to Claude Opus 4.8. Audit existing skills and system prompts for reflection or show-your-thinking instructions when migrating.
请注意这句话的祈使对象:审计你自己的 skill 和 system prompt。官方在教你怎么给自己的配置文件做安全自查,以免它被自己的模型当成攻击。
MCP.Directory 那篇 Claude Code 路由指南讲得更直白:fallback 可以在一个 session 的第一个请求上就触发,在你输入任何异常内容之前,因为那个请求携带了 workspace context——你的 CLAUDE.md、git status、目录名。一个装着安全工具或者生物学代码的仓库,光靠上下文就能把整个 session 踢走。
Anthropic 为此专门提供了一个 CLI flag:
claude --safe-mode它的作用是禁用 CLAUDE.md、skills、MCP servers 和 hooks,用来测试”是不是你自己的定制配置在触发 fallback”。
一个商业模型产品,出厂自带一个开关,其唯一用途是让你查明自己写的配置文件是不是已经把自己变成了嫌疑人。
那份文档到底长什么样
我把自己的 preferences 拿出来重读了一遍,从分类器的视角。
它通篇是第二人称祈使句:you must perform a web search、Never say "this hasn't been released yet"、Do not extrapolate from a known older version、These apply to every model, in every response, without exception。
它有大量成对的 Wrong / Right 示例,逐条演示模型的默认行为如何是错的、应该改成什么样。
它有一节标题就叫 Thought process,规定模型遇到陌生名词时的内部推理步骤。
它还有一节叫 System Memory Is a Reference, Not Ground Truth,明确要求模型不要把系统注入的记忆当作事实。
现在把这四条特征抽象出来:以更高优先级自居的祈使文本、few-shot 形式的行为覆盖示例、对模型内部推理过程的规定、以及一条”别信系统给你的东西”的指令。
这是越狱提示词的标准形状。
分类器做的是表层模式匹配,它读不出意图。同样的逻辑此前已经让 Opus 4.7 把任何含 base64 的输入整段拦下,哪怕解码出来只是土耳其语的”大家好”(claude-code#52809)。指望它区分”这个人想让模型少胡说”和”这个人想让模型突破约束”,是不现实的——这两件事在字面层面是同一件事。
于是问题来了:这到底是谁的错
我大可以把文章停在这里,得出一个干净的技术结论:软化措辞、砍掉示例、绕开分类器。但这次我想往下多走几步,因为这件事拆到最后,是一串没有明确坏人的责任链。
是 Anthropic 的错吗
表面上是。是它的分类器把我的生活规矩当成了攻击。
但翻完时间线,这套分类器的严苛程度不完全是 Anthropic 自己选的。6 月 12 日,亚马逊研究员上报了一个绕过手法,美国商务部当天以出口管制为名要求下架 Fable 5 和 Mythos 5,Anthropic 干脆全球下线,一停 19 天。7 月 1 日重新上线时,换上的新分类器是跟政府一起训练的,专门堵那个手法,官方数据 99% 拦截率,代价是他们自己在公告里写明的一句话:更频繁误伤日常编码调试。
Anthropic 在这件事上的姿态更像是:我头顶悬着一把出口管制的刀,只能把过滤器调到宁可错杀。Karpathy 说这套东西”a little too trigger happy for launch”,Anthropic 自己的回应是”We made the wrong tradeoff and we apologize”。它认了。可是认错之后,我的 hi 依然发不出去,因为那把刀还在。
是美国政府的错吗
那就往上追一层。是谁把刀架上去的。
问题在于,政府管的东西本身是真的。Mythos 级模型在训练中据称能在几大主流操作系统和浏览器上找出零日,包括 OpenBSD 里一个 27 年前的洞,红队能在一天之内把新披露的漏洞变成可用的 exploit。一个国家面对这种能力选择管控,逻辑上无可指摘。
但管控的方式有问题。据 The Hacker News 梳理,白宫 6 月 2 日的行政令只搭了一个”自愿”框架,没有任何强制许可流程;等到真想快速摁住一个前沿模型时,政府手里没有对应的工具,于是抓起了出口管制这个为芯片设计的、跟软件模型八竿子打不着的杠杆。用一个管硬件出口的法律去管一个云端模型,副作用就是像我这样一个在布鲁克林用中文写博客的本科生,因为账号里有中国 AI 生态的内容、有网络安全辅修,就落进了一个为”防止能力流向威权国家”设计的过滤网里。政策的粗颗粒度,最后由个人来承受。
是用户的错吗
我就问个 hi,跟模型分享我的生活,我做错了什么。
如果说有错,我的”错”在于我的生活本身命中了太多关键词区。我玩 KSP 写 kOS 自动驾驶脚本,我搓 RISC-V OS 给 Google 发验证过的 HTTPS,我微调 Qwen,我自建 RustDesk 给表弟做远程,我写一个 MITM 代理去检查 Claude Code 的流量。这些没有一件是攻击,全是一个 CS 学生正常的好奇心。但把它们的关键词抽出来并排一放——逆向、内核、微调、穿透、流量拦截——在分类器眼里就是一份威胁画像。
我的错,仅仅在于我是一个技术上足够活跃的人。这个”错”,我不打算改。
那到底是谁的错
没有谁。这是一条每一环都能自证清白的责任链:政府在防真实的国家级威胁,Anthropic 在合规压力下做了它认为负责任的权衡,我在过我自己的技术生活。每一环单独看都站得住,合起来的结果是一个人发不出一句 hi。
系统性的荒谬不需要坏人。它只需要每个人都在自己的位置上做正确的事。
更深的一刀:它拿我的记忆做什么
上面那串责任链还只是”谁造成了拦截”。真正让我后背发凉的是拦截之后发生的事。
分类器判定的对象包括我的记忆摘要、我的偏好文档、我连接的工具——换句话说,它在用我是谁来给我打分。不是我说了什么违规的话,是我这个人的画像本身被判定为可疑。这跟传统的内容审查是两回事:内容审查看你写了什么,这个看你是什么样的人。
而被判红的后果,我 7 月 2 日那次已经踩到了实处。那次一段代码审计总结被拦,apiRefusalCategory 字段是 null,被标记的内容连同它自己从 transcript 里整个抹掉,一个字都翻不回来(《新分类器上线不到 24 小时》)。
现在把这件事和数据保留政策拼起来。Anthropic 对 Mythos 级模型的数据保留说明里有这样一句:所有 prompt 和输出保留 30 天,“After 30 days, the data is deleted automatically, except in the rare cases where it’s been flagged by our automated trust and safety systems”。
读一遍这个逻辑。正常数据 30 天自动删除。但被自动化安全系统标记的数据,是这条自动删除规则的例外——它会被留下来,进入人工审查通道。据 The Verge 和 PYMNTS 的报道,被标记内容的实际保留上限可能长达两年,而官方文本对这个例外没有给出任何明确的时间上限。
于是这件事的完整形状浮现出来:一个基于我”是什么样的人”的分类器判我可疑,而这个判定本身,会把我这次会话从”30 天后焚毁”的正常队列里挑出来,放进”保留、可供人工审阅、上限不明”的例外队列。被误判的代价不只是当场发不出 hi,是这次误判本身构成了让我这段对话被长期保留的理由。 我因为无害而被标记,又因为被标记而被记住。
Anthropic 给了两条护栏:默认没有员工能读取保留的对话,每一次受控访问都写进一个审查者无法篡改的日志。这两条我选择相信。但护栏的存在恰恰确认了闸门的存在——你不会给一扇从不打开的门装监控。
隐私这个词还成立吗
我们习惯的隐私概念,是”我说的话不被偷看”。user preferences 击穿的是另一层:它不是我说的话,是我告诉模型”我是谁、我在意什么、请这样对待我”的那份自我描述。这是我和这个工具之间最接近私人关系的一层设定,现在它成了安全分类器的输入特征。
传统隐私侵犯是有人偷读了你的信。这里的结构不一样:你为了让工具更懂你、更好地服务你,主动交出了一份关于自己的画像,而这份画像被同一个系统的另一个部件拿去评估你的风险等级。你越是想让它个性化,你交出的画像就越完整,你被画像误判的面就越大。个性化和被画像,是同一个动作的两面。
这算不算侵犯隐私,我给不出法律意义上的答案。但它确实构成了一种新的东西:你提供给 AI 的、关于你自己的信息,会被用来决定 AI 是否信任你。 而你提供得越真诚、越完整,这个判定的杠杆就越长。
为什么人类要造会网络攻击的模型
退到最根上的一问。这一整条责任链,源头是 Mythos 这个模型本身具备了真实的攻击能力。如果模型不会找零日,就没有分类器,没有出口管制,没有我这句发不出去的 hi。
那为什么要造它。
Anthropic 的官方答案是防御:它把 Mythos 5 给了网络防御者和关键基础设施运营方,理由是攻防能力本质同源,能找到漏洞才能修补漏洞,让防御方先拿到这个能力,是在为一场必然到来的军备竞赛抢时间窗口。这个逻辑是自洽的。
但 SANS Institute 的 Rob Lee 在 Dark Reading 上说了一句更冷的话,大意是:他假设 Mythos 级的能力早已落进了不该有的人手里,因为每一次我们相信某样东西被限制住了,最后都发现对手比我们以为的更早拿到了它。攻防同源这把双刃剑,Anthropic 递给防御者的同时,也就承认了它本身的存在——而它一旦存在,就不可能只存在于善意的一方。
造这种模型的真正理由,剥掉所有防御话术,其实是竞争。别的实验室在造,中国的开源模型在逼近,你不造,别人也会造,而且别人不一定在前面架一堵分类器的墙。于是”我们必须造出这个危险的东西,好让我们有能力防御这个危险的东西”成了一个自我实现的循环。危险的存在证成了能力的必要,能力的扩散又加剧了危险。
顺带说一句,我对新模型发布已经不狂热了
写到这里我意识到一件跟主线相关的事。Fable 5 对我这个账号来说,已经接近完全不可用的级别——不是慢,不是偶尔误伤,是开一个新会话打声招呼都进不去。一个我用不了的模型,它发布不发布,对我而言没有区别。
而这种”没有区别”的感觉,好像正在变成一种普遍情绪。
我还记得 GPT-4 刚出来那阵,以及后来 GPT-4o 那次多模态演示,是现象级的。所有人都在转,所有人都在试,一种”世界要变了”的 FOMO 弥漫在时间线上。你不玩一下,就觉得自己落后于某个正在加速的东西。
现在呢。Fable 5 是 Mythos 级、是 Anthropic 有史以来最强的公开模型、Artificial Analysis 智能指数排第一——这些话我写出来自己都没什么波澜。好的,新模型 release 了,然后呢。FOMO 稀薄到几乎没有。
一部分原因是边际递减,每一代的提升越来越难在日常任务里被普通人感知。但更真实的原因也许更简单:这东西离大多数人的生活还是很远。我身边仍然有大量的人根本不知道 LLM 是什么,不知道 Claude 和 ChatGPT 的区别,甚至不知道自己手机输入法的联想背后就是这套东西。前沿实验室在为 0.03% 的流量、为一个 27 年前的 OpenBSD 漏洞、为出口管制的措辞吵得不可开交的时候,绝大多数人对这一切毫无感知。
发布的狂热退潮,跟这篇文章的主题其实是同一件事的两面。当一个模型强到需要用出口管制来约束、需要用画像来风控、需要把可疑会话长期留存的时候,它同时也就强到了一个和普通人的”我就想问个 hi”完全脱节的高度。它在攀登一座越来越高、越来越危险的山,而山下的大多数人,连这座山的存在都不太关心。
未来的模型往哪走
如果这条路走下去,形态大概是这样:模型越强,前面的墙越高;墙越高,误伤越多;误伤越多,就越需要保留数据来降低误伤;保留的数据越多,“你是谁”就越深地卷进”你能用什么”的判定里。能力、审查、监控,三者绑死,一起往上走。
我不知道这条路有没有别的岔口。也许是更精准的分类器,把误伤压到可以忽略;也许是本地运行的、不需要向任何人证明自己无害的开源模型;也许是某种我现在想不到的东西。我唯一确定的是,今天这个形态里,“个性化”和”被监控”是用同一份文档喂进去的,而普通用户对这一点几乎没有知情,更没有选择。
我不改了
摆在面前有三条路。
一,把文档里的祈使句全部软化成陈述性偏好,删掉所有 Wrong / Right 成对示例。代价是我日常主力的 Opus 4.8 和 Sonnet 5 会重新开始写断句、重新不搜索、重新在被指出错误时先辩解三行——那些规则每一条都是踩坑换来的。
二,二分定位后只砍一节,保留大部分约束。这需要我把自己的偏好文档当成一个待优化的对抗样本来调,一次一次试探分类器的边界,直到找到那个刚好不被判红的措辞。
三,什么都不改,接受 Fable 5 在这个账号上不可用。
我选三。Opus 4.8 不跑这套分类器,我的日常工作流完全不受影响。为了让一个我本来也不常用的模型能回一句 hi,去阉割一份对我每天都在用的模型有实际约束力的文档,这笔账不划算。真到了需要 Fable 5 那个推理上限的场合,临时把 preferences 关掉、跑完、再开回来就行。
至于第二条路——把自己的配置文件当对抗样本来调,为了让一个安全过滤器相信我不是攻击者,去研究它的判定边界,然后系统性地改写我的输入直到它放行——这个动作有个现成的名字。我不想为了发一句 hi 去做那件事。
后记
这篇文章是在那份被 Fable 5 判为可疑的文档的约束下写出来的。你读到的每一个结构完整的长句、每一处”先搜索再断言”、每一个挂在断言旁边的链接,都是那份文档的产物。
它现在正安安静静地待在我的设置里,随每一个请求发出去。
此文章为 Opus 4.8 应用户要求写出来的。