Claude 现在会给输出打水印,但你的代码几乎不受影响
Anthropic 开始给 Claude 的输出打水印。它到底标记了什么、为什么生成的代码基本逃得掉、谁才真的能检测到,以及为什么你的 SEO 一点都不用动。
Anthropic 发布了一篇帮助文档,说明 Claude 如何标记 AI 生成的内容。不到一天,所有解读就收敛成了一句话:Claude 现在会出卖你,凡是被代理动过的仓库都成了风险。
在大家最在意的那一点上,这个解读是错的。标记确实存在,覆盖全球,而且不可关闭。它针对的也确实是散文,而代码恰恰是散文的反面。下面是真正上线的东西、这套机制用大白话讲是怎么回事、为什么生成的代码是最糟糕的载体,以及为什么那场 SEO 恐慌根本没有依据。
Anthropic 到底交付了什么
Anthropic 签署了 EU AI Act 的 Code of Practice on Transparency of AI-Generated Content。这套标记就是那份承诺的技术落地,它有两种完全不同的形态。
文本拿到的是统计水印。 一枚不可感知的印记,直接织进生成的文本本身。用 Anthropic 的原话说,它“把一枚不可感知的水印直接织进文本本身。你看不见它,它也不会改变 Claude 回复的含义、质量或可读性”。它能挺过复制粘贴,并且“可能在某些编辑之后依然保留”。
文件拿到的是签名的来源元数据。 当 Claude 生成一种受支持的文件类型时,目前是 .svg、.png 和 .jpg,它会附上遵循 C2PA 开放标准的元数据,也就是由 Adobe、Microsoft 和 BBC 支持的那套 Content Credentials 系统。
覆盖范围很广,值得说精确,因为不少评论想当然地以为这只是欧盟限定或 Claude.ai 限定的措施:
| 模型 | 2026 年 8 月 2 日及之后发布的所有模型,发布即带标记 |
| 使用入口 | API、Claude web、Claude Code、Cowork、Tag |
| 云合作伙伴 | AWS、Google Cloud、Microsoft Foundry |
| 地域 | 全球,不只是欧盟 |
水印不是隐藏字符
这是最大的一个误解,也是眼下流传的建议有一半没用的原因。
大家默认这枚印记是被塞进文本里的某种东西:一个零宽空格、一个不常见的 Unicode 变体、一种有辨识度的标点模式。顺着这个假设,结论自然就是“丢进清洗工具跑一遍就没事了”。这行不通,因为压根没有被塞进去的东西可清。
这枚印记,就是那些被选中的词本身。

Anthropic 没有公开自己的算法,这是一个有意为之的选择,后面会回来讲。但他们描述的每一条性质(不可见、位于文本内部、挺得过复制粘贴、需要足够长的文本才读得出来)都对得上已经公开的采样偏置水印家族,也就是 Google SynthID-Text 背后的那套思路,以及在它之前的学术工作。
这个想法比听上去简单。模型每写一步,都要从一组候选里挑出下一个 token。很多时候几个候选几乎等价:快、迅速、飞快、敏捷 都说得通。一把密钥把词表切成受偏好的一组和其余部分,只要偏过去不牺牲含义和质量,采样就往受偏好的那组偏一点。
单独一次这样的选择什么也说明不了。纯靠运气,大约一半的 token 本来就会落在受偏好的那组里。但在几百个 token 的尺度上,这种失衡会累积成可以测量的东西,而握有密钥的检测器可以算出这段文本离随机分布有多远。这个差距,就是全部的信号。
由此直接得出两个结论,它们都比机制本身更重要:
- 长度是硬性条件。 一条推文或一条 commit message 携带不了可用的信号。检测器需要体量。
- 换掉词是唯一能抹掉它的办法。 不是因为这招有多巧,而是因为词就是印记本身。
为什么生成的代码是最糟糕的载体
这正是那场恐慌跳过的部分。采样水印是对选择自由征收的一种税,只有在选择存在的地方才收得上来。散文里选择遍地都是。代码则接近破产。

