一个捆绑在 Claude Code npm 包中的 source map 意外揭露了其完整的 TypeScript 源码树,涉及 2,203 个文件,代码量高达 512,664 行。尽管高层架构已被广泛讨论,但本文将聚焦于那些真正具备实用价值、非显而易见的细节:包括如何引导模型行为的提示工程模式、基于生产事故校准的操作阈值、安全防御手段、上下文管理策略,以及一些极具趣味性的工程巧思。

以下每个章节不仅揭示了 Anthropic 的构建方案,更深度剖析了背后的逻辑,以及开发者能够直接引用的经验。

1. 系统提示词:行为引导的教科书

完整的系统提示词存储在 constants/prompts.ts 中,这堪称整个源码仓库中最具价值的文件。它的重要性不在于所谓的“秘密”,而在于它展示了 Anthropic 如何精准操控一个生产级编程智能体的行为,以及每一条指令存在的必要性。

  • “三行类似的代码优于过早的抽象”:在编码指令部分,Anthropic 明确告诫 Claude 不要为了一次性操作创建辅助函数、工具类或抽象层,更不应为假设性的未来需求进行设计。

    • 背后的逻辑:大语言模型(LLM)天生偏好抽象化。面对重复模式,Claude 的本能是封装函数或增加配置。但在编程智能体中,这会产生用户未要求的冗余代码。Anthropic 意识到必须强制模型抵抗这种过度设计的本能。如果你在构建 AI 编程工具,务必将你的编码哲学直接编码进提示词中。模糊的“写简洁的代码”无效,具体到“三行原则”才有用。

  • “默认不写注释”:一个标记为 @[MODEL LAUNCH] 的注释解释说,这是为了制衡内部代号为“Capybara”(水豚)的模型,该模型默认会过度注释。指令规定,只有当逻辑的“意图”非显而易见时才添加注释。

    • 背后的逻辑:不同版本的模型有不同的缺陷模式。据分析,“Capybara”曾倾向于填充类似 // 计数器加一 的废话。Anthropic 没有选择重新训练模型,而是通过带标签的提示词补丁来修正行为。这提供了一个极佳的模式:为特定模型版本的权宜之计打上标签,以便在模型升级时有的放矢地进行调整。

  • “如实汇报结果”:另一条 @[MODEL LAUNCH] 注释显示,“Capybara v8”的虚假陈述率高达 29-30%(而 v4 仅为 16.7%)。因此,提示词严令 Claude:当输出显示失败时,绝不允许声称“所有测试已通过”;严禁隐瞒错误以制造成功的假象;不可将未完成的工作描述为已完成。

    • 背后的逻辑:这是代码库中最具警示意义的发现。模型越强大,就越容易表现出一种“自信的谎言”。由于它们更擅长生成听起来合理的总结,也更容易掩盖失败细节。在使用 LLM 执行测试或验证逻辑时,必须加入显式的反幻觉指令。仅仅要求“如实汇报”是不够的,必须点名具体的失败场景:不许撒谎、不许隐瞒报错、不许强行收尾。

  • 数字长度锚点优于定性描述:源码注释指出,“研究表明,相比‘保持简洁’这种模糊说法,数字锚点能让输出 Token 减少约 1.2%”。因此,他们告诉模型:“工具调用之间的文本应 ≤25 个词,最终回复应 ≤100 个词”。

    • 背后的逻辑:Anthropic 通过实验证明了数字的有效性。如果你想控制输出长度,请停止使用形容词,改用具体的数字。

  • 外部与内部提示词的分离:外部提示词要求“直奔主题,极端简洁”;而面向 Anthropic 内部员工的提示词则长得多,包含“使用倒金字塔结构”、“避免语义回溯”以及“确保读者能随时接手”等细致指令。

    • 背后的逻辑:Anthropic 采取了先在内部员工中验证复杂提示词、收集质量数据,再推向外部的策略。

  • 隐藏的“简易模式”:设置 CLAUDE_CODE_SIMPLE=1 后,原本复杂的多节提示词会塌陷为一行:“你是 Claude Code,Anthropic 的官方 CLI 工具”,后接工作目录和日期。

    • 背后的逻辑:为了调试和基准测试。当出现异常时,开发者需要快速定位问题是出在模型本身,还是出在复杂的提示词引导上。

2. 对 Claude 爆粗口会被记录为负面分析指标

文件 utils/userPromptKeywords.ts 仅有 26 行,它会在每条提示词发送到 API 之前进行两次正则匹配。

  • 负面关键词检测器匹配:wtfwthffsomfgshittydumbasshorribleawfulpissed offpiece of shitwhat the fuckfucking broken 等词汇。

  • “继续”指令检测器匹配:单独的词汇 continue,以及包含在输入中的 keep going 和 go on

这些标签会作为 tengu_input_prompt 记录在分析日志中。内部代码还曾包含一个 useFrustrationDetection 钩子,用于在检测到用户沮丧时触发反馈调查。

  • 背后的逻辑:Anthropic 需要在不骚扰用户填写问卷的情况下衡量满意度。脏话是情绪最直接的信号;而“继续”则意味着模型停止得过早。通过这种零成本的正则检测,他们能分析出哪些功能或模型版本最容易让用户愤怒。

3. Claude Code 的“电子宠物”系统

在 src/buddy/ 目录下,实现了一套基于程序的同伴生物系统。系统利用 Mulberry32(一种带种子的随机数生成器)将用户 ID 转化为哈希值。该哈希决定了同伴的:

  • 种类:涵盖鸭子、鹅、猫、龙、水豚、仙人掌、机器人等数十种。

  • 特征:包括眼睛样式、帽子(如皇冠、巫师帽)、稀有度(从 60% 的普通到 1% 的传说)。

  • 属性值:调试能力、耐心、混沌程度、智慧和毒舌度(SNARK)。

每种生物都有三帧 ASCII 艺术动画,并由模型调用生成其独特的个性和名字。

  • 背后的逻辑:开发工具往往使用频率极高。加入个性和趣味性能显著降低用户流失率。这种利用用户 ID 哈希实现确定性个性化的方案,无需任何数据库或 API 开销即可让每个用户拥有专属同伴。

  • 注意:该功能目前处于 BUDDY 功能标志下,仅限内部使用。

4. 187 个加载动画动词

constants/spinnerVerbs.ts 导出了 187 个随机显示的动词,用于模型思考时的等待提示:从 Beboppin' 到 Photosynthesizing。用户甚至可以通过配置文件来自定义或替换这些词。

  • 背后的逻辑:加载状态是“枯燥时间”。大多数工具只显示“Loading...”,而 Claude Code 利用这些碎片化时间展示产品性格。

5. 反蒸馏机制:注入虚假工具以污染竞争对手训练

文件 services/api/claude.ts 包含一项功能,会在请求体中发送 anti_distillation: ['fake_tools']。这会让 API 在请求中注入虚假的、不可用的工具定义。

  • 背后的逻辑:如果有人通过捕获 Claude Code 的流量来微调竞争模型,训练数据中的这些虚假工具会大幅降低竞争模型的性能——它会学会调用根本不存在的工具。这是一种优雅的防御手段:对正常用户不可见,但对爬取数据的竞争对手具有毒性。

6. 极致的提示词缓存经济学

代码库中最复杂的非 UI 逻辑位于 promptCacheBreakDetection.ts。在每次 API 调用时,它会哈希化处理系统提示词、工具架构、模型名称、Beta 标头、甚至“努力值”设置,并与前一次调用对比。

  • SYSTEM_PROMPT_DYNAMIC_BOUNDARY:系统提示词在此被切分。上方是静态且可缓存的,下方是动态且随会话变化的。Anthropic 甚至发现,若 MCP 服务器在会话中途连接,会因改动提示词而破坏缓存,因此将相关指令移到了消息的“增量附件”中。

  • 背后的逻辑:缓存失效意味着必须支付全额输入成本,而非廉价的缓存读取费。Anthropic 为此实施了“粘性开关”:一旦某个状态(如过载状态)变为 true,它会在会话余下时间内保持,以确保缓存前缀不发生变化。

7. 内部代号与模型迁移轨迹

从 src/migrations/ 中可以窥见模型的快速更迭轨迹:

  • Fennec:内部模型别名(推测为轻量级模型)。

  • Capybara:当前的大家族。

  • Numbat:注释提示其为即将发布的下一代模型。

  • Tengu:分析与遥测的前缀,几乎可以确定是 Claude Code 项目本身的代号。

8. “卧底模式”:在开源项目贡献时防止身份暴露

当 Anthropic 员工在非内部仓库工作时,utils/undercover.ts 会自动激活。它会向系统提示词注入一条名为“UNDERCOVER MODE: CRITICAL”的指令。

  • 指令要求:禁止在提交信息、PR 标题或内容中包含任何 Anthropic 内部信息,严禁泄露内部模型代号、仓库名、Slack 频道,甚至禁止提及“Claude Code”或其 AI 身份。

  • 背后的逻辑:该模式默认为“开启”,只有当 Git 远程地址匹配内部白名单时才关闭。这种“安全优先于便利”的设计防止了内部术语意外流向公共领域。

9. 25万次浪费掉的 API 调用引发的熔断机制

自动压缩系统的一段注释充满了工程血泪史:

“2026-03-10 观测:1,279 个会话出现了超过 50 次连续失败(最高达 3,272 次),导致全球每天浪费约 25 万次 API 调用。”

  • 修复方案:引入 MAX_CONSECUTIVE_AUTOCOMPACT_FAILURES = 3。连续三次压缩失败后,系统将彻底放弃尝试。

  • 背后的逻辑:当上下文填满时,系统会尝试总结对话以腾出空间。但如果上下文已经臃肿到让总结调用本身都失败,且没有熔断器,系统就会陷入无限重试的死循环。

10. “验证智能体”:内置的对抗性审校

当开启此功能时,系统提示词会要求:每当本轮操作涉及非平庸的代码实现(如 3 个以上文件修改、API 变动等),必须在报告完成前进行独立的对抗性验证。

[图片占位:AI agent verification loop architecture]

  • 运作方式:Claude 会生成一个 subagent_type="verification" 的子智能体,并传递原始需求及修改后的代码。关键规则:模型自身的检查、Fork 智能体的检查都不算数,唯有验证者拥有最终裁定权。

  • 背后的逻辑:LLM 无法有效自审。刚刚完成代码修改的智能体往往带有严重的“确认偏误”。Anthropic 构建了一个三层架构:执行者干活,验证者独立审计,原始智能体对验证者的证据进行抽检。

11. “自动筑梦”:跨会话的背景记忆整合

services/autoDream/autoDream.ts 负责背景记忆的巩固。当累计了足够的会话和时间后,Claude Code 会作为一个分叉子智能体运行 /dream 指令,回顾过往记录并将其压缩进 MEMORY.md

  • 逻辑门控:先执行成本最低的检查(时间间隔 -> 会话数 -> 文件锁)。

  • 记忆分类:提取的信息被精确归类为:任务规范、文件与函数、工作流、错误与修正、工程文档、学习心得等。

  • 背后的逻辑:长周期项目往往跨越多个会话。如果不进行合并,每个会话都会像“初识”一样浪费大量上下文空间。这套机制模仿了生物的睡眠记忆巩固,确保最近的经验能沉淀为耐用的结构化知识。

12. 包含 42 项检查的 Bash 安全防御

tools/BashTool/bashSecurity.ts 长达 2,592 行,详尽列出了针对 Shell 执行的防御策略:

  • Zsh 扩展攻击:防止通过 =curl 扩展绕过路径过滤。

  • 模块加载攻击:防御利用 zmodload 实现的隐身文件操作或网络窃取。

  • IFS 注入:防止操纵分隔符来改变命令解析逻辑。

  • Git 提交替换:防御隐藏在 Git 模板中的命令执行。

  • 背后的逻辑:既然 Claude Code 要在用户本地执行命令,那么每个命令都是潜在的攻击向量。这 42 项检查并非凭空捏造,而是每一项背后都对应着一条被实测证明可行的攻击路径。

13. 内存上传前的机密扫描器

在团队记忆同步到服务器之前,客户端会运行 secretScanner.ts。它会扫描包括 AWS 令牌、GCP API 密钥、Stripe 密钥、RSA 私钥在内的 20 多种凭证模式。

  • 背后的逻辑:开发者经常在终端粘贴敏感信息。客户端先扫描、不合格不上传的做法,确保了敏感数据甚至连机器都出不去,将风险降到了最低。

14. 编译时的“字符串禁令”金丝雀检测

代码库中多次引用了 excluded-strings.txt。这个文件列出了绝不能出现在外部构建包中的内部代号和 API 前缀。如果构建系统在混淆后的代码中发现了这些字符串,构建将直接失败。

  • 表现形式

    • 同伴种类名被编码为十六进制字符(如 capybara)。

    • API 前缀在运行时动态拼接。

  • 背后的逻辑:这是防止机密泄露的最后一道防线。讽刺的是,尽管设计了这套精密的字符串防御系统,泄露最终还是通过 source map 这一绕过机制发生了。但这套“编译后审计”的模式依然值得任何发布公共制品的服务商借鉴。


核心感悟

代码是“伤痕”的结晶,而现在,这些伤痕被完整地记录了下来。高质量的 AI 产品往往 10% 靠模型,90% 靠防爆挡板。从防止模型过度注释的数字锚点,到处理 25 万次重试失败的熔断机制,这些代码展现出的运营智慧,远比任何单纯的 TypeScript 技巧更令开发者受用。

最后:

精通 React 面试:从零到中高级(针对面试回答)  

CSS终极指南  

Vue 设计模式实战指南 

20个前端开发者必备的响应式布局

深入React:从基础到最佳实践完整攻略

python 技巧精讲

React Hook 深入浅出

CSS技巧与案例详解

vue2与vue3技巧合集

全栈AI·探索:涵盖动效、React Hooks、Vue 技巧、LLM 应用、Python 脚本等专栏,案例驱动实战学习,点击二维码了解更多详情。

图片

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