# Claude给每句话都加了水印，到底是什么原理？

> 龙虾AGI通用实验室 · 2026-08-12

## 一、一条让人困惑的新闻

8月11日，Anthropic宣布：从8月2日起，所有新的Claude模型会在生成的文本中嵌入一种"不可见的水印"。复制粘贴之后依然存在。全球生效。

我第一反应是：水印？在纯文本里？

图片可以加水印，我理解。PDF可以嵌元数据，我也理解。但一段纯文字，你复制出来就是一串字符，粘贴到任何地方都只是字符。字符就是字符，"你好"就是"你好"，你怎么可能在里面藏东西？

它又说水印"不改变文本的含义、质量和可读性"。也就是说你读起来跟没加水印时一模一样，但里面就是有一个隐形的标记。

这听起来几乎像是在变魔术。

所以我就很想搞清楚一件事：这个魔术的机关到底在哪里？

## 二、一个必须先理解的前置知识

要理解水印，得先理解语言模型生成文本的方式。

很多人以为AI写字的过程是：想好要说什么，然后一句话一口气写出来。

不是的。它是一个词一个词往外蹦的。每一步都在做一件事：根据前面已经有的内容，算出下一个词最可能是什么。

但"算出来"不是说它直接给一个确定答案。它给出的是一个概率表，词表里的每个词都有一个分数。

比如它写到"今天天气真"，下一个词的概率分布可能是：

"好" 35%

"不错" 20%

"棒" 12%

"舒服" 8%

……

然后系统掷一次骰子，从这个分布里随机抽一个词。假如这次抽到了"不错"，文本就变成"今天天气真不错"，然后继续往下算下一个位置。

注意这里有一个细节，等会儿非常关键：**"不错"被选中，有很大的随机成分。** 下次碰到同样的位置，骰子可能掷出不同的结果，就选了"好"。这两个选择都完全合理。

记住这个随机性。水印的全部秘密都藏在这里。

## 三、第一种思路：偷偷调高某些词的概率

最容易想到的水印方案是什么？

既然每一步都要掷骰子选词，那我在骰子上做手脚不就行了？让模型更倾向于选某些词，只要我知道"做了什么手脚"，事后检查文本就能验证水印是否存在。

2023年的一组研究者就是这么干的。他们的方案叫KGW，俗称"绿色词表"方案。

过程是这样的：模型每要生成一个新词，系统就拿前面已经有的内容和一个秘密密钥做一次哈希运算，用运算结果把整个词表随机劈成两半。一半叫绿色组，一半叫红色组。然后给所有绿色词的分数人为抬高一截。

还是那个例子。假设这一步的哈希结果把"好""棒""舒服"分到了绿色，把"不错""差"分到了红色。抬分之后：

"好"从35%变成了45%，"不错"从20%降到了10%。

"不错"本来是个很好的答案。它被压低的唯一原因，就是秘密算法碰巧把它分到了红色组。

检测的时候，拿同一个密钥对文本里的每个位置重新算绿红划分，然后数：有多少词落在了绿色里。比例显著高于50%，就是有水印。

原理就这么简单。

但想到这里，你可能会觉得哪里不对。

## 四、等一下，这不是在让AI说"不太对的话"吗？

这正是我一开始的反应。

你想想看。模型原本认为"不错"有20%的概率，是一个完全合格的好答案。现在它被压低了，不是因为它不好，而是因为一个跟用户提问毫无关系的算法把它归到了红色组。

这意味着什么？模型在回答问题的同时，还在满足另一个额外的任务：让绿色词多出现一些。这两个目标不一定冲突，但也不一定兼容。

它相当于给模型加了一个约束，但这个约束的目的不是帮用户回答问题，而是打水印。

这一定会影响生成质量吧？

确实有学术实验量化了这个影响。加了水印之后，翻译任务的BLEU分数从21.8降到19.5，摘要任务的BERTScore从32.70降到31.21。不是理论上的担忧，是实测出来的退化。

所以结论似乎很清楚了：水印本质上是在"检测能力"和"生成质量"之间做取舍。想要水印更可靠，就得把绿色词的分数抬得更高，但质量损失也更大。你不可能同时拥有完美的水印和完美的输出。

对吧？

如果你觉得这个推理没问题，那接下来的东西可能会让你有点意外。

## 五、一种反直觉的可能：加了水印，但什么都没变？

有一种更精巧的水印方案，直接挑战了上面的逻辑。

回到那个生成过程。模型算出"好"35%、"不错"20%、"棒"12%。然后要掷骰子选一个。

绿色词表方案动的是分数本身。

这种新方案什么都不动。概率分数一个数字都没改。它动的是骰子。

什么意思呢？

原来模型掷的是一个真正的随机骰子。现在换成了一个由密钥控制的"假骰子"。这个假骰子的统计性质跟真骰子完全一样，长期来看每一面朝上的概率相等。但具体每次掷出几，是密钥说了算。

效果是什么？

一个不知道密钥的人，观察模型的大量输出，会发现"好"出现大约35%，"不错"出现大约20%，跟没有水印时一模一样。看不出任何异常。概率分布完全不变。