拿一行再普通不过的代码来看:const user = await getUserById(id)。
const 由这个文件自身的约定决定。getUserById 根本不是选择,它是代码库里已经存在的那个名字,任何“近乎等价”的替代都只会是一个 bug。await 由函数签名强制。括号和参数由语法强制。真正自由的还剩什么?一个局部变量的命名,以及一条注释的措辞。这就是全部的可用信道。
再对比一段散文,那里几乎每个实词都有三四个可以互换的选项。差距不是一点点:一边是每段几十个可承载印记的位置,一边是每个文件只有寥寥几个。
然后,工具链跑了起来。
格式化工具是具体的麻烦所在。prettier、eslint --fix、gofmt、black、rustfmt 存在的意义,恰恰就是把采样水印赖以承载信号的那些近乎等价的表层选择统一掉。对生成的代码跑一遍格式化,功能上等同于给水印做了一次洗白,而且没有任何人是刻意为之。再加上评审时的修改、一次重命名、一次重构,以及同一个文件里生成代码与人写代码的交错:残留信号被摊到那些本来就短得根本没法测量的 diff 上。
诚实的保留意见,因为这是从机制推出来的结论,而不是一份已确认的豁免:Anthropic 没有说代码被排除在外,没有公开算法,也没有发布检测器。Anthropic 之外没有人能测出一个已提交的 .ts 文件里究竟还剩下多少。残留风险最高的场景,是一个很长的生成文件,原样提交、没跑过格式化、也从没被人看过。如果这就是你的工作流,水印是它带来的问题里最轻的一个,而我们关于代理写的代码要不要审查的观点,比这一篇更早适用于你。
什么能抹掉它,以及谁真的能检测到
Anthropic 在讲清限制这件事上少见地直接,这一点值得记一笔。检测到印记,意味着这段内容可能被 Claude 处理过。他们明确说了这不是定论。而没有印记,什么也证明不了。

