Claude开始给文字加“隐形水印”,它写的代码也有吗?
这两天,Anthropic公布了一项很容易被忽略、但可能影响所有Claude用户的变化:Claude开始引入文本数字水印。更准确地说,Anthropic在8月14日宣布,未来Claude模型生成的文本将带有水印,旧模型则会在未来几个月逐步加入。直接原因是欧盟《AI Act》第50条已经从8月2日起适用,要求生成式AI提供商为AI生成或修改的内容加入机器可读标记;Anthropic决定在推出时全球应用。

看到“数字水印”,很多人的第一反应,大概是Claude会不会偷偷往文字里塞一些看不见的字符。但对我来说,更有意思的是另一个问题:Claude生成的代码也有水印吗?现在大量开发者已经把Claude Code直接放进真实的软件开发流程。如果代码也带着Claude的“指纹”,会不会影响代码质量,提交到GitHub以后,别人又能不能反查出是谁生成的?
答案是:Claude生成的代码也处在这套水印机制之下,但代码里的水印通常比自然语言少得多。理解为什么,其实也就理解了SynthID-Text到底是什么。
一、Claude的水印,不在文字里,而在“为什么选这个词”里
Anthropic没有重新发明一套水印,而是明确采用Google DeepMind在2024年发表的SynthID-Text方法的一个版本。它不会在文本里插入零宽字符,不增加额外Token,也不是等Claude写完以后,再在里面附上一串隐藏编号;水印发生在模型生成文字的过程里。
大语言模型写一句话,本质上是在不停预测下一个Token。比如Claude已经写出“今天的天空有些……”,后面接“阴沉”“灰暗”“多云”可能都说得通。正常生成时,模型会按照这些Token的概率进行采样;SynthID-Text做的事情,是在几个答案都合理的时候,改变这种随机选择的来源。Anthropic用了一个很形象的比喻:平时玩棋盘游戏靠掷骰子决定走几步,加入水印以后,不再真的掷骰子,而是从圆周率的小数位里依次取数字。对玩家来说仍然像随机数,不影响游戏,但如果事后拿到足够长的一串结果,又知道这套规则,就可能判断这局游戏是不是用了圆周率。Claude的文本也是一样,单独看一个词没有意义,但大量选择积累在一起,就可能形成只有掌握密钥才能检测的统计规律。
这套方法最巧妙的地方,是尽量不改变用户看到的结果。Google DeepMind曾在真实Gemini流量中比较约2000万条带水印和不带水印的回复,点赞率只差0.01%,点踩率差0.02%,差异都没有统计显著性。至少从这项大规模实验看,用户基本感受不到背后的那颗“骰子”被换了。
二、Claude写的代码也有水印,但代码恰恰最难留下水印
这是Anthropic在官方说明中专门回答的问题。SynthID-Text能够工作的前提,是Claude拥有“怎么选都差不多”的空间;如果只有一个明显正确的答案,水印不能为了留下痕迹而故意把答案改掉。比如“2+2=”后面正常答案就是4,代码更是如此:if不能为了留下水印换成不存在的关键字,固定API名称不能随便改,函数参数或者协议字段也不能因为水印而破坏程序。Anthropic明确表示,当替换Token会造成事实错误或者让代码出错时,水印不会施加这种影响。
所以Claude生成的代码不是完全没有水印,而是通常比文章、邮件、故事这些自然语言包含更少的水印信号。真正有发挥空间的地方,例如代码注释,或者某些有多个同样合理表达方式的位置,仍然可能留下水印;但Anthropic认为这种机制对实际生成代码的影响可以忽略。 这其实揭示了SynthID-Text最重要的特点:它不是为了加水印而改变内容,而是在Claude本来就有多个合理选择的时候,顺便利用这些选择留下统计信号,没有选择就不强行留下。
从这个角度再看不同场景就很好理解了。写长文章时,每句话都有大量可以换一种说法的地方,水印容易累积;Claude翻译文章时,输出仍由Claude重新选择,因此Anthropic明确说翻译文本也会带水印;但如果只让它改几个错别字和标点,大部分文字并不是Claude重新生成的,最后可能少到无法可靠检测。事实性回答和代码也是同样的道理:越接近“只能这么写”,水印留下的空间就越小。
对于Claude Code用户,这个结论其实很重要:即使一段代码完全由Claude生成,也不意味着它一定能像一篇长文章那样被稳定识别出来。
三、有水印,也不等于能证明“这是Claude写的”
SynthID-Text和传统AI检测器还有一个根本区别。很多AI检测工具是在文章生成以后,根据句式、词频和语言习惯去猜“像不像AI写的”;SynthID-Text则是模型在生成时主动留下一个只有相应密钥才能验证的统计信号。
但主动留下信号,也不代表它能给一篇文章或者一段代码盖上“Claude原创”的章。Anthropic明确表示,水印最多只能帮助判断Claude是否可能参与过内容生成,不能区分“Claude从头写”和“人写完后让Claude大幅改写”。它也不包含用户、组织或具体聊天的信息,不能通过水印反查是谁生成的,更不能还原Prompt,也不会改变内容所有权。
水印同样不是不可破坏的。轻度编辑通常不会完全消除它,但如果整篇文字彻底重写,水印会消失;Google DeepMind也一直强调,SynthID不是识别AI内容的万能方案。 对代码来说,这个限制更加明显:代码本来就比文章更缺少自由选择,再经过开发者重构、格式化、替换实现以及与其他代码合并之后,想单凭水印准确回答“这段代码是不是Claude Code写的”,会更加困难。
四、真正改变的,不是我们怎么用Claude,而是内容离开Claude之后会发生什么
从普通用户的角度,这次变化几乎是无感的。Anthropic表示,水印不会增加Token,价格不变,对生成速度的影响也可以忽略;Claude Code用户没有必要为了水印改变开发流程,更不用担心Claude为了“留指纹”故意生成另一套更差的代码。
真正值得关注的,是这些内容离开Claude之后。欧盟《AI Act》已经要求生成式AI提供商加入机器可读标记,Anthropic也表示将提供自己的水印检测API。未来学校、媒体、企业或者内容平台,至少从技术上多了一种不同于传统AI Detector的判断方式:不是根据语言风格去猜,而是检查模型在生成时主动留下的信号。
但这里仍然有一道重要边界。检测到Claude参与,不等于证明一篇文章没有人的原创思考;检测到一段代码里存在Claude水印,也不能证明整个软件都是AI写的。一个人自己确定观点、结构和事实,只让Claude润色,与让Claude从头生成文章,在创作责任上显然不是一回事,但水印无法替我们完成这种判断。
过去几年,我们一直在讨论AI能生成什么:文章、图片、视频、代码,越来越像人,也越来越难单纯从结果上区分。现在行业开始补另一层基础设施——这些内容从哪里来,AI到底有没有参与。SynthID-Text远远谈不上解决AI内容识别问题,尤其对代码这种高度受约束的内容更是如此,但Claude开始采用它,还是意味着一个值得关注的变化:AI生成内容开始拥有一种以前纯文本并不具备的“来源信号”。
所以,Claude写的代码有数字水印吗?更准确的答案是:有留下水印的机制,但很多代码能够承载的水印很少,远没有一篇长文章那么容易检测。对于开发者来说,它今天几乎不会改变写代码这件事;但对整个互联网来说,“这段内容有没有AI参与”,正在慢慢从根据文风和感觉的猜测,变成一个可以由生成模型自己提供线索的技术问题。