但知道密钥的检测者，可以验证每一次选词是否与密钥指定的"应该选的那个"一致。如果一致率高得不可能是巧合，那就是有水印。

这就奇怪了。概率分布没变，质量怎么可能下降呢？

确实可以不下降。这类方案在学术上叫"无失真水印"（distortion-free watermark），理论上可以证明它不改变模型的边际输出分布。

但等等。如果什么都没变，信息从哪里来？凭什么就能检测出水印？总得有什么东西变了吧？

## 六、变的不是分布，是"自由"

这是我觉得整个话题里最微妙的一个点。

没有水印的时候，模型面对"好"35%、"不错"20%，它是真的在随机选。这次可能选"好"，下次可能选"不错"，没有规律。

有了水印之后，同一个位置，密钥指定了选"好"，那就一定选"好"。模型失去了"碰巧选中'不错'"的自由。

但这种"自由"重要吗？

对用户来说，"今天天气真好"和"今天天气真不错"没有任何区别。你问天气怎么样，模型说"真好"还是"真不错"，你根本不在乎。

这就触及了一个关于语言的有趣事实。

自然语言有大量的冗余。同一个意思，可以有几十种说法："因此"和"所以"，"但是"和"不过"，"首先"和"第一"，"这个方案效果不错"和"该方案表现良好"。用户对具体选哪个几乎没有偏好。

模型每遇到一个这样"怎么说都行"的位置，水印就可以偷偷占用一点自由度，编入一点信号。

单个位置的信号极其微弱，看一个词什么都看不出来。但一篇两千字的文章可能有几百个这样的位置。几百个微弱信号累积起来，统计置信度极高。

所以长文本反而是水印最舒服的场景：每个位置的干预轻到几乎不存在，靠数量取胜。而一条几十字的短回复，位置太少，信号不够，检测反而不可靠。

想到这里，我觉得可以重新回答前面那个问题了：水印到底有没有在"让AI说不太对的话"？

更准确的说法是：**水印没有让AI说错话，它只是在AI本来就无所谓的地方替它做了选择。**

不是在"正确答案"和"错误答案"之间为了水印选后者，而是在大量"同样正确"的表达之间，选了满足密钥规则的那一个。

## 七、那如果AI"不是无所谓"呢？

前面说水印利用的是模型"怎么说都行"的位置。但不是所有位置都有这种自由度。

"中华人民共和____"，后面只能是"国"。

"2 + 3 ="，后面只能是"5"。

