logo
0
0
WeChat Login
sanbuphy<physicoada@gmail.com>
Make doc tree filenames clickable links with bilingual annotations

Claude Code v2.1.88 — 源码分析

从 npm 包 @anthropic-ai/claude-code 2.1.88 版本中提取。 发布的包只有一个打包后的 cli.js(~12MB)。本仓库的 src/ 目录包含从 npm 包中解包的 TypeScript 源码

语言: English | 中文


目录


深度分析文档 (docs/)

基于 v2.1.88 反编译源码的分析报告,中英双语。

docs/ ├── en/ # English │ ├── [01-telemetry-and-privacy.md] # Telemetry & Privacy — what's collected, why you can't opt out │ ├── [02-hidden-features-and-codenames.md] # Codenames (Capybara/Tengu/Numbat), feature flags, internal vs external │ ├── [03-undercover-mode.md] # Undercover Mode — hiding AI authorship in open-source repos │ ├── [04-remote-control-and-killswitches.md]# Remote Control — managed settings, killswitches, model overrides │ └── [05-future-roadmap.md] # Future Roadmap — Numbat, KAIROS, voice mode, unreleased tools │ └── zh/ # 中文 ├── [01-遥测与隐私分析.md] # 遥测与隐私 — 收集了什么,为什么无法退出 ├── [02-隐藏功能与模型代号.md] # 隐藏功能 — 模型代号,feature flag,内外用户差异 ├── [03-卧底模式分析.md] # 卧底模式 — 在开源项目中隐藏 AI 身份 ├── [04-远程控制与紧急开关.md] # 远程控制 — 托管设置,紧急开关,模型覆盖 └── [05-未来路线图.md] # 未来路线图 — Numbat,KAIROS,语音模式,未上线工具

点击文件名即可跳转到对应报告。

#主题核心发现链接
01遥测与隐私双层分析管道(1P→Anthropic, Datadog)。环境指纹、进程指标、每个事件携带会话/用户 ID。没有面向用户的退出开关OTEL_LOG_TOOL_DETAILS=1 可记录完整工具输入。EN · 中文
02隐藏功能与代号动物代号体系(Capybara v8, Tengu, Fennec→Opus 4.6, Numbat 下一代)。Feature flag 用随机词对掩盖用途。内部用户获得更好的 prompt 和验证代理。隐藏命令:/btw/stickersEN · 中文
03卧底模式Anthropic 员工在公开仓库自动进入卧底模式。模型指令:"不要暴露你的掩护身份" — 剥离所有 AI 归属,commit 看起来像人类写的。没有强制关闭选项。EN · 中文
04远程控制与 Killswitch每小时轮询 /api/claude_code/settings。危险变更弹出阻塞对话框 — 拒绝 = 程序退出。6+ 紧急开关(绕过权限、快速模式、语音模式、分析 sink)。GrowthBook 可无同意改变任何用户行为。EN · 中文
05未来路线图Numbat 代号确认。Opus 4.7 / Sonnet 4.8 开发中。KAIROS = 完全自主代理模式,心跳 <tick>、推送通知、PR 订阅。语音模式(push-to-talk)已就绪。发现 17 个未上线工具。EN · 中文

缺失模块说明(108 个模块)

源码不完整。 108 个被 feature() 门控的模块未包含在 npm 包中。 它们仅存在于 Anthropic 的内部 monorepo 中,在编译时被死代码消除。 无法cli.jssdk-tools.d.ts 或任何已发布的制品中恢复。

Anthropic 内部代码(~70 个模块,从未发布)

这些模块在 npm 包中没有任何源文件。它们是 Anthropic 内部基础设施。

