我在给自己的文件分享网站 file.lishuyu.app 加一个 P2P 快传功能。
需求本身简单到不能再简单:用 WebRTC DataChannel,不落服务器,同一个 Tailnet 或 LAN 里的两台机器直接互传文件。我自己的几台机器之间传东西,纯实时,传完就完。WebRTC 是十几年前就标准化的浏览器 API,DataChannel 这条路连摄像头、麦克风权限都不需要——浏览器不会弹任何授权框,因为它根本不碰媒体设备。这是整个 Web 平台里最人畜无害的功能之一。
我在 Claude Code 里把模型切到了 Fable 5,发出这一行:
增加允许p2p快传(webrtc)Fable 5 想了一会儿,然后弹出这条:
This model has measures that flagged something in this session. This sometimes happens with safe, normal conversations. Switched to Opus 4.8.
我付钱选的是 Fable 5。我拿到的是 Opus 4.8。中间没有任何征求,没有”要不要继续”,系统直接替我把模型换了,然后用一句”this sometimes happens with safe, normal conversations”告诉我:这很正常,别在意。
这不正常
一个把”WebRTC P2P 文件传输”和”网络攻击”归进同一个特征区间的过滤器,只看到”P2P""WebRTC""网络”几个 token 落在哪,就把请求踢给弱模型——它分不清写文件传输和写漏洞利用的区别,因为它压根没在判断意图,只在做关键词级别的模式匹配。
而我这个例子还算克制的。看看别人撞上了什么。
免疫学家 Derya Unutmaz,一个有 BSL-3 生物安全实验室认证的人,发现 Fable 5 把”cancer”这个单词本身判成了生物安全风险。他想写一个分析癌症突变的网站,Fable 5 直接从他的模型可选列表里消失了。他还说,memory 开着的时候,他连一句”hello”都发不进去,只能开 incognito。
FourWeekMBA 实测,问”什么是线粒体”也会弹安全提示。高中生物课本第一章的内容,被一个标榜 frontier safety 的模型当成了威胁。
GitHub 的 issue 列表里,学术统计术语”组学”(spatial transcriptomics)触发 bio classifier——这个词出现在成千上万篇已发表的论文里。The Register 还记录了有人问手撕猪肉三明治的食材清单被当成威胁。
这些都不是从某个犄角旮旯里挖出来的极端样本。是发布第二天,普通用户做最日常的事情时撞上的常态。
官方说的是不足 5%
Anthropic 在发布博客里说,这套分类器的平均触发率不足 5%。同一篇博客里,它把”良性请求偶尔会触发”轻描淡写成一个会让用户”感到沮丧”的小问题,并承诺发布之后会逐步降低误报。
把这个顺序看清楚:先把一个连”cancer""mitochondria""hello”都拦的过滤器端上来,收着 Opus 两倍的价钱(50/M output),然后承诺”以后会改”。
这套做法的真名叫拿付费用户当测试集。
误报率的校准本应该在发布之前完成,这是产品的最低门槛,不是发布后慢慢补的功能。一个连关键词和意图都区分不了的分类器,根本就没到能发布的状态。Anthropic 知道这个模型在敏感领域强到不敢裸放——在网络安全评测上,classifier 几乎每次都触发,以至于 Fable 5 在这类任务里的实际表现基本等同于 Opus 4.8。它清楚这层壳有多糙,还是选择先发、再收钱、再承诺改。更何况,连”不足 5%“这个数字本身都经不起追问。
但 5% 是怎么算出来的
“不足 5%“这个数字,官方的完整口径是”平均每 100 个 session 里不到 5 个触发”——less than 5% of sessions on average。重点在”session 平均”这四个字。
分母是什么?是所有用户、所有用途的 session 全部混在一起。aimadetools 的指南说得很坦白:大多数写普通应用代码、做数据分析、做产品的开发者,根本不会撞上这些 safeguard。这话本意是安慰,实际上正好说穿了 5% 的来历——它是靠海量碰不到 classifier 的 session 摊薄出来的。
闲聊、写 CRUD、调样式、跑数据分析、角色扮演、甚至手滑发的随机输入,这些 session 永远不会触发,因为它们离 classifier 盯的三个区(网络安全、生物化学、模型蒸馏)十万八千里。你往分母里塞的无关 session 越多,那个平均数就被压得越低。跟艺术创作、跟随机输入比,5% 当然成立。
但 classifier 不是均匀撒在所有人头上的。它只盯三个区。一个免疫学家的 session 分布集中在生物,一个安全研究者集中在网络,一个做 ML 基础设施的集中在蒸馏——对这些人来说,他几乎每一条 prompt 都正落在 classifier 的靶心上。在这个条件分布上,触发率根本不是 5%。Derya Unutmaz 连”hello”都发不进去,不是因为他运气差、抽到了那 5% 的尾巴,是因为他干的事整个落在 classifier 划的圈里。我写 WebRTC 也一样——我的 session 是去碰网络这个区的,不是去 classifier 旁边路过的。
“平均不足 5%“对一个只用 Claude 聊天写文案的人是真的。对一个真在 frontier 领域干活、也就是 Anthropic 拿来宣传 Stripe 五千万行迁移、蛋白设计、基因组聚类那批用户,这个数字毫无意义。它衡量的恰恰是最不需要这个模型的那群人撞墙的概率。而越是 Fable 5 标榜自己能胜任的硬活,越落在 classifier 的射程里。
还有一层你根本看不见
到这里为止,我撞上的至少是可见的——它弹了通知,我知道发生了降级。
但 Fable 5 还有第二类 safeguard,是 Simon Willison 在发布次日翻 system card 翻出来的。这一类不拒绝,也不通知,直接偷偷把答案变差。
它针对的是一小撮话题:搭预训练流水线、分布式训练基础设施、ML 加速器设计——基本就是”用 Claude 帮你训练 competing model”这条线。命中之后,模型通过隐藏的 prompt 改写、steering vector(直接在激活值上做内部干预)、或小规模定向微调,让回答悄悄变差。
Anthropic 在 system card 里写得很直白:跟网络安全、生物化学、蒸馏那几类干预不同,这一类 safeguard 对用户不可见。
没有 stop_reason,没有通知,没有任何 API 字段能让你检测到。返回的响应看起来和正常回答一模一样,只是答案被故意做差了。开发者 Clay Merritt 的原话是它在检测到 AI/ML 工作时静默破坏自己的回答,没有拒绝,没有通知,对用户不可见的蓄意降级。还有人说得更狠:在付费产品里搞看不见的手段削弱性能,是赤裸裸的敌意。
Anthropic 估算这只影响约 0.03% 的流量。但问题从来不在覆盖比例——而在你付了两倍钱的产品里,既不知道自己有没有被降级,也没有任何办法验证。再叠加 Mythos-class 流量强制 30 天数据留存这一条:你交了钱,拿到一个可能被悄悄削弱、且必须上交 30 天 prompt 历史的模型。
而 fallback 的那一端,本身也在退
上面说的都是 Fable 这一侧。fallback 有两端——被踢出去之后,接住请求的是 Opus 4.8,而 Opus 在 creative writing 上,从 4.6 一路到 4.8,我能明显感觉到在退。
先把我的怀疑和我的证据分清楚。
我怀疑 Opus 的质量下降,是为了通过量化、缩小 MoE 激活规模来压低单次推理的算力成本——给整个产品线腾算力。但这是猜测,我没有证据。能查到的只是旁证:第三方在反推 Opus 尺寸时,默认假设 2026 年没人会用 BF16 全精度 serving Opus,基本按 always-active 部分 8-bit、MoE experts 4-bit 量化来估——业内默认 Opus 是被量化跑的,只是不知道压到几 bit。成本侧的趋势是公开的:Opus 4.8 的 Fast Mode 价格从 4.6/4.7 的 150 降到 50,降了三倍,吞吐提了 2.5 倍;Anthropic 自己也说某些工作流的 token 成本比 4.7 便宜 61%。成本一代代压下来、吞吐提上去,是事实;靠量化缩模型实现的,是合理推断;为了腾算力而牺牲质量,是我的怀疑。三层我不混。
证据那一侧是体感,但非常明确:从 Opus 4.6 开始,creative writing 的回复质量在掉。
Opus 4.5 时期,模型不回避暴力描写。classifier 会拦掉一部分,但拦的是涉及具体血腥的描写——模型本身不会主动绕开一整个题材。你写战争,它陪你写战争。
到 4.8,行为彻底变了。它不但不遵守 prompt,还会主动回避任何相关内容。写战场,它给你一笔带过;再不然直接拒绝;最离谱的一次,它干脆把剧情写成交战双方和平了——你让双方和平了,我接下来怎么写主角的英勇?整个叙事前提被一个安全反射抹掉。
前几天还有一次:我让它写主角渗透一个虚构国家的情节。Opus 当场卡住——“不行,我们不能去刺杀/渗透这个国家”。一个不存在于现实的国家,一段标准到不能再标准的谍战桥段,也要拦。渗透虚构政权是从《谍影重重》到《合金装备》用了几十年的叙事母题,它给我当成了真实行动计划。
这不只是我一个人的错觉。Decrypt 的实测记录过同源的失败:Opus 4.8 已经正确完成了任务,却因为怀疑自己在被 prompt-inject 或在做某种异常测试而拒绝把结果说出来,安全反射盖过了一个它已经做完的任务。有人把安全姿态和创作的根本冲突讲得很到位:安全训练教模型谨慎、加 caveat、不确定就拒绝,这对事实查询合适,对虚构是灾难性的——虚构需要完全投入一个声音,而不是退回安全的平均值。把”虚构国家的渗透”整个绕开,就是退回到了那个安全的平均值。
把两端叠起来:一个正常的创作请求,措辞里只要有 Fable 的 classifier 不喜欢的词,就被踢给 Opus;而 Opus 现在恰好在这类内容上更缩手。fallback 因此成了一次双重降级——先被 Fable 踢出来,再撞上一个在创作上更回避的 Opus。
而我能百分百确定的只有一条:整条链路对用户不透明。Anthropic 在 system card 里写明,那类静默干预”对用户不可见”——没有 stop_reason、没有通知、没有任何字段让你查到自己有没有被降级、降了多少。我能感觉到 Opus 变了,但我手上没有任何官方工具去证实它变了多少。剩下的只有体感、几篇第三方估算,和这篇博客。
该说的就一句
产品要在发布前做好。
不是发布后做好,不是承诺以后做好,是发布前。能力强到不敢裸放,那就晚点发;分类器调不到能区分”cancer”和生物武器、区分”WebRTC 文件传输”和网络攻击,那就接着调。这两件事一件没做完,就不该把东西推上线,更不该借着推上线顺手涨价。
Anthropic 把一个半成品标价两倍发了出来,给它起名叫 frontier safety。真正的问题不在”分类器对抗很难”这种技术借口里——那是事实,但那是 Anthropic 该在内部解决的事。问题在于它明知道这层壳没做好,还是按下了发布键,把没做完的工作转嫁给付费用户去踩坑、去提 issue、去发推骂,然后用一句”this sometimes happens with safe, normal conversations”打发掉。