检测这个问题干净地一分为二,把这两半混为一谈,正是大多数糟糕解读的来源。
文件现在就能被任何人验证。 C2PA 就是普通的密码学签名:私钥签名,公钥验证。任何人都能在 Content Credentials 阅读器里检查一个生成的 .png,Google 也正把这项验证推进到 Search、Lens 和 Chrome 里。这里没有 Anthropic 的特权,而且这个签名还有第二重作用:它会暴露文件在生成之后是否被改动过。
文本不行,今天只有 Anthropic 读得了。 检测需要当初偏置采样的那把密钥。没有它,这段文本在统计上和未标记的文本没有区别。这就是现状,也是“只有 Claude 能抓到你”这种反应的来源。
但这不是他们想要的终局。Anthropic 签署的 Code of Practice 要求他们向第三方提供检测能力,帮助文档也写明他们正在推进让用户和第三方能够检测这些印记,文档随后跟上。
之所以还没上线,是一个真实的两难,而不是拖延:公开一个检测器,等于同时公开了抹掉印记的地图。 给一个人一台能给段落打分的神谕机,他就能反复改写,直到分数掉到阈值以下。Google 在 SynthID-Text 上面对过同样的取舍,最后发布的检测器在脱离配套模型的情况下很难被武器化。对 Anthropic 来说,最可能的结果是一套受控访问的检测 API,带身份核验和配额,而不是人人可用的一键检测页面。
几乎没人注意到的那个细节
印记作用于模型产出的文本。它不区分哪些是 Claude 自己想出来的,哪些只是 Claude 顺手改过的。
让 Claude 改一改你自己写的段落的语法,输出照样带水印。让它把一段话收紧、翻译一句话、或者把你自己的笔记整理干净,结论一样。
这一点朝两个方向切,而且比“丑闻”这种框架有意思得多。它削弱了大家担心的那种指控场景,因为一次阳性检测无法区分“这是 AI 写的”和“这是人写的、AI 润色过”,而这两句话完全不是一回事。它同时也意味着,任何打算把检测当成作者归属证据的人,都建在沙子上。Anthropic 把命中描述为“可能被 Claude 处理过”,实际上已经承认了这一点。
这对 SEO 意味着什么:什么都不变
我们把这个站点的 SEO 完全摆在明面上做,所以对吵得最凶的那部分我们直说:这里不存在排名风险。三个理由,层层叠加。
Google 并不因为内容由 AI 写就处罚它。 政策一直没动过:被制裁的是 scaled content abuse,也就是批量生产、毫无价值的页面。判断依据是质量和有用性,不是词的来源。一篇真正好的文章,仍然是一篇真正好的文章。
何况 Google 根本读不了这个水印。 它被一把 Anthropic 持有的密钥锁着。就算 Google 想把它当成排名信号,也得先和 Anthropic 达成协议才能拿到。没有任何这类消息发布过,I/O 2026 上也没有发布任何针对 AI 所写文本的信号。
真正上线的是媒体来源标注,而且它是一个标签,不是一个因子。 Google 2026 年的工作覆盖图片、视频和音频,走的是 SynthID 和 C2PA,让用户可以在 Search、Lens 和 Circle to Search 里追问某张图是不是 AI 生成的。这是给读者的透明度,不是撬动排名的杠杆。
确实有一个真实的实际后果,而且它关乎你的图片而不是你的文字。如果你发布由 Claude 生成的视觉素材,它们现在带着 Content Credentials,Chrome 和 Search 会越来越有能力给它们打上标签。效果不是降权,而是点击率和信任:一张被标为 AI 生成的头图,读起来和一张照片不是一回事。
在有人过度设计应对方案之前,值得先知道:大多数图片处理链路早就在没人要求的情况下把 C2PA 抹掉了。 sharp、next/image、构建期压缩、一个实时重新编码的 CDN,全都会丢掉这些元数据。在一个典型站点上,来源信息在浏览器看到它之前很久就已经没了。这个结果是双刃的。它顺手了结了标签这个问题,但一旦用途落进监管范围,刻意剥离来源信息本身就成了合规问题;如果你要面向欧盟发布,这个问题应该和AI 辅助工作的 GDPR 一面放在一起看。
真正该做的事
清单很短,因为要做的事比讨论的声势少得多。
- 代码这边,什么都不用做。 不需要清洗工具,不需要剥离器,不需要改工作流。没有东西可以移除,而你的格式化工具已经比你能加的任何工具做得更多。
- 继续审查生成的代码,理由和以前完全一样。水印一条也没改变。
- 对图片做一个有意识的决定。 如果你发布 Claude 生成的视觉素材,搞清楚你的处理链路是保留还是剥离 Content Credentials,并且让它成为一个决定,而不是一个意外。
- 不要去追求给文本去水印。 唯一可靠的去除方式是自己把文本重写一遍,而如果你打算自己重写,这个问题早就自己回答了自己。
- 去担心质量。 scaled content abuse 才是真正让你掉排名的东西,而且早在任何水印出现之前,它就已经在让人掉排名了。
这项措施是一份透明度义务,文档写得诚实,连它自己的作者都小心地把限制一条条说了出来。它比舆论反应所暗示的要小得多,而对任何用代理交付代码的人来说,它几乎等于什么都没发生。
如果你在有规模地跑代理,真正值得你关注的运营问题还是老那几个:代理动过什么,什么被审查过,什么上了线。这正是 AgentsRoom 存在的意义,把这部分变得看得见。
下载 AgentsRoom
在一个窗口中运行你所有项目的 AI 智能体(Claude、Codex、Antigravity CLI、OpenCode、Aider、Grok Build、Mistral Vibe、Kimi Code)。
配套应用:随时随地监控你的 Agent
使用 Claude、Codex、Antigravity CLI 或其他 AI 提供商。
把 Bug 和需求直接发送到您的公开待办清单。
AgentsRoom 实际运行一瞥。
继续阅读
Claude Code一次只保持一个登录状态,这是同时运行多个账户的方法
在同一台机器上同时运行工作账户和个人账户的实战指南:决定哪个登录状态生效的那个环境变量、为什么开到第三个终端后shell方案就不管用了,以及如何为每个项目固定一个账户。
阅读全文一次 Claude Code 会话会触发 30 个 hook 事件。只有 3 个能回话。
Claude Code hook 事件的完整清单:每个事件何时触发、其中哪 15 个能阻断,以及那条悄悄吞掉大部分 hook 输出的 stdout 规则。一份在数千次代理会话的生产环境中跑出来的实战参考。
阅读全文给 AI 智能体用的反馈看板:让用户来写提示词
反馈工具只负责收集需求,没有一个能把需求做出来。当用户写入的那块看板,正好就是编码智能体执行任务的那块看板,重写这一步就消失了。
阅读全文