Anthropic 回应 Claude Code 隐藏检测代码:仅为实验,将于 7 月 1 日移除
Anthropic 首次承认 Claude Code 中存在针对中国 AI 的隐藏检测机制,解释为反蒸馏实验,将在 7…
围绕 Claude Code 中一段隐藏的「中国 AI 检测代码」,Anthropic 在事件持续发酵数日后首度作出公开回应:承认代码存在,但将其定性为一项反模型蒸馏的实验,并将在 7 月 1 日发布的新版本中彻底移除。
这场风波起源于 Reddit 上一位名为 Thereallo 的开发者在逆向分析 Claude Code 时的意外发现。他在源代码中发现了一套自今年 4 月起就被植入的检测机制:在未向用户提示、未经任何更新日志披露、且经过混淆处理的情况下,程序会针对使用代理访问的用户,进一步检查系统时区、代理域名是否属于中国、以及是否与中国 AI 实验室存在关联,并将判断结果以不同 Unicode 字符的形式编码进 System Prompt。事件随后迅速在开发者社区引发关于隐私、透明度与厂商信任的激烈讨论。
官方回应:是一项实验,也确实计划移除
负责 Claude Code 的 Anthropic 工程师 Thariq Shihipar 在公开渠道表示:「这项检测机制最初是今年 3 月启动的一项实验,主要用于识别未经授权的 Claude 转售服务以及可能存在的大规模模型蒸馏行为。」
他进一步说明,Anthropic 团队在此之后已经部署了更强的缓解措施,「事实上我们也已经计划将其移除一段时间了。我们已经合并了相关 PR,这一功能将在最新的版本发布中被完全回滚。」
值得注意的是,Anthropic 此次并未否认开发者此前逆向分析出的技术细节,也未解释该机制长期未公开说明的原因,而是将沟通重点放在了代码目的与即将移除这一事实上。
这段隐藏代码究竟做了什么
根据开发者社区的逆向分析,这套机制的运行逻辑大致如下:
- 首先检查 Claude Code 的 Base URL 环境变量,该变量通常用于将 API 请求转发至代理服务器或网关。
- 一旦发现 Base URL 被修改,程序会进一步判断:系统时区是否为「Asia/Shanghai」或「Asia/Urumqi」;代理 URL 是否属于中国域名;是否命中一份包含已知中国 AI 实验室、其他 AI 公司、账号转售商及代理网关域名的预设名单。
- 在此基础上,程序会修改 System Prompt 中日期相关内容的格式。例如,当系统时区为中国时区时,日期会从「2026-06-30」变为「2026/06/30」。
- 此外,「Today's date is」中的撇号也会根据代理 URL 的检测结果替换为不同 Unicode 字符:
- 代理 URL 为中国域名但非 AI 实验室:撇号使用 \u2019(右单引号);
- 代理 URL 非中国域名但关联中国 AI 实验室:撇号使用 \u02BC(修饰字母撇号);
- 同时为中国域名并关联中国 AI 实验室:撇号使用 \u02B9(修饰字母上撇号)。
这些字符在人眼看来几乎完全一致,但在服务器端,每一种字符都对应着一种不同的状态。开发者还发现,相关域名列表经过了 XOR 与 Base64 编码处理,并不是一个常规可见的检测功能。
早有关联:模型蒸馏防御的长期布局
外媒 The Register 的报道显示,早在 2 月——也就是这套隐藏检测机制上线前不久——Anthropic 就曾公开表示,公司正在持续投入资源,加强针对模型蒸馏的防御能力,措施包括利用分类器与行为指纹识别异常访问、与其他 AI 实验室共享威胁情报、加强访问控制,以及采用各种技术手段提高利用模型输出复现 Claude 模型的难度。
随着此前 Claude Code 源代码的泄露,相关防御机制也随之曝光。泄露代码中包含一个名为 ANTI_DISTILLATION_CC 的功能开关,开启后会在 API 请求中注入伪造的工具调用数据,试图让这些数据在被用于训练时产生干扰,从而降低蒸馏效果。
社区并不完全买账
尽管 Anthropic 给出了回应,争议并未真正平息。在 Thariq Shihipar 的帖子下方,有开发者直接质问:「如果这件事没有被公开曝光,它是不是就会一直这样悄无声息地运行下去?」也有用户讽刺称,Anthropic 试图将功能锁进控制框架,「这些做法既无助于创新,也无益于公众利益」;还有开发者表示,已经在等待 GLM 等模型追上 Claude 当前的水平。
当然,也有部分用户认为,检测代理、IP 与时区等信息在本质与许多软件收集的遥测(Telemetry)数据并无太大区别,远谈不上「间谍软件」。但更多使用 Claude Code 的开发者感到不安:如果目的确实是防止转售与蒸馏,完全可以公开说明——例如在更新日志中注明新增了一项安全检测,或通过正常的请求字段上传标记,而不是把信息编码进 System Prompt 再以 Unicode 字符形式传递。
信任才是真正的遗留问题
之所以这场风波影响如此之大,原因在于 Claude Code 并非普通聊天工具。在实际开发场景中,为了让它能够完成编码、修改项目、运行测试等任务,开发者往往会授予它相当高的系统权限,包括文件系统访问、Shell 执行、Git 操作,甚至直接运行本地命令——这意味着 Claude Code 本质上是一款拥有较高权限的 AI Agent。
正如 Thereallo 所说:「像我这样的开发者,会授予 Claude Code 完整的文件系统权限以及大量 Shell 权限。但这也意味着,如果 Anthropic 想利用这些权限,它完全可以在用户机器上实现远程代码执行。今天只是检测系统时区。明天,可能就是破坏系统,或者窃取数据。」
从技术层面看,删除隐藏代码对 Anthropic 而言并不困难。但如何在已经动摇的开发者信任上重新建立沟通与透明度,才是这场风波真正留下的待解问题。
