从 2026 年 8 月起,欧盟 AI 法案开始对新系统生效。法案第 50 条要求 AI 提供者让输出内容「可被检测为人工生成」。换句话说,LLM 必须在输出中嵌入水印。
开发者 Sean Goedecke 写了一篇分析文章,结论很直接:文本水印永远可以被轻松移除。

不是图片水印,是文本隐写
Goedecke 首先澄清了一个常见误解。图片水印可以在噪声中隐藏签名而不被人眼察觉,但文本是「一种高度压缩的媒介」——几乎任何改动都会被人注意到。
简单方案直接出局。如果你让模型「每五个字母必须是一个 e」,输出会充满明显的拼写错误。即使模型能学会在约束下生成可读内容,这个约束也会消耗推理能力,降低输出质量。
能否让模型自行决定是否使用水印?强大的 AI 模型如果足够智能,可以处理这种需求,但这仍然会消耗推理时间,而这些时间本可以更好地用于解决用户的问题,并且会让模型听起来比实际能力差很多。
另外一个问题,是否真的需要水印来检测 AI 生成内容吗? 如果你是 Anthropico 公司,需要验证模型是否生成了特定的文本块,难道不能直接把一段可疑文本喂给所有可能的模型,看哪个模型预测的 token 序列和文本一致——这会产生大量误报,而且对免费验证服务来说成本太高。
SynthID:Google 的方案
目前最成熟的文本水印方案是 Google 的 SynthID。它在 token 采样阶段做手脚。
模型每生成一个 token,都会给词汇表中约 10 万个候选词打出概率分数。SynthID 额外给每个候选词打一个「水印分数」——基于前文 token 计算,用随机种子混合以避免偏差。采样器从高分候选中优先选择水印分数高的 token。
检测时,计算一段文本的聚合水印分数。如果异常高,大概率是 AI 生成的。检测成本很低,因为评分函数在数学上很简单。
Goedecke 指出一个关键限制:temperature 为零时无法施加水印,除非覆盖用户偏好。
Unicode 同形字:更隐蔽的方案
作者怀疑 OpenAI 和 Anthropic 在用的是一种更简单的方法:同形字替换。
把标准空格(U+0020)替换成视觉上无法区分的 Unicode 变体——三分之一 em 空格(U+2004)或中日韩表意空格(U+3000)。通过替换模式编码信息,检测成本极低。
他举了两个证据。Claude Code 已经记录了用同形字隐写来标记中国用户的请求。另外,把 ChatGPT 输出粘贴到 VSCode 时,有时会显示异常的 Unicode 空格——OpenAI 对此的官方说法是「模型特性」。
为什么这些水印都可以被移除
同形字水印的破解方法:把所有同形字替换回标准字符。
SynthID 水印的破解方法:用任何不带水印的 LLM(哪怕是本地小模型)把原文改写一遍。因为水印绑定在「微妙的词汇选择」上,改写就断了。人工改写同理。
更根本的问题是,欧盟 AI 法案的互操作性要求会迫使提供者公开水印方法,消灭任何基于安全性的模糊。
C2PA 不是替代方案
有人可能想到 C2PA 内容凭证——数字签名的元数据。但它只适用于能附加元数据的文件格式:「音频、图片、视频或容器化的文本」。聊天输出和 AI agent 输出是纯文本,没有文件来签名。法案要求的是水印,在元数据签名之外。
社区讨论:这是犯罪吗?
社区最大的争议点是法律层面。有人指出,在欧盟 AI 法案下,移除水印本身可能构成违法行为。
Goedecke 的回应很尖锐:他把这比作「在自己财产上贴贴纸遮住 logo」——既然这是我的输出,我为什么不能去掉标记?
但也有评论者提出了更务实的观点:水印不是为了阻止技术用户,而是为了阻止普通人。大多数用户不会费心去改写 AI 输出来逃避检测。就像 DRM 一样——专业人士总能破解,但它阻止了普通人的随意复制。
另一个讨论线是技术可行性的根本质疑。评论者指出,即使 SynthID 有效,它也需要模型层面的集成。开源模型社区不太可能统一采用任何水印方案——而一旦有无水印的模型可用,整个系统的漏洞就打开了。
预测:水印会成为标配,但没人当真
Goedecke 的预测是:AI 提供者会全面部署 SynthID 风格的 token 采样器(可能只针对欧盟用户,也可能不做区分)。他们会提供免费的水印检测网页。在互操作性压力下,可能最终统一到一个 SynthID 标准、一个欧盟托管的验证页面。
技术用户会轻易去除水印,面向非技术用户的去水印工具会大量出现。
结果是:法律合规了,但目的没达到。
参考来源: