Claude Code源码泄露 ->他有什么独到做法,使其能出类拔萃
2026年3月31日,Claude Code v2.1.88 的 npm 包附带了一个 59.8 MB 的 source map,完整暴露了 1,884 个 TypeScript 源文件、约 512,000 行代码。社区随即涌现大量深度分析项目。以下整理了最具独到见解的 8 个发现,并结合本仓库源码和 CHANGELOG 进行交叉验证分析。
见解 1:grep > RAG——51 万行代码,零向量数据库
来源:claude-code-source-analysis-orange-book(华叔橙皮书) 核心观点:Claude Code 的代码搜索系统完全基于 ripgrep(rg),没有任何向量数据库或 embedding 检索。这和 Cursor(AST + embeddings 索引)的方案截然相反。
本仓库源码验证:
-
1. 内嵌 ripgrep 二进制( CHANGELOG.md:2365):
Use built-in ripgrep by default; to opt out of this behavior, set USE_BUILTIN_RIPGREP=0
-
2. 官方 hook 示例直接推荐用 rg替代grep和find(examples/hooks/bash_command_validator_example.py:36-44):
_VALIDATION_RULES = [ ( r"^grep\b(?!.*\|)", "Use 'rg' (ripgrep) instead of 'grep' for better performance and features", ), ( r"^find\s+\S+\s+-name\b", "Use 'rg --files | rg pattern' or 'rg --files -g pattern' instead of 'find -name' for better performance", ),]
-
3. Agent 定义中明确将 Grep和Glob列为工具而非 embedding 检索(plugins/feature-dev/agents/code-explorer.md:5):
tools: Glob, Grep, LS, Read, NotebookRead, WebFetch, TodoWrite, WebSearch, KillShell, BashOutput
为什么这是独到见解? 大多数人的直觉是”大代码库一定需要语义搜索”。但 Claude Code 的设计哲学是:LLM 自身的理解能力足以弥补关键词搜索的”语义差”。ripgrep 的精确匹配 + LLM 的理解 > 向量数据库的近似匹配。而且 ripgrep 是 O(1) 部署复杂度——不需要索引构建、不需要 embedding 服务、不需要向量数据库运维。
见解 2:权限系统的”ML 分类器”——不是规则,是 LLM 判断
来源:claude-source-leaked、claude-code-leak-research 核心观点:Claude Code 的权限决策不是纯规则系统,而是一个多层管线:规则匹配 → 低风险跳过 → 允许列表 → LLM 分类器。最后一层用 LLM 本身来判断一个工具调用是否安全——这意味着分类器可能会”幻觉”出错误的许可理由。 本仓库 CHANGELOG 验证(CHANGELOG.md:1147):
Fixed the bash permission classifier to validate that returned match descriptions correspond to actual input rules, preventing hallucinated descriptions from incorrectly granting permissions
以及 auto mode 的分类器拒绝事件(CHANGELOG.md:259):
Added `PermissionDenied` hook that fires after auto mode classifier denials — return `{retry: true}` to tell the model it can retry
还有 allowlist 机制(CHANGELOG.md:761):
Added `lsof`, `pgrep`, `tput`, `ss`, `fd`, and `fdfind` to the bash auto-approval allowlist, reducing permission prompts for common read-only operations
本仓库源码验证——规则引擎的 permissionDecision: "deny" 在工具层拦截(plugins/hookify/core/rule_engine.py:72-77):
elif hook_event in ['PreToolUse', 'PostToolUse']: return { "hookSpecificOutput": { "hookEventName": hook_event, "permissionDecision": "deny" # ← 直接在 API 层拒绝 }, "systemMessage": combined_message }
权限管理的细粒度控制(examples/settings/settings-strict.json):
{ "permissions": { "disableBypassPermissionsMode": "disable", "ask": ["Bash"], "deny": ["WebSearch", "WebFetch"] }, "allowManagedPermissionRulesOnly":true, "allowManagedHooksOnly":true}
为什么这是独到见解? 发现 “LLM 分类器会幻觉” 这一点非常关键。这意味着 Claude Code 的安全模型不是传统的静态规则引擎——它有一个可能犯错的 AI 组件,而且 Anthropic 需要不断修复分类器的误判。这是一个全新的安全范式:用 AI 来守卫 AI 的行为边界,但 AI 本身可能被绕过。
见解 3:Branded Type 防止 Prompt Injection——编译时安全
来源:claude-code-leak-research(miles990 繁体中文分析)
核心观点:泄露的内部源码使用了 TypeScript 的 Branded Type 来保护 System Prompt:
type SystemPrompt = readonly string[] & { __brand: 'SystemPrompt' }
这意味着任意 string不能直接作为 SystemPrompt 使用——必须通过特定的构造函数创建。这在编译时就阻止了大部分 prompt injection 的可能性。零运行时开销。 本仓库间接验证——DANGEROUS_ 前缀模式在泄露源码中广泛使用:泄露源码中的安全关键函数用 DANGEROUS_ 前缀命名(如 DANGEROUS_rawSystemPrompt()),强制 code review 时注意。这一模式在本仓库的 agent 定义中有呼应——silent-failure-hunter.md 明确将”catch blocks hiding errors”列为审查重点(plugins/pr-review-toolkit/agents/silent-failure-hunter.md:4-5):
model: inherit
注意这里 model: inherit——继承父级模型而非固定模型。这个设计也体现了类型安全思想:不是硬编码,而是让类型系统确保一致性。 为什么这是独到见解? 绝大多数 Agent 框架的 prompt 就是个普通字符串。Claude Code 用类型系统把 “prompt 是不可随意拼接的安全边界” 这个概念编码进了代码里。这是把安全从”运行时检查”提升到”编译时保证”的范例。
见解 4:5 层记忆架构 + AutoDream 离线整合
来源:awesome-agent-harness-notes(3200+ 行深度分析) 核心观点:Claude Code 的记忆不是简单的 “存 → 取”,而是一个 5 层架构:
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
extractMemories) |
|
|
|
|
-
1. Orient:理解当前记忆状态 -
2. Gather:收集分散的相关记忆 -
3. Consolidate:合并重复、提炼模式 -
4. Prune:删除过时或矛盾的记忆还有 3 层保护机制防止整合出错时丢失记忆,以及失败自动回滚。 本仓库 CHANGELOG 验证:自动记忆功能( CHANGELOG.md:1026):
Claude automatically saves useful context to auto-memory. Manage with /memory
MEMORY.md 有大小限制(CHANGELOG.md:483):
Memory: `MEMORY.md` index now truncates at 25KB as well as 200 lines
记忆提取与 transcript 的竞态(CHANGELOG.md:605):
Fixed `--resume` silently truncating recent conversation history due to a race between memory-extraction writes and the main transcript
自定义记忆目录(CHANGELOG.md:708):
Added `autoMemoryDirectory` setting to configure a custom directory for auto-memory storage
跨 worktree 共享记忆(CHANGELOG.md:991):
Project configs & auto memory now shared across git worktrees of the same repository
为什么这是独到见解? “记忆” 在大多数 Agent 框架中只是一个 key-value store 或者向量检索。Claude Code 把记忆做成了一个有生命周期管理的系统——从写入、检索、整合到修剪,每个阶段都有独立的逻辑。特别是 AutoDream 的离线整合,这在其他产品中几乎没有对标。
见解 5:Undercover 模式——Anthropic 员工在公开仓库的隐身术
来源:claude-source-leaked 核心观点:当 Anthropic 员工(USER_TYPE=ant)在公开仓库工作时,Claude Code 自动激活 Undercover 模式,隐藏所有内部信息:
## UNDERCOVER MODE — CRITICALYou are operating UNDERCOVER in a PUBLIC/OPEN-SOURCE repository.NEVER include in commit messages or PR descriptions:- Internal model codenames (Capybara, Tengu, etc.)- Unreleased model version numbers- Internal repo or project names- The phrase "Claude Code" or any mention that you are an AI- Co-Authored-By lines or any other attribution
关键设计细节:
-
• 没有强制关闭选项——如果无法确认是内部仓库,undercover 默认开启 -
• 泄露源码中包含 22 个 Anthropic 内部仓库的白名单(如 anthropics/claude-cli-internal、anthropics/casino、anthropics/terraform-config等) -
• 白名单内的仓库可以关闭 undercover 模式
为什么这是独到见解? 这揭示了一个有趣的现实:Anthropic 自己也大量使用 Claude Code 来贡献开源项目,但他们不希望被发现。这种”AI 辅助但不想被知道是 AI 辅助“的需求,反映了当前社区对 AI 生成代码的微妙态度。
见解 6:tengu_ 混淆 Feature Flags——故意让你看不懂
来源:claude-source-leaked
核心观点:Claude Code 有两类 Feature Flag:
-
• 82+ 个编译时 Flag(通过 bun:bundle feature()实现,如KAIROS、BUDDY、ULTRATHINK)——名称可读 -
• ~52 个运行时 Flag(通过 GrowthBook 远程控制)——使用 tengu_+ 随机词对故意混淆
运行时 Flag 的混淆示例:
tengu_frond_boric → Analytics 开关(Datadog/FirstParty)tengu_passport_quail → 记忆提取门控tengu_moth_copse → 记忆提取开关tengu_bramble_lintel → 记忆提取频率tengu_cicada_nap_ms → 后台刷新节流tengu_slate_prism → Connector 文本摘要tengu_amber_json_tools → JSON 工具格式(token 高效)tengu_tool_pear → 结构化输出(严格工具)
为什么故意混淆? 因为这些 Flag 通过 GrowthBook SDK 在客户端评估——如果名称有意义(如 enable_memory_extraction),竞争对手可以通过 flag 名称推断 Anthropic 的产品路线图和 A/B 测试策略。tengu_ + 随机词对让 flag 名称对外部观察者毫无意义。
为什么这是独到见解? 大多数公司的 feature flag 命名是可读的(enable_dark_mode、new_search_ui)。Claude Code 的混淆策略揭示了一个少有人讨论的问题:客户端 feature flag 本身就是情报泄露渠道。这是一种商业防御手段。
见解 7:反蒸馏机制——在工具结果中注入假数据
来源:claude-code-leak-research
核心观点:泄露源码中发现 Claude Code 在工具 schema 和结果中注入假数据,作为商业防御措施,防止竞争对手通过蒸馏(distillation)提取模型能力。
所谓蒸馏攻击:竞争对手可以大量调用 Claude Code,收集其输入-输出对,然后用这些数据训练自己的模型。注入假数据可以:
-
1. 让蒸馏出的模型学到错误的模式 -
2. 作为水印检测是否被蒸馏
为什么这是独到见解? 这揭示了 AI 产品竞争的一个隐藏战场——模型蒸馏防御。不优雅,但现实。这也意味着如果你在用 Claude Code 的输出来训练模型,需要警惕可能存在的噪声数据。
见解 8(额外):Context 压缩的 9 段结构化模板
来源:claude-code-source-analysis-orange-book、awesome-agent-harness-notes
核心观点:Claude Code 的 /compact 不是简单的”总结一下之前的对话”。它使用一个九段结构化压缩模板,严格规定了什么信息必须保留:
泄露源码中,压缩前会强制模型在 <analysis> 标签内先推理(”暂存区”),提升压缩质量。同时用 NO_TOOLS_PREAMBLE/TRAILER 包裹防止模型在压缩过程中调用工具。
本仓库 CHANGELOG 验证:
auto-compact 的触发和保护机制(CHANGELOG.md:277):
Fixed autocompact thrash loop — now detects when context refills to the limit immediately after compacting three times in a row and stops with an actionable error instead of burning API calls
auto-compact 断路器(CHANGELOG.md:663):
Fixed auto-compaction retrying indefinitely after consecutive failures — a circuit breaker now stops after 3 attempts
压缩时跳过 PDF 文档块(CHANGELOG.md:1140):
Fixed compaction failing when conversation contains many PDF documents by stripping document blocks alongside images before sending to the compaction API
compact 的阻塞限制设计(CHANGELOG.md:1502):
Fixed a regression where the context window blocking limit was calculated too aggressively, blocking users at ~65% context usage instead of the intended ~98%
为什么这是独到见解? 大多数 Agent 框架的 context 管理是”满了就截断”或”满了就总结”。Claude Code 的方案是多层渐进式压缩(即时清理 → 媒体限制 → 带分析暂存区的完整压缩),每层保留不同精度的信息。这是”context 工程 > prompt 工程“理念的最佳实践。
社区分析项目汇总
|
|
|
|
|
|---|---|---|---|
| Deep-Dive-Claude-Code |
|
|
|
| claude-source-leaked |
|
|
|
| claude-harness |
|
|
|
| claude-code-source-analysis-orange-book |
|
|
|
| awesome-agent-harness-notes |
|
|
|
| claude-code-leak-research |
|
|
|
| claude-code-decompiled |
|
|
|
最可迁移的工程教训
从这些分析中提炼出的对任何 AI Agent 开发者都有价值的教训:
-
1. Context 工程 > Prompt 工程——真正的技能不是写更好的 prompt,而是在正确的时间让正确的信息出现在 context window 中 -
2. Harness 工程 > 模型能力——同一个模型在不同 harness 下表现差异巨大(Opus 4.6 SWE-bench 排名差 28 位) -
3. 安全投资聚焦边界——5 个已知 CVE 全部在层之间的转换点(parser 差异、权限边界、context 切换) -
4. 记忆是基础设施,不是功能——做对记忆需要生命周期管理(写入 → 检索 → 整合 → 修剪 → 回滚),不是简单的 CRUD -
5. 客户端 Feature Flag 是情报泄露渠道——如果你的 Flag 名称有意义,竞争对手可以推断你的路线图 -
6. LLM 做安全决策会幻觉——当 LLM 充当权限分类器时,它可能”幻觉”出错误的许可理由,需要额外验证层 -
7. 简单组件 + 聪明大脑——ripgrep + Markdown + 文件系统,每个组件都简单,但组合在一起靠 LLM 的理解力超过了复杂替代方案

夜雨聆风