点击展开完整列表
ModulePurposeFeature Gate
daemon/main.js后台守护进程管理器DAEMON
daemon/workerRegistry.js守护进程 worker 注册DAEMON
proactive/index.js主动通知系统PROACTIVE
contextCollapse/index.js上下文折叠服务(实验性)CONTEXT_COLLAPSE
contextCollapse/operations.js折叠操作CONTEXT_COLLAPSE
contextCollapse/persist.js折叠持久化CONTEXT_COLLAPSE
skillSearch/featureCheck.js远程技能特性检查EXPERIMENTAL_SKILL_SEARCH
skillSearch/remoteSkillLoader.js远程技能加载器EXPERIMENTAL_SKILL_SEARCH
skillSearch/remoteSkillState.js远程技能状态EXPERIMENTAL_SKILL_SEARCH
skillSearch/telemetry.js技能搜索遥测EXPERIMENTAL_SKILL_SEARCH
skillSearch/localSearch.js本地技能搜索EXPERIMENTAL_SKILL_SEARCH
skillSearch/prefetch.js技能预取EXPERIMENTAL_SKILL_SEARCH
coordinator/workerAgent.js多代理协调器 workerCOORDINATOR_MODE
bridge/peerSessions.js桥接对等会话管理BRIDGE_MODE
assistant/index.jsKAIROS 助手模式KAIROS
assistant/AssistantSessionChooser.js助手会话选择器KAIROS
compact/reactiveCompact.js响应式上下文压缩CACHED_MICROCOMPACT
compact/snipCompact.js基于裁剪的压缩HISTORY_SNIP
compact/snipProjection.js裁剪投影HISTORY_SNIP
compact/cachedMCConfig.js缓存微压缩配置CACHED_MICROCOMPACT
sessionTranscript/sessionTranscript.js会话转录服务TRANSCRIPT_CLASSIFIER
commands/agents-platform/index.js内部代理平台ant (内部)
commands/assistant/index.js助手命令KAIROS
commands/buddy/index.jsBuddy 系统通知BUDDY
commands/fork/index.jsFork 子代理命令FORK_SUBAGENT
commands/peers/index.js多对等命令BRIDGE_MODE
commands/proactive.js主动命令PROACTIVE
commands/remoteControlServer/index.js远程控制服务器DAEMON + BRIDGE_MODE
commands/subscribe-pr.jsGitHub PR 订阅KAIROS_GITHUB_WEBHOOKS
commands/torch.js内部调试工具TORCH
commands/workflows/index.js工作流命令WORKFLOW_SCRIPTS
jobs/classifier.js内部任务分类器TEMPLATES
memdir/memoryShapeTelemetry.js记忆形态遥测MEMORY_SHAPE_TELEMETRY
services/sessionTranscript/sessionTranscript.js会话转录TRANSCRIPT_CLASSIFIER
tasks/LocalWorkflowTask/LocalWorkflowTask.js本地工作流任务WORKFLOW_SCRIPTS
protectedNamespace.js内部命名空间守卫ant (内部)
protectedNamespace.js (envUtils)受保护命名空间运行时ant (内部)
coreTypes.generated.js生成的核心类型ant (内部)
devtools.js内部开发工具ant (内部)
attributionHooks.js内部归属钩子COMMIT_ATTRIBUTION
systemThemeWatcher.js系统主题监视器AUTO_THEME
udsClient.js / udsMessaging.jsUDS 消息客户端UDS_INBOX

Feature-Gated 工具(~20 个模块)

这些工具有类型签名,但实现被编译时移除。

点击展开完整列表
ToolPurposeFeature Gate
REPLTool交互式 REPL(VM 沙箱)ant (内部)
SnipTool上下文裁剪HISTORY_SNIP
SleepTool代理循环中的休眠/延迟PROACTIVE / KAIROS
MonitorToolMCP 监控MONITOR_TOOL
OverflowTestTool溢出测试OVERFLOW_TEST_TOOL
WorkflowTool工作流执行WORKFLOW_SCRIPTS
WebBrowserTool浏览器自动化WEB_BROWSER_TOOL
TerminalCaptureTool终端捕获TERMINAL_PANEL
TungstenTool内部性能监控ant (内部)
VerifyPlanExecutionTool计划验证CLAUDE_CODE_VERIFY_PLAN
SendUserFileTool向用户发送文件KAIROS
SubscribePRToolGitHub PR 订阅KAIROS_GITHUB_WEBHOOKS
SuggestBackgroundPRTool建议后台 PRKAIROS
PushNotificationTool推送通知KAIROS
CtxInspectTool上下文检查CONTEXT_COLLAPSE
ListPeersTool列出活跃对等方UDS_INBOX
DiscoverSkillsTool技能发现EXPERIMENTAL_SKILL_SEARCH

文本/Prompt 资源(~6 个文件)

FilePurpose
yolo-classifier-prompts/auto_mode_system_prompt.txt自动模式分类器系统提示
yolo-classifier-prompts/permissions_anthropic.txtAnthropic 内部权限提示
yolo-classifier-prompts/permissions_external.txt外部用户权限提示
verify/SKILL.md验证技能文档
verify/examples/cli.mdCLI 验证示例
verify/examples/server.md服务端验证示例

为什么缺失

Anthropic 内部 Monorepo 发布的 npm 包 ────────────────────── ───────────────────── feature('DAEMON') → true ──构建──→ feature('DAEMON') → false ↓ ↓ daemon/main.js ← 包含 ──打包──→ daemon/main.js ← 删除 (DCE) tools/REPLTool ← 包含 ──打包──→ tools/REPLTool ← 删除 (DCE) proactive/ ← 包含 ──打包──→ (被引用但 src/ 中不存在)