写Python的时候，def main(后面的结构高度受限。

这些地方，模型的概率分布极其集中，几乎全部概率都堆在一个词上。学术上叫"低熵位置"。

在这些位置，如果水印的密钥碰巧要求模型选一个不同的词，怎么办？

一个合理的水印算法会选择放弃。宁可这个位置不嵌水印，也不能让模型输出"中华人民共和**军**"。

所以水印的工作模式其实是这样的：在高熵位置（"怎么说都行"的地方）安静地嵌入信号，在低熵位置（"只能这么说"的地方）安静地沉默。

这也引出了一个有意思的推论：如果一整段文本全是低熵内容，比如一张纯数字的表格、一段JSON、一串严格的代码，水印几乎无处可嵌，检测也就基本失效。

代码比散文难打水印，散文比口语难打水印。不同类型的内容，可水印性天差地别。

## 八、那我把水印洗掉不就行了？

这大概是所有人听到水印之后的第一个实用问题。

答案是：可以洗，而且不难。

原理也很直接。水印的信号存在于特定的选词里，那只要把词换掉，信号就没了。

最简单的方法：把Claude的输出扔进另一个没有水印的模型，让它理解原文的意思，然后用自己的话重新说一遍。新模型的选词过程不受Claude密钥的控制，生成出来的文本自然不带原来的统计模式。

来回翻译也有效。中文翻成英文再翻回来，大量措辞被替换，原来的信号就稀释了。

大幅度的人工改写同样可以。你把一段话拆散重组，换掉足够多的词，信号就低于检测阈值了。

学术上把这类攻击叫"改述攻击"，有研究针对七种文本水印方案设计了定向重写，报告了接近100%的攻击成功率。

这也是为什么Anthropic自己的措辞非常克制："可能在一些编辑后仍然存在。"（may persist through some editing。）"可能""一些"，每个字都在留余地。

不过有一点值得注意。如果Anthropic用的不是基于单个词的统计水印，而是更高级的"语义水印"（学术上已有原型，比如SemStamp），那简单的同义词替换可能不够。因为语义水印的检测器看的不是"你用了'因此'还是'所以'"，而是"这句话的整体语义落在了空间里的哪个区域"。换几个词而意思不变，它可能还是检测得到。

Anthropic具体用了哪种方案？目前不知道。技术文档仍然是"即将发布"的状态。

这件事有趣的地方在于：如果未来所有主流AI都加了水印，"去水印"本身就会变成一种产业需求，进而催生一轮持续的技术攻防。水印方案越来越鲁棒，去水印工具越来越精细，双方不断升级。就像杀毒软件和病毒的关系。

## 九、比技术更有意思的：水印暴露了语言的什么秘密？

到这里技术层面的东西基本讲完了。但我觉得最值得多想一步的，不是水印本身怎么做，而是它能做成这件事所揭示出的一个关于语言的事实。

水印之所以能成立，前提是：自然语言的冗余度远比我们平时感受到的要大得多。

我们说话写字的时候，感觉每个词都是自己"选"出来的。但仔细想想，大量的选择其实是无意识的、随意的。你写"因此"而不是"所以"，说"比较显著"而不是"相当明显"，先摆论据再给结论还是反过来，这些决定在大多数时候对你想传达的意思没有任何影响。你只是碰巧选了一个。

而水印证明的是：在这些"碰巧"的选择里，可以偷偷藏进一整套隐形的信息系统，读者完全不会察觉。

这其实就是经典的隐写术。自然语言天然是一个绝佳的隐写载体，因为它的表层容量（有多少种说法）远大于它实际需要承载的语义信息量（要表达什么意思）。这中间的差值，就是可以被悄悄征用的空间。

你平时读到的每一段文字，理论上都可能在你毫无感知的情况下，额外编码着一层你看不见的信息。你以为你读到的只是作者的意思，但词语的选择本身可能还承载着另一层信号。水印只是这个原理的一个具体应用。

想到这里其实有一点点让人不安。

## 十、跟"AI味"检测是一回事吗？

我之前写过一篇文章《连AI味是什么都说不清，凭什么用它卡我论文？》讨论"AI味"的本质。那篇文章里我的核心观点是：所谓AI味，本质上不是AI太平庸，而是AI走了人类从来不走的语言通道。语法没错，语义也通，但就是没人会那么说话。比如我们说"大雾"不说"小雾"，说"提高水平"不说"增加水平"。AI恰恰就会踩到这种地方。

现在回头看，水印的技术原理跟AI味的问题恰好形成了一个对照。

水印利用的是什么？是语言中"怎么说都行"的区域。"因此"和"所以"都可以，模型选哪个对用户没影响，水印就在这里做文章。

AI味暴露的是什么？是语言中"只能这么说，但AI不知道"的区域。"大雾"可以但"小雾"不行，这条规则没有写在任何语法书里，是人类约定俗成的，但AI的泛化本能会让它越界。

一个是冗余，一个是约定。它们是语言这枚硬币的两面。

而市面上的那些AI检测工具（困惑度、爆发度之类的）做的事情跟水印完全不同。它们手里没有任何密钥，只能从文本的表面统计特征去猜"这像不像AI写的"。

打个比方。水印检测就像魔术师拿着暗号对照牌序，一看就知道你是不是按规则翻的。AI味检测则像一个观众，没有暗号，纯粹靠观察你翻牌的"感觉"来猜你有没有作弊。前者是数学题，后者是概率猜测。误判率完全不在一个量级。

但有意思的是，水印解决了"检测可靠性"的问题，却没有解决一个更根本的问题：检测到了，然后呢？

## 十一、水印证明的到底是什么？

Anthropic自己说得非常小心：检测到水印意味着文本"经过了Claude处理"，不等于"Claude写了这段话"。

你自己写了一篇论文，只是让Claude帮你润色了几个句子，最终文本可能就带上了水印。

你自己写了98%的内容，Claude碰了2%，检测结果显示"有水印"。

这个"有水印"和"100%由Claude从零生成"在检测层面是一回事。水印可以告诉你"Claude参与过"，但不能告诉你Claude参与了多少。

这是一个很重要的区别。如果将来有人拿水印检测结果来做判断，比如学校拿它来判定学生是否用AI写论文，"经过AI处理"和"由AI撰写"之间的鸿沟就会成为一个核心争议点。

还有一个不太有人讨论但技术上完全可行的方向：如果水印的密钥和用户账号关联，那检测到水印就不仅仅是"这是AI写的"，而是"这是某个特定用户让AI写的"。Anthropic目前没有说会这么做，但原理上没有任何障碍。

## 十二、AI的文字需要盖章的时代

写到最后，我觉得水印这件事最值得感慨的，不是技术本身多精巧。

而是我们已经走到了一个需要给AI的文字盖章的时代。

AI写的东西越来越像人，人写的东西（有时候是因为受了AI的影响）越来越像AI。两边在靠拢。面对这个局面，水印至少提供了一个比困惑度检测靠谱得多的思路：不去猜"这像不像AI"，而是从源头打上一个可验证的标记。

但它依然解决不了最根本的那个问题。

当一个人用AI帮忙修改了自己写的文章，这篇文章到底是谁写的？

这个问题，大概不是任何技术能够回答的。

![](images/ba205b/img_001.png)

我建了一个AI学习研究群，目前几十来人，都是在真正动手搞AI的人。

如果你也在自己**跑模型、写代码、做项目**，

或者使用**Claude**和**Claude code**，

欢迎**点赞关注转发**一键三连，然后加我微信，备注写清"你在做的AI方向"，聊得来的话我拉你进群。纯围观的和小白就不加了，有一定门槛。当然你也可以简单粗暴的甩给我999元，我拉你进群，这个没门槛。

![](images/ba205b/img_002.jpg)
