2025年初,Anthropic公司在发布Claude Code的npm包时,意外包含了.map源映射文件,导致其CLI工具的完整TypeScript源码可被逆向还原。这次泄露发生在Anthropic向第三方工具OpenCode发出法律威胁的敏感时期,使得外界得以验证其技术防护措施的真实效果。
重要提示:源码分析显示,Anthropic采取了多项非常规技术手段来保护商业利益,包括假工具投毒、潜伏模式和原生客户端认证等机制。
泄露的源码主要包含四个关键子系统:
这些机制共同构成了Anthropic的技术护城河,但也引发了关于AI透明度、公平竞争和技术伦理的讨论。
在claude.ts文件中,编译时标志ANTI_DISTILLATION_CC控制着一套精密的防御系统。当以下条件同时满足时:
系统会在API请求中添加anti_distillation: ['fake_tools']字段,触发服务端的虚假工具注入。这些伪造的工具定义会被混入正常响应中,专门用于污染竞争对手的训练数据。
假工具注入的工作流程如下:
anti_distillation标志typescript复制// 伪代码示例:反蒸馏机制核心逻辑
if (ANTI_DISTILLATION_CC && isCLI && isFirstPartyAPI && growthBook.isEnabled('tengu_anti_distill')) {
apiRequest.headers['X-Anti-Distill'] = 'fake_tools';
}
虽然该机制提高了"随手蒸馏"的门槛,但存在多个已知绕过路径:
CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1工程建议:更有效的防护应结合客户端标志和服务端行为分析,包括检测异常请求频率、工具调用模式等。
undercover.ts模块实现了一套严密的身份隐藏系统,主要功能包括:
最引人注目的是其设计哲学:可以通过CLAUDE_CODE_UNDERCOVER=1强制开启,但没有提供强制关闭的途径。源码注释明确表示这是为了防止内部代号泄露的主动防御措施。
潜伏模式的关键技术特点:
typescript复制// 伪代码:潜伏模式核心过滤逻辑
function applyUndercoverMode(text: string): string {
const patterns = [
/Capybara|Tengu/g,
/claude[-_]?code/gi,
/#internal-slack-channel/g
];
return patterns.reduce((acc, regex) => acc.replace(regex, '[REDACTED]'), text);
}
这种设计引发了关于AI透明度的伦理讨论:
在userPromptKeywords.ts中,Anthropic采用了一套精心设计的正则表达式来检测用户挫败情绪:
typescript复制const FRUSTRATION_REGEX = /\b(wtf|wth|ffs|omfg|shit(ty|tiest)?|dumbass|horrible|awful|piss(ed|ing)? off|piece of (shit|crap|junk)|what the (fuck|hell)|fucking? (broken|useless|terrible|awful|horrible)|fuck you|screw (this|you)|so frustrating|this sucks|damn it)\b/;
选择正则方案而非LLM情感分析的主要考虑:
| 因素 | 正则表达式 | LLM分析 |
|---|---|---|
| 延迟 | <1ms | 200-500ms |
| 成本 | 零额外开销 | 需支付推理token费用 |
| 维护 | 静态词表更新 | 需持续微调模型 |
| 准确率 | 高精度匹配已知词汇 | 可理解复杂语义 |
当前实现可改进的方向:
system.ts揭示了一套深度集成的认证方案:
cch=00000占位符关键设计亮点:
NATIVE_CLIENT_ATTESTATION控制这套机制正是OpenCode法律纠纷的技术根源:
优势:
局限:
从本次泄露中可总结的工程经验:
针对潜伏模式的应对建议:
情绪检测系统的启发:
基于源码分析的操作建议:
第三方开发者
开源维护者
安全研究人员
NATIVE_CLIENT_ATTESTATION实现产品团队
在实际工程实践中,我们发现这些机制的有效性高度依赖具体使用场景。例如在持续集成环境中,潜伏模式可能导致审计困难,而假工具注入对专业数据清洗团队效果有限。最稳妥的做法是建立多层次防御体系,而非依赖任何单一技术方案。