Bun 的 feature()编译时内建函数

  • 在 Anthropic 内部构建中返回 true → 代码保留在 bundle 中
  • 在发布构建中返回 false → 代码被死代码消除
  • 108 个模块在已发布的制品中根本不存在

版权与免责声明

Copyright (c) Anthropic PBC. All rights reserved. 本仓库中所有源码均为 Anthropic 的知识产权。 本仓库仅用于技术研究和教育目的。严禁商业使用。 如果您是版权所有者并认为本仓库侵犯了您的权利, 请联系仓库所有者立即删除。

统计数据

项目数量
源文件 (.ts/.tsx)~1,884
代码行数~512,664
最大单文件query.ts (~785KB)
内置工具~40+
斜杠命令~80+
依赖 (node_modules)~192 个包
运行时Bun(编译为 Node.js >= 18 bundle)

代理模式

核心循环 ======== 用户 --> messages[] --> Claude API --> 响应 | stop_reason == "tool_use"? / \ 是 否 | | 执行工具 返回文本 追加 tool_result 循环回退 -----------------> messages[] 这就是最小的代理循环。Claude Code 在此循环上 包裹了生产级线束:权限、流式传输、并发、 压缩、子代理、持久化和 MCP。

目录参考

src/ ├── main.tsx # REPL 引导程序,4,683 行 ├── QueryEngine.ts # SDK/headless 查询生命周期引擎 ├── query.ts # 主代理循环 (785KB,最大文件) ├── Tool.ts # 工具接口 + buildTool 工厂 ├── Task.ts # 任务类型、ID、状态基类 ├── tools.ts # 工具注册、预设、过滤 ├── commands.ts # 斜杠命令定义 ├── context.ts # 用户输入上下文 ├── cost-tracker.ts # API 成本累积 ├── setup.ts # 首次运行设置流程 │ ├── bridge/ # Claude Desktop / 远程桥接 │ ├── bridgeMain.ts # 会话生命周期管理器 │ ├── bridgeApi.ts # HTTP 客户端 │ ├── bridgeConfig.ts # 连接配置 │ ├── bridgeMessaging.ts # 消息中继 │ ├── sessionRunner.ts # 进程生成 │ ├── jwtUtils.ts # JWT 刷新 │ ├── workSecret.ts # 认证令牌 │ └── capacityWake.ts # 基于容量的唤醒 │ ├── cli/ # CLI 基础设施 │ ├── handlers/ # 命令处理器 │ └── transports/ # I/O 传输 (stdio, structured) │ ├── commands/ # ~80 个斜杠命令 ├── components/ # React/Ink 终端 UI ├── entrypoints/ # 应用入口点 ├── hooks/ # React hooks ├── services/ # 业务逻辑层 ├── state/ # 应用状态 ├── tasks/ # 任务实现 ├── tools/ # 40+ 工具实现 ├── types/ # 类型定义 ├── utils/ # 工具函数(最大目录) └── vendor/ # 原生模块源码存根

架构概览

┌─────────────────────────────────────────────────────────────────────┐ │ 入口层 │ │ cli.tsx ──> main.tsx ──> REPL.tsx (交互式) │ │ └──> QueryEngine.ts (headless/SDK) │ └──────────────────────────────┬──────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────────────┐ │ 查询引擎 │ │ submitMessage(prompt) ──> AsyncGenerator<SDKMessage> │ │ ├── fetchSystemPromptParts() ──> 组装系统提示词 │ │ ├── processUserInput() ──> 处理 /命令 │ │ ├── query() ──> 主代理循环 │ │ │ ├── StreamingToolExecutor ──> 并行工具执行 │ │ │ ├── autoCompact() ──> 上下文压缩 │ │ │ └── runTools() ──> 工具编排 │ │ └── yield SDKMessage ──> 流式传输给消费者 │ └──────────────────────────────┬──────────────────────────────────────┘

构建说明

本源码不能直接从本仓库编译

  • 缺少 tsconfig.json、构建脚本和 Bun bundler 配置
  • feature() 调用是 Bun 编译时内建函数 — 在打包时解析
  • MACRO.VERSION 在构建时注入
  • process.env.USER_TYPE === 'ant' 部分是 Anthropic 内部的
  • 编译后的 cli.js 是一个自包含的 12MB bundle,只需 Node.js >= 18

构建说明详见 QUICKSTART.md


许可证

本仓库中所有源码版权归 Anthropic PBC 所有。本仓库仅用于技术研究和教育目的。完整许可条款请参阅原始 npm 包。