这个问题的答案在网上有两个极端版本。一个版本说"AI 输出全带水印,随便一查就露馅";另一个说"文本水印根本不可能,纯属都市传说"。两个都不对。
比较可靠的做法是把说法拆成三档:厂商公开承认的、只有社区观察但无官方确认的、明确被误传的。下面按这个标准过一遍。
Google / Gemini:唯一公开承认并给出技术细节的一家

这是三家里最明确的。Google DeepMind 公开发布了 SynthID-Text,说明它用于 Gemini 的文本输出,还把相关实现开源了一部分,供研究和复现。技术论文发表在正式期刊上,方案细节可查。
它的做法属于生成时的统计采样水印:模型每步从词表采样时,用一个由前文和密钥驱动的伪随机函数给候选词打分,在多个采样候选中偏向得分高的那个。单看一个词完全正常,文本积累到一定长度后,整体的得分分布会明显偏离无水印文本。检测时用同一密钥重算并做统计检验。
几个必须说清楚的限制,Google 自己的材料里也提到过:
- 文本要够长。短文本里信号不足,检出率不理想。几十个词以内基本无从判断
- 改写会削弱信号。同义替换、重排句子、翻译再译回来,都会降低检出率
- 低熵输出难以嵌入。当模型几乎只有一个合理选择时(代码、数学推导、事实性短答、固定格式),采样空间太小,没有腾挪余地
- 检测能力不对外开放。你无法自行验证一段文本是否带 SynthID-Text 水印
最后这条对普通使用者最要紧:既然没有公开检测器,你既确认不了"有",也确认不了"没有",更确认不了"改写之后清干净了没有"。所有声称能保证去掉这类水印的工具,都无法自证——因为验证手段根本不在他们手里。
OpenAI / ChatGPT:讨论过,公开信息未显示大规模部署

OpenAI 在文本水印这件事上的公开记录,大致是这样:
公司多次表示研究过文本来源认定的技术方案,包括在采样层做水印这一路,并公开讨论过为什么迟迟没有推出。给出的顾虑集中在几点:这类水印容易被改写和翻译规避;一旦部署可能把非母语使用者推向更容易被误判的境地;如果只有自己一家做,用户会流向不做水印的竞品,而水印本身并不能阻止滥用。此外 OpenAI 早年推出过的 AI 文本分类器(一个判别式检测工具,跟水印不是一回事)因为准确率不足已经下线。
所以目前能站得住的表述是:公开信息未显示 OpenAI 在消费级产品的文本输出中大规模部署了采样水印。注意这句话的形式——它说的是"没有公开证据表明有",不是"确证没有"。厂商没有义务公布全部技术细节,这一点无法从外部证伪。
Anthropic / Claude:没有公开的文本水印方案
到目前为止,没有公开材料显示 Anthropic 在 Claude 的文本输出里部署了统计水印。公司的公开重心更多在使用政策、模型行为规范和安全评估上,未见发布类似 SynthID-Text 的文本水印技术。
同样地,这是"没有公开信息",不等于"经过验证的没有"。诚实的说法就是不知道,而不是给一个假的确定答案。
现在说传言:ChatGPT 在输出里插零宽字符?
这个说法在社交平台上传播极广,配图通常是一段从聊天框复制出来的文本,扫描后显示出一堆 U+200B 或类似字符,配文"实锤了"。
需要拆开看。
能确认的部分:确实有人在从 AI 聊天界面复制出的文本里扫到过隐形字符。这类观察不是编的。
推论不成立的部分:从"复制出来的文本里有零宽字符"推不出"模型在生成时嵌入了水印"。中间隔着好几层,每一层都可能是来源:
- 前端渲染层。聊天界面是网页,正文经过 Markdown 渲染、代码高亮、数学公式排版等多道处理。渲染框架为了控制换行、软换行、光标定位插入零宽字符是常规操作,跟模型无关
- 复制行为本身。浏览器复制 DOM 选区时会带上一些结构性字符,从富文本粘贴到纯文本编辑器时的转换也会引入 U+00A0、U+FEFF 之类
- 第三方套壳工具。大量浏览器插件、镜像站、聚合客户端在中间加了一层,它们出于统计、追踪、标记来源的目的插入字符完全可能,而且这是它们自己的行为
- 传播链路。截图、转发、经过某些论坛或 CMS 的富文本编辑器,都可能在文本里留下痕迹
另外有一个明显的反证:同一段回复走 API 拿到的纯文本,通常不含这些字符。如果水印真的嵌在模型输出层,API 返回的内容应该同样带有。这个对照实验任何有 API 权限的人都能自己做一遍——同一个提示,网页复制一份,API 取一份,分别扫描比对。
还有一个常被混淆的现象:AI 输出里高频出现的 U+2014 破折号、U+2019 弯引号、U+00A0 不换行空格。这些是可见字符,是标点风格问题(模型倾向于输出排版规范的标点),不是水印。有人把它当成"AI 指纹"来判断,作为写作风格线索或许有一点参考价值,作为水印证据则完全谈不上。
所以到底该怎么判断
结论其实很朴素:与其猜哪家有水印,不如自己扫一遍手上的文本。
这么做的理由是它落在你能确定的范围内。隐形字符要么在,要么不在,逐码点扫描就能给出确定答案,清理之后重新扫描就能确认结果。这跟统计水印那种"检测器在别人手里、你只能猜"的情况完全不同。
扫描之后可能遇到三种情况:
- 扫到了隐形字符。那就知道了具体是哪些码点、多少个、在什么位置。至于是谁插的,看来源渠道比看厂商更靠谱——从网页复制、从 PDF 复制、经过第三方工具中转,都是常见嫌疑
- 什么都没扫到。说明字符层面是干净的。这不能证明文本没有统计水印,因为统计水印本来就不在字符层面。但至少字符层的问题排除了
- 扫到了但不确定该不该删。比如阿拉伯语文本里的 ZWNJ、emoji 序列里的 ZWJ,这些是内容的一部分。判断依据可以看这一篇
几件不要相信的事
我们的工具能保证通过 AI 检测器。做不到。判别式 AI 检测器(那些靠困惑度、句长方差、词汇分布打分的服务)本身准确率就不稳定,人写的规整文本被判成 AI 是常事,同一段文本在不同服务上结论相反也很常见。任何工具都无法承诺一个本身就不稳定的判定结果。
改写就能去掉 SynthID 水印。改写确实会削弱信号,改动幅度越大削弱越明显。但削弱不等于清除,而且没有公开检测器让你验证削弱到了什么程度。凡是把"削弱"说成"清除"的,要么没搞懂,要么在忽悠。
清掉元数据这张图就查不出是 AI 生成的了。元数据(EXIF、XMP、C2PA)和像素域水印是两回事。清元数据不动像素,SynthID 图像水印那类嵌在像素里的东西照样在。这一点必须说死,不能含糊。
立场问题
聊到这里有必要说清楚工具该用在什么地方。
扫描和清理隐形字符、清除文件元数据,合理的用途是知情和隐私:你有权知道自己即将发出去的文档里除了正文还写了什么——作者名、公司域账号、原始文件路径、拍摄地点的 GPS 坐标、编辑总时长,这些字段经常在当事人完全不知情的情况下随文件流出。发布前把它们清掉,是正常的信息卫生,跟"伪装成人写的"是两码事。
把这类工具当成规避学术诚信或内容标注要求的手段,既不是它们该干的事,技术上也交付不了——真正强的水印(统计采样、像素域)恰恰是这些工具处理不了的部分。
