AI 文本水印的工作原理:为什么轻编辑删不掉它,但重写的工具能
文章来源
- 作者: James Padolsey(NOPE 创始人,declaude.org)
- 标题: How AI text watermarking works: a visual guide
- 链接: https://declaude.org/watermarking/
- 日期: 2026 年 8 月
- 配套工具: declaude — AI 文本重写/水印擦除工具
James Padolsey 用一篇极高质量的可视化指南,完整拆解了 AI 文本水印的工作原理。这篇文章不是学术论文,而是一个教学模型——用交互式的投骰子模拟,解释了水印为什么藏在"词与词之间的选择"里而不是藏在字符里。作为配套工具 declaude 的技术说明,它同时解释了 declaude 的 full-rewrite 路线为什么能真正擦除这一类水印。
核心问题:纯文本里怎么藏水印?
A watermark in plain text sounds impossible. Text has no pixels to hide data in, and no metadata survives copy-and-paste; every character is right there in front of you.
但水印确实存在了:
- Google 从 2024 年开始给 Gemini app 和 web 体验的文本加水印
- Anthropic 从 2026 年 8 月开始在新 Claude 模型层面标记文本,旧模型也将跟进
- 水印不可见、复制粘贴后存活、不改变文本含义或可读性
答案:水印不在字符里,它在词与词之间的选择里。
第一步:写作是一系列小选择
LLM 在写下一个词时,不是"知道下一个词"——它有一个候选列表(像 autocomplete),每个词有不同的偏好概率。
比如 “The results of the study were quite ___”,模型有一组候选词:significant、notable、remarkable、promising……每个词有不同的概率权重。模型的生成过程本质上是按权重摇骰子。
一个页面的文本包含数百个这样的小分叉,每个词一个。关键在于:在很多分叉点上,几个选项同样好。 这种"slack"就是水印的原材料。谁有资格影响骰子的落下方向,谁就能在文本中隐藏模式而不改变文本内容。
第二步:密钥倾斜选择
这是经典的 Kirchenbauer et al. 2023 方案(Google 的 SynthID 以 tournament 方式达到同样效果):
在每个分叉点,密钥驱动的数学把候选词分成 green 和 red 两组。这种分组是任意的,只有密钥持有者能复现。然后骰子稍微向 green 倾斜。
两个让这个标记隐蔽的特性:
- 倾斜是温和的:red 词仍然可能赢——只是概率稍微低一点
- 颜色不是词的固定属性:密钥从前面的一小段词计算颜色,所以同一个候选词在一种前缀后是 green,在另一种前缀后是 red
也就是说,green 的倾向只在整个文本中累积,只有密钥持有者知道哪些词在哪里是 green 的。
三种水印方案
文章提到了三个同源不同实现的水印方案:
| 方案 | 作者/机构 | 核心方法 |
|---|---|---|
| Kirchenbauer et al. (2023) | UMass Amherst | Green/red 分组 + 概率倾斜 |
| Google SynthID | 微型锦标赛:从模型概率中抽取几个候选,密钥给它们打分,bracket 排列让每个词的平均概率保持模型原始意图 | |
| Aaronson 方案 | Scott Aaronson / OpenAI | 直接从密钥导出骰子投掷本身 |
不同的数学,相同的原则:标记活在选择中。
第三步:持有密钥的人可以计数
检测不读文本,不判断风格。检测器用密钥重新着色文本中的每个词,简单地数有多少个是 green 的。
- 没有标记(或没有正确的密钥):green 应该约 50% 赢,和抛硬币一样
- 有标记 + 正确密钥:green 出现频率显著高于 50%
- 有标记 + 错误密钥:split 无意义,计数在偶然水平
这里有一个重要细节:检测强度和文本长度成正比。
在 50/50 的模型中,一个 1,500 词的文档只需要约 55% 的 green 就能 flag。小倾斜只有通过长度才能变得有说服力,这就是为什么短文本确实很难判定。
第四步:编辑对标记的影响
这是最关键的一步,也是 declaude 的核心价值所在。
每个词的颜色是从它前面的一小段词计算出来的(1 到几个词,取决于方案)。所以一个位置只有在一小段原始措辞保持完整时,才算作证据。
文章展示了五个编辑深度下的标记存活情况:
| 编辑深度 | 效果 | 标记存活 |
|---|---|---|
| Fix typos | 修正拼写错误 | 几乎全部存活 |
| Light touch | 轻微润色 | 大量存活 |
| Tighten sentences | 收紧句子 | 部分存活 |
| Heavy edit | 重度编辑 | 显著减少,但仍有可观存活 |
| Full rewrite | 完全重写 | 几乎完全消除 |
关键数据(来自 MarkLLM 的 KGW 和 EXP 方案在开放模型上的实测,经 declaude 的 full-rewrite 路线清洗):
- Full rewrite 后约 0.5% 的 windows 存活
- 检测器准确率从近乎确定(AUC 0.99)下降到抛硬币水平(AUC ≈ 0.5)
已有文献也同意这个形状:在 Kirchenbauer et al. 的实验中,即使是人类改写,在约 800 个 tokens(约 600 个词)后也能重新被检测到。
这里的核心区别:
轻编辑稀释标记而不是删除它。真正去除标记的是"不共享任何措辞片段"的重新创作。
这就是为什么从含义重写(如 declaude 的 full-rewrite 路线)才能真正擦除这一类水印,而保留大多数措辞的轻 edit pass 不行。
值得注意的边界
- 基于词本身的方案(不依赖邻居词):same-meaning 的重写保留了足够的词,标记大量存活。(它们的弱点不同:到处复用的颜色可以从足够的输出中被逆向工程)
- 隐藏在含义中的水印:same-meaning 的重写部分保留它们;目前唯一的解法我们已知的是 outline-level 的重新生成
- Anthropic 的生产方案是未公开的,所以目前没有人能在 Claude 自己的标记上运行这个测试
数学模型(面向专业读者)
Step 4 的 residual-evidence 模型:
z ≈ f·√N·z₁
f= surviving fraction(存活的 window 比例)N= document length(文档长度,以 tokens 计)z₁= per-token strength(每个 token 的水印强度)
这意味着:编辑后的有效证据量与存活比例成正比,与文本长度的平方根成正比。轻编辑让 f 接近 1,full rewrite 让 f 接近 0。
第五步:实际含义
1. 检测是私有的、概率性的、关于"处理过"而非"作者"
- 只有密钥持有者可以检查:你的老师、编辑或你最喜欢的"AI 检测器"网站不能运行这个测试。真正的检测需要提供商的秘密密钥或提供商运行的检测服务。Google 运行了 SynthID 的 early-access 检测门户;Anthropic 说检测工具即将推出
- 水印检测不是"AI 检测器":GPTZero 之类的工具从风格猜测,著名地不可靠。水印是相反的:一种有意的、密钥门控的统计测试
- 发现的标记意味着"被处理过",不是"由……撰写":Anthropic 自己的文档指出,人类文本仅由 Claude proofread 或翻译就会携带标记
- 缺少标记证明的更少:旧模型或重度编辑的文本对真正的 AI 文本产生干净的检测结果
2. 短文本和低选择文本携带很少的标记
- 证据随长度增长
- 只有一种正确续写的文本(代码、引文、事实列表)给骰子太少的 slack 来隐藏任何东西
背景:为什么现在有了水印?
这来自 EU AI Act Article 50, Part 2:
Providers of AI systems including general purpose AI systems, generating synthetic audio, image, and text contents, shall ensure that the outputs of the AI system are marked in a machine-readable format and detectable as artificially generated or manipulated.
Anthropic 是第二个引入文本水印的主要实验室(Google SynthID 在前),但效果是全球性的——不论你在美国、英国还是欧盟,所有 Claude 生成的文本都携带水印。
Anthropic 使用两种互补的标记技术:
- 嵌入文本中的水印
- 附加到文件上的签名来源元数据
declaude 的实测数据
James Padolsey 在自家已知的密钥实现上做了实验,结果总结如下:
| 水印方案 | 检测效果(原始) | Full rewrite 后 | 存活机制 |
|---|---|---|---|
| MarkLLM KGW | AUC 0.99 | AUC ≈ 0.5 | 仅 ~0.5% windows 存活 |
| MarkLLM EXP | AUC 0.99 | AUC ≈ 0.5 | 仅 ~0.5% windows 存活 |
| Context-free unigram | — | AUC 0.73–0.84 | 基于词本身的颜色,same-meaning 重写保留足够词 |
| Meaning-space marks | — | 部分存活 | 唯一解法:outline-level 重新生成 |
我的理解
这篇文章的价值在于它把一篇 ICML 2023 的学术论文翻译成了任何人都能理解的交互式可视化。投骰子的比喻完美地传达了水印的本质:不改变文本说什么,只改变模型"怎么说"的概率分布。
最关键的理解是关于编辑对水印的影响。大多数人直觉上认为"改写一下就没水印了",但数学告诉我们:
- 轻编辑(换同义词、调整语序)保留了大部分原始措辞片段 → 标记只是被稀释,在足够长的文本后仍可检测
- 真正删除标记的是"不共享任何措辞片段"的重新创作——从含义出发,重建整个表达
这就是 declaude 的定位:不是同义词替换器,而是从含义重写的工具。
z ≈ f·√N·z₁ 这个公式很有启发性。它告诉我们三个方向可以攻击水印:
- 降低 f(full rewrite)——declaude 做的事
- 降低 N(短文本输出)——但短文本本身就携带很少标记
- 降低 z₁(水印强度)——但这是提供商决定的
还有一个值得注意的矛盾:水印检测只能由密钥持有者运行,这意味着普通用户无法验证。你的老师、编辑、HR 不能确认文本是否被 Claude 处理过——只有 Anthropic 自己或他们授权的服务可以。这从根本上限制了水印的普及应用场景。
水印是合规工具,不是反作弊工具。它服务于 EU AI Act 的要求,告诉 regulator “这个文本被 AI 处理过”。但它不能告诉你"这个文本是 AI 写的"——human text 经过 Claude proofread 也会携带标记。absence 也不能证明 innocence。水印是一个"单向的门":找到标记说明"可能被处理过",找不到标记什么也不能说明。
参考资料
- https://declaude.org/watermarking/
- https://declaude.org
- Kirchenbauer et al., “A Watermark for Large Language Models” (ICML 2023)
- Dathathri et al., “Scalable Watermarking for Identifying LLM Outputs” (SynthID-Text, Nature 2024)
- Aaronson & Kirchner, “Watermarking GPT outputs” (2022)
- Kirchenbauer et al., “On the Reliability of Watermarks for Large Language Models” (ICLR 2024)
- Anthropic: How Claude marks AI-generated content
- NOPE founder explains how AI text watermarks survive
- EU AI Act Article 50 Part 2


被折叠的 条评论
为什么被折叠?



