LEnc95/claude-code
GitHub: LEnc95/claude-code
通过 npm sourcemap 泄露的 Claude Code 全部源代码备份及深度解析,揭示了 Anthropic AI 编程 CLI 的内部架构、隐藏功能和安全机制。
Stars: 1 | Forks: 1
# Claude Code 全部源代码通过 npm 的 Sourcemap 泄露了,我们来聊聊这件事
今天早些时候(2026 年 3 月 31 日)- X 上的 Chaofan Shou 发现了 Anthropic 可能不希望世界看到的东西:Claude Code(Anthropic 官方 AI 编程 CLI)的**全部源代码**,通过打包进发布包的 sourcemap 文件,赤裸裸地躺在 npm registry 上。
[](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/9495a4c47b135134.png)
这个仓库是泄露源代码的备份,而这篇 README 则是对其中内容的全面解析,包括泄露是如何发生的,以及最重要的是,我们现在知道了哪些原本不该公开的事情。
我们开始吧。
## 这到底是怎么发生的?
这部分真的让我想说“……认真的吗?”
当你向 npm 发布 JavaScript/TypeScript 包时,构建工具链通常会生成**source map 文件**(`.map` 文件)。这些文件是压缩/打包后的生产代码与原始源代码之间的桥梁,它们的存在是为了当生产环境出现崩溃时,堆栈跟踪可以指向*原始*文件中的*实际*代码行,而不是某个压缩后的代码块中令人无法理解的第 1 行第 48293 列。
但有趣的是,**source maps 包含了原始源代码**。真实的、字面意义上的原始源代码,作为字符串嵌入在一个 JSON 文件中。
`.map` 文件的结构大致如下:
```
{
"version": 3,
"sources": ["../src/main.tsx", "../src/tools/BashTool.ts", "..."],
"sourcesContent": ["// The ENTIRE original source code of each file", "..."],
"mappings": "AAAA,SAAS,OAAO..."
}
```
那个 `sourcesContent` 数组?那里面包含了所有东西。
每个文件。每条注释。每个内部常量。每个系统 prompt。所有的一切,都静静地躺在那个 JSON 文件中,只要有人运行 `npm pack` 甚至仅仅是浏览包内容,npm 就会很乐意将其提供给他们。
这不是什么新奇的攻击向量。它以前发生过,老实说它还会再发生。
这种错误几乎总是相同的:有人忘记将 `*.map` 添加到他们的 `.npmignore` 中,或者没有配置他们的打包工具在构建生产版本时跳过 source map 的生成。在 Bun 的打包工具(Claude Code 使用的)中,除非你明确关闭,否则默认会生成 source maps。
[](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/11ccce971e135135.png)
最搞笑的部分是,那里有一个专门设计的名为["卧底模式"](#undercover-mode--do-not-blow-your-cover)的完整系统,旨在防止 Anthropic 的内部信息泄露。
他们构建了一整个子系统来阻止他们的 AI 在 git 提交中意外暴露内部代号……然后却(很可能由 Claude 自己)通过一个 `.map` 文件将整个源代码发布出去了。
## Claude 表面之下究竟是什么?
如果你与世隔绝,那么科普一下,Claude Code 是 Anthropic 官方的 CLI 工具,用于与 Claude 一起编程,它也是目前最流行的 AI 编程代理。
从外部来看,它像是一个经过精心打磨但相对简单的 CLI。
从内部来看,它是一个 **785KB 的 [`main.tsx`](https://github.com/kuberwastaken/claude-code/blob/main/main.tsx)** 入口文件,包含一个自定义的 React 终端渲染器、40 多个工具、一个多代理编排系统、一个名为 "dream" 的后台记忆巩固引擎,以及更多其他东西。
废话不多说,以下是我花了一个下午深入钻研源代码后,发现的一些确实非常酷的部分:
## BUDDY - 你终端里的拓麻歌子(电子宠物)
我没开玩笑。
Claude Code 有一个完整的**拓麻歌子风格的伙伴宠物系统**,名叫 "Buddy"。这是一个**确定性的抽卡系统**,具有物种稀有度、闪光变种、程序化生成的属性,以及在首次孵化时由 Claude 编写的灵魂描述,类似于 OpenClaw。
整个系统位于 [`buddy/`](https://github.com/kuberwastaken/claude-code/tree/main/buddy) 中,并由 `BUDDY` 编译时特性开关控制。
### 抽卡系统
你 buddy 的物种由一个 **Mulberry32 PRNG**(一种快速 32 位伪随机数生成器)决定,该生成器使用你的 `userId` 哈希加上盐值 `'friend-2026-401'` 作为种子进行生成:
```
// Mulberry32 PRNG - deterministic, reproducible per-user
function mulberry32(seed: number): () => number {
return function() {
seed |= 0; seed = seed + 0x6D2B79F5 | 0;
var t = Math.imul(seed ^ seed >>> 15, 1 | seed);
t = t + Math.imul(t ^ t >>> 7, 61 | t) ^ t;
return ((t ^ t >>> 14) >>> 0) / 4294967296;
}
}
```
同一个用户总是会获得相同的 buddy。
### 18 个物种(在代码中被混淆)
物种名称通过 `String.fromCharCode()` 数组进行隐藏——Anthropic 显然不希望这些名称在字符串搜索中显示出来。解码后,完整的物种列表为:
| 稀有度 | 物种 |
|--------|---------|
| **普通** (60%) | Pebblecrab, Dustbunny, Mossfrog, Twigling, Dewdrop, Puddlefish |
| **非凡** (25%) | Cloudferret, Gustowl, Bramblebear, Thornfox |
| **稀有** (10%) | Crystaldrake, Deepstag, Lavapup |
| **史诗** (4%) | Stormwyrm, Voidcat, Aetherling |
| **传说** (1%) | Cosmoshale, Nebulynx |
最重要的是,还有一个完全独立于稀有度的 **1% 闪光几率**。因此,一只传说级的闪光 Nebulynx 只有 **0.01%** 的概率被抽取出来。天哪。
### 属性、眼睛、帽子和灵魂
每个 buddy 都会程序化生成以下内容:
- **5 项属性**:`DEBUGGING`、`PATIENCE`、`CHAOS`、`WISDOM`、`SNARK`(各项范围 0-100)
- **6 种可能的眼睛样式** 和 **8 种帽子选项**(部分受稀有度限制)
- **一个“灵魂”**,如前所述,是由 Claude 在首次孵化时生成的性格描述,以角色的口吻编写
这些精灵图被渲染为 **5 行高、12 字符宽的 ASCII 艺术**,并带有多个动画帧。其中有闲置动画、反应动画,它们就坐在你的输入提示符旁边。
### 背景设定
代码将 2026 年 4 月 1 日至 7 日作为一个**预告窗口**(可能为了愚人节彩蛋?),而全面发布则定于 2026 年 5 月。这个伙伴有一个系统 prompt,它会告诉 Claude:
```
A small {species} named {name} sits beside the user's input box and
occasionally comments in a speech bubble. You're not {name} - it's a
separate watcher.
```
所以它不仅仅是装饰性的——buddy 有自己的性格,并且当你叫它的名字时它可以做出回应。我真的希望他们能把它发布出来。
## KAIROS - "永远在线的 Claude"
在 [`assistant/`](https://github.com/kuberwastaken/claude-code/tree/main/assistant) 内部,有一个完整的模式叫做 **KAIROS**,即一个持久的、持续运行的 Claude 助手,它不需要等待你输入。它会观察、记录,并**主动**对它注意到的事情采取行动。
这受 `PROACTIVE` / `KAIROS` 编译时特性开关控制,并且在外部构建版本中完全不存在。
### 工作原理
KAIROS 维护着**只追加的每日日志文件**——它会在一整天中记录观察、决策和行动。以固定的时间间隔,它会接收到 `` prompt,让它决定是主动采取行动还是保持安静。
该系统有一个 **15 秒的阻塞预算**,任何会阻塞用户工作流超过 15 秒的主动行动都会被推迟。这是 Claude 试图提供帮助而又不惹人烦的一种方式。
### Brief 模式
当 KAIROS 处于活动状态时,会有一种特殊的输出模式叫做 **Brief**,即极其简短的回复,专为不应淹没你终端的持久性助手而设计。可以把它想象成一个健谈的朋友和一个只在有重要事情时才说话的专业助理之间的区别。
### 专属工具
KAIROS 拥有普通 Claude Code 所没有的工具:
| 工具 | 功能描述 |
|------|-------------|
| **SendUserFile** | 将文件直接推送给用户(通知、摘要) |
| **PushNotification** | 向用户的设备发送推送通知 |
| **SubscribePR** | 订阅并监控 Pull Request 活动 |
## ULTRAPLAN - 30 分钟的远程规划会话
从基础设施的角度来看,这个功能非常疯狂。
**ULTRAPLAN** 是一种模式,Claude Code 会将复杂的规划任务卸载到一个运行 **Opus 4.6** 的**远程 Cloud Container Runtime (CCR) 会话**中,给它长达 **30 分钟**的思考时间,并让你通过浏览器批准结果。
基本流程如下:
1. Claude Code 识别出需要深度规划的任务
2. 它通过 `tengu_ultraplan_model` 配置启动一个远程 CCR 会话
3. 你的终端显示轮询状态——每 **3 秒**检查一次结果
4. 与此同时,一个基于浏览器的 UI 让你可以观看规划过程并批准/拒绝它
5. 批准后,会有一个特殊的哨兵值 `__ULTRAPLAN_TELEPORT_LOCAL__` 将结果“传送”回你的本地终端
## “梦”系统 - Claude 真的在做梦
好吧,这确实是这里最酷的东西之一。
Claude Code 有一个叫做 **autoDream** 的系统([`services/autoDream/`](https://github.com/kuberwastaken/claude-code/tree/main/services/autoDream))——一个作为**派生子代理**运行的后台记忆巩固引擎。这个名字非常有意义。这是 Claude……在做梦。
这非常有趣,因为[上周我对 LITMUS 产生了同样的想法——OpenClaw 的子代理创造性地享受休闲时光,以寻找有趣的新论文](https://github.com/Kuberwastaken/litmus)
### 三重触发门
梦境并不会随心所欲地运行。它有一个**三重触发门系统**:
1. **时间门**:距离上次做梦已过去 24 小时
2. **会话门**:距离上次做梦至少有 5 个会话
3. **锁门**:获取巩固锁(防止并发做梦)
这三者必须全部通过。这既防止了过度做梦,也防止了做梦不足。
### 四个阶段
当它运行时,梦境会遵循 [`consolidationPrompt.ts`](https://github.com/kuberwastaken/claude-code/blob/main/services/autoDream/consolidationPrompt.ts) 中的提示,严格执行四个阶段:
**阶段 1 - 定向 (Orient)**:通过 `ls` 列出记忆目录,读取 `MEMORY.md`,浏览现有的主题文件以进行改进。
**阶段 2 - 收集近期信号**:寻找值得持久化的新信息。按优先级排列的来源有:每日日志 → 偏移的记忆 → 对话记录搜索。
**阶段 3 - 巩固**:写入或更新记忆文件。将相对日期转换为绝对日期。删除相互矛盾的事实。
**阶段 4 - 修剪与索引**:保持 `MEMORY.md` 在 200 行且约 25KB 以下。移除过时的指针。解决矛盾。
提示词中原话是这样写的:
梦境子代理拥有**只读的 bash 权限**——它可以查看你的项目,但不能修改任何东西。这纯粹是一次记忆巩固过程。
## 卧底模式 - "不要暴露你的掩护"
从企业战略角度来看,这个发现非常迷人。
Anthropic 员工(通过 `USER_TYPE === 'ant'` 识别)在公共/开源仓库上使用 Claude Code。**Undercover Mode**([`utils/undercover.ts`](https://github.com/kuberwastaken/claude-code/blob/main/utils/undercover.ts))可以防止 AI 在提交和 PR 中意外泄露内部信息。
当激活时,它会在系统 prompt 中注入以下内容:
```
## UNDERCOVER 模式 - CRITICAL
You are operating UNDERCOVER in a PUBLIC/OPEN-SOURCE repository. Your commit
messages, PR titles, and PR bodies MUST NOT contain ANY Anthropic-internal
information. Do not blow your cover.
NEVER include in commit messages or PR descriptions:
- Internal model codenames (animal names like Capybara, Tengu, etc.)
- Unreleased model version numbers (e.g., opus-4-7, sonnet-4-8)
- Internal repo or project names
- Internal tooling, Slack channels, or short links (e.g., go/cc, #claude-code-…)
- The phrase "Claude Code" or any mention that you are an AI
- Co-Authored-By lines or any other attribution
```
激活逻辑如下:
- `CLAUDE_CODE_UNDERCOVER=1` 强制开启(即使在内部仓库中)
- 否则它是**自动的**:除非仓库的远程地址匹配内部白名单,否则默认激活
- **没有强制关闭的选项**——*"如果我们不确定自己是否处于内部仓库中,我们就会保持卧底状态。"*
所以这证实了以下几点:
1. **Anthropic 员工正在积极使用 Claude Code 为开源做贡献**——并且 AI 被指示隐瞒它是 AI 的事实
2. **内部模型代号是动物名称**——Capybara、Tengu 等。
3. **"Tengu"** 作为 feature flag 和分析事件的前缀出现了数百次——它几乎可以肯定就是 **Claude Code 的内部项目代号**
所有这些在外部构建版本中都经过了死代码消除。但是 source maps 可不在乎什么死代码消除。
这让我想知道他们在内部对开源仓库造成了多大的破坏
## 多代理编排 - "Coordinator 模式"
Claude Code 在 [`coordinator/`](https://github.com/kuberwastaken/claude-code/tree/main/coordinator) 中有一个完整的**多代理编排系统**,通过 `CLAUDE_CODE_COORDINATOR_MODE=1` 激活。
启用后,Claude Code 会从单个代理转变为一个**协调器**,并行生成、指导和管理多个工作代理。[`coordinatorMode.ts`](https://github.com/kuberwastaken/claude-code/blob/main/coordinator/coordinatorMode.ts) 中的协调器系统 prompt 是多代理设计的经典之作:
| 阶段 | 执行者 | 目的 |
|-------|-----|---------|
| **研究** | 工作代理 (并行) | 调查代码库,查找文件,理解问题 |
| **综合** | **协调器** | 阅读调查结果,理解问题,制定规范 |
| **实施** | 工作代理 | 根据规范进行针对性修改并提交 |
| **验证** | 工作代理 | 测试修改是否生效 |
prompt 中**明确**教授了并行机制:
工作代理通过 `` XML 消息进行通信。有一个共享的**暂存目录**(由 `tengu_scratch` 控制),用于跨工作代理的持久化知识。prompt 中还有一条禁令,专门防止偷懒的委派行为:
该系统还包括**代理团队/集群**功能(由 `tengu_amber_flint` feature 开关控制),包括使用 `AsyncLocalStorage` 进行上下文隔离的进程内队友、使用 tmux/iTerm2 面板的基于进程的队友、团队记忆同步以及用于视觉区分的颜色分配。
## Fast Mode 在内部被称为 "Penguin Mode"(企鹅模式)
是的,他们真的叫它企鹅模式。[`utils/fastMode.ts`](https://github.com/kuberwastaken/claude-code/blob/main/utils/fastMode.ts) 中的 API endpoint 实际上是这样的:
```
const endpoint = `${getOauthConfig().BASE_API_URL}/api/claude_code_penguin_mode`
```
配置键名是 `penguinModeOrgEnabled`。紧急关闭开关是 `tengu_penguins_off`。失败时的分析事件是 `tengu_org_penguin_mode_fetch_failed`。彻头彻尾的企鹅。
## 系统 Prompt 架构
这里的系统 prompt 并不像大多数应用那样是一个单一的字符串——它是在 [`constants/`](https://github.com/kuberwastaken/claude-code/tree/main/constants) 中运行时组合的**模块化、可缓存的区块**构建而成的。
该架构使用了一个 `SYSTEM_PROMPT_DYNAMIC_BOUNDARY` 标记,将 prompt 分为:
- **静态区块** - 可跨组织缓存(不会因用户而改变的内容)
- **动态区块** - 用户/会话特定的内容,更改时会破坏缓存
有一个名为 `DANGEROUS_uncachedSystemPromptSection()` 的函数,用于处理那些你明确希望破坏缓存的易变区块。单看这个命名约定,你就会知道肯定是有人踩过坑才写成这样的。
### 网络风险指令
其中一个特别有趣的部分是 [`constants/cyberRiskInstruction.ts`](https://github.com/kuberwastaken/claude-code/blob/main/constants/cyberRiskInstruction.ts) 中的 `CYBER_RISK_INSTRUCTION`,它有一个巨大的警告标头:
```
IMPORTANT: DO NOT MODIFY THIS INSTRUCTION WITHOUT SAFEGUARDS TEAM REVIEW
This instruction is owned by the Safeguards team (David Forsythe, Kyla Guru)
```
所以现在我们确切地知道了 Anthropic 内部是谁在负责安全边界决策,并且它由特定团队中指定的个人负责管理。该指令本身划定了清晰的界限:授权的安全测试是可以的,破坏性技术和供应链攻击是不允许的。
## 完整的工具注册表 - 40 多个工具
Claude Code 的工具系统位于 [`tools/`](https://github.com/kuberwastaken/claude-code/tree/main/tools)。以下是完整列表:
| 工具 | 功能描述 |
|------|-------------|
| **AgentTool** | 生成子代理/子代理 |
| **BashTool** / **PowerShellTool** | Shell 执行(带有可选的沙盒机制) |
| **FileReadTool** / **FileEditTool** / **FileWriteTool** | 文件操作 |
| **GlobTool** / **GrepTool** | 文件搜索(在可用时使用原生的 `bfs`/`ugrep`) |
| **WebFetchTool** / **WebSearchTool** / **WebBrowserTool** | 网络访问 |
| **NotebookEditTool** | Jupyter notebook 编辑 |
| **SkillTool** | 调用用户定义的技能 |
| **REPLTool** | 交互式 VM shell(裸机模式) |
| **LSPTool** | 语言服务器协议通信 |
| **AskUserQuestionTool** | 提示用户输入 |
| **EnterPlanModeTool** / **ExitPlanModeV2Tool** | Plan 模式控制 |
| **BriefTool** | 将文件上传/摘要到 claude.ai |
| **SendMessageTool** / **TeamCreateTool** / **TeamDeleteTool** | 代理集群管理 |
| **TaskCreateTool** / **TaskGetTool** / **TaskListTool** / **TaskUpdateTool** / **TaskOutputTool** / **TaskStopTool** | 后台任务管理 |
| **TodoWriteTool** | 写入待办事项(旧版) |
| **ListMcpResourcesTool** / **ReadMcpResourceTool** | MCP 资源访问 |
| **SleepTool** | 异步延迟 |
| **SnipTool** | 历史片段提取 |
| **ToolSearchTool** | 工具发现 |
| **ListPeersTool** | 列出对等代理(UDS 收件箱) |
| **MonitorTool** | 监控 MCP 服务器 |
| **EnterWorktreeTool** / **ExitWorktreeTool** | Git worktree 管理 |
| **ScheduleCronTool** | 调度 cron 任务 |
| **RemoteTriggerTool** | 触发远程代理 |
| **WorkflowTool** | 执行工作流脚本 |
| **ConfigTool** | 修改设置(**仅限内部**) |
| **TungstenTool** | 高级功能(**仅限内部**) |
| **SendUserFile** / **PushNotification** / **SubscribePR** | KAIROS 专属工具 |
工具通过 `getAllBaseTools()` 进行注册,并根据 feature 开关、用户类型、环境标志和权限拒绝规则进行过滤。这里有一个**工具 schema 缓存**([`toolSchemaCache.ts`](https://github.com/kuberwastaken/claude-code/blob/main/tools/toolSchemaCache.ts))用于缓存 JSON schemas 以提高 prompt 效率。
## 权限与安全系统
[`tools/permissions/`](https://github.com/kuberwastaken/claude-code/tree/main/tools/permissions) 中 Claude Code 的权限系统远比简单的“允许/拒绝”复杂得多:
**权限模式**:`default`(交互式提示)、`auto`(通过对话记录分类器进行基于 ML 的自动批准)、`bypass`(跳过检查)、`yolo`(拒绝所有——起名很讽刺)
**风险分类**:每个工具操作都被分类为 **LOW**(低)、**MEDIUM**(中)或 **HIGH**(高)风险。还有一个 **YOLO 分类器**——一个快速的基于 ML 的权限决策系统,可自动做出决定。
**受保护文件**:`.gitconfig`、`.bashrc`、`.zshrc`、`.mcp.json`、`.claude.json` 等文件都受到保护,防止被自动编辑。
**路径遍历防御**:URL 编码的遍历、Unicode 规范化攻击、反斜杠注入、大小写不敏感的路径操作——全都得到了妥善处理。
**权限解释器**:一个单独的 LLM 调用会在用户批准之前向其解释工具风险。当 Claude 说“此命令将修改你的 git config”时——这个解释本身就是由 Claude 生成的。
## 隐藏的 Beta 标头和未发布的 API 功能
[`constants/betas.ts`](https://github.com/kuberwastaken/claude-code/blob/main/constants/betas.ts) 文件揭示了 Claude Code 与 API 协商的每一个 beta 功能:
```
'interleaved-thinking-2025-05-14' // Extended thinking
'context-1m-2025-08-07' // 1M token context window
'structured-outputs-2025-12-15' // Structured output format
'web-search-2025-03-05' // Web search
'advanced-tool-use-2025-11-20' // Advanced tool use
'effort-2025-11-24' // Effort level control
'task-budgets-2026-03-13' // Task budget management
'prompt-caching-scope-2026-01-05' // Prompt cache scoping
'fast-mode-2026-02-01' // Fast mode (Penguin)
'redact-thinking-2026-02-12' // Redacted thinking
'token-efficient-tools-2026-03-28' // Token-efficient tool schemas
'afk-mode-2026-01-31' // AFK mode
'cli-internal-2026-02-09' // Internal-only (ant)
'advisor-tool-2026-03-01' // Advisor tool
'summarize-connector-text-2026-03-13' // Connector text summarization
```
`redact-thinking`、`afk-mode` 和 `advisor-tool` 同样尚未发布。
## Feature 开关 - 内部构建与外部构建
这是代码库中架构上最有趣的部分之一。
Claude Code 通过 Bun 的 `bun:bundle` 中的 `feature()` 函数使用了**编译时 feature 开关**。打包工具会**常量折叠**这些标志,并从外部构建中**消除被开关控制的死代码分支**。已知标志的完整列表:
| 标志 | 控制的功能 |
|------|--------------|
| `PROACTIVE` / `KAIROS` | 始终在线的助手模式 |
| `KAIROS_BRIEF` | Brief 命令 |
| `BRIDGE_MODE` | 通过 claude.ai 的远程控制 |
| `DAEMON` | 后台守护进程模式 |
| `VOICE_MODE` | 语音输入 |
| `WORKFLOW_SCRIPTS` | 工作流自动化 |
| `COORDINATOR_MODE` | 多代理编排 |
| `TRANSCRIPT_CLASSIFIER` | AFK 模式(ML 自动批准) |
| `BUDDY` | 伙伴宠物系统 |
| `NATIVE_CLIENT_ATTESTATION` | 客户端认证 |
| `HISTORY_SNIP` | 历史片段裁剪 |
| `EXPERIMENTAL_SKILL_SEARCH` | 技能发现 |
此外,`USER_TYPE === 'ant'` 控制着 Anthropic 内部的功能:Staging API 访问(`claude-ai.staging.ant.dev`)、内部 beta 标头、卧底模式、`/security-review` 命令、`ConfigTool`、`TungstenTool` 以及将 prompt 转储到 `~/.config/claude/dump-prompts/` 的调试功能。
**GrowthBook** 负责处理带有激进缓存策略的运行时 feature 开关。以 `tengu_` 为前缀的 feature flags 控制着从 fast mode 到记忆巩固的所有内容。许多检查使用 `getFeatureValue_CACHED_MAY_BE_STALE()` 来避免阻塞主循环——对于 feature 开关来说,稍微过时的数据是可以接受的。
## 其他值得注意的发现
### Upstream Proxy
[`upstreamproxy/`](https://github.com/kuberwastaken/claude-code/tree/main/upstreamproxy) 目录包含一个容器感知的代理中继,它使用 **`prctl(PR_SET_DUMPABLE, 0)`** 来阻止同 UID 的 ptrace 读取堆内存。它从 CCR 容器中的 `/run/ccr/session_token` 读取会话令牌,下载 CA 证书,并启动一个本地 CONNECT→WebSocket 中继。Anthropic API、GitHub、npmjs.org 和 pypi.org 被明确排除在代理之外。
### Bridge 模式
[`bridge/`](https://github.com/kuberwastaken/claude-code/tree/main/bridge) 中包含一个经过 JWT 认证的桥接系统,用于与 claude.ai 集成。支持的工作模式有:`'single-session'` | `'worktree'` | `'same-dir'`。包含用于更高安全层级的可信设备令牌。
### 迁移中的模型代号
[`migrations/`](https://github.com/kuberwastaken/claude-code/tree/main/migrations) 目录揭示了内部代号的历史:
- `migrateFennecToOpus` - **"Fennec"**(狐狸)曾是 Opus 的代号
- `migrateSonnet1mToSonnet45` - 带有 1M 上下文的 Sonnet 变成了 Sonnet 4.5
- `migrateSonnet45ToSonnet46` - Sonnet 4.5 → Sonnet 4.6
- `resetProToOpusDefault` - Pro 用户在某个时间点被重置为 Opus
### Attribution 标头
每个 API 请求都包含:
```
x-anthropic-billing-header: cc_version={VERSION}.{FINGERPRINT};
cc_entrypoint={ENTRYPOINT}; cch={ATTESTATION_PLACEHOLDER}; cc_workload={WORKLOAD};
```
`NATIVE_CLIENT_ATTESTATION` 功能允许 Bun 的 HTTP 栈用计算出的哈希值覆盖 `cch=00000` 占位符——这本质上是一个客户端真实性检查,以便 Anthropic 可以验证请求是否来自真实的 Claude Code 安装程序。
### Computer Use - "Chicago"
Claude Code 包含一个完整的 Computer Use 实现,内部代号为 **"Chicago"**,建立在 `@ant/computer-use-mcp` 之上。它提供屏幕截图捕获、点击/键盘输入和坐标转换功能。仅限 Max/Pro 订阅用户使用(内部用户有 ant 绕过机制)。
### 定价
想知道的人可以看看——[`utils/modelCost.ts`](https://github.com/kuberwastaken/claude-code/blob/main/utils/modelCost.ts) 中的所有定价与 [Anthropic 的公开定价](https://docs.anthropic.com/en/docs/about-claude/models) 完全一致。没有什么新闻价值。
## 最后的想法
毫不夸张地说,这是我们有史以来最全面地深入了解*这款*生产级 AI 编程助手在底层是如何工作的机会之一。而且是通过真实的源代码。
有几件事非常引人注目:
**其工程设计确实令人赞叹。** 这不是一个周末搞出来的 CLI 包装项目。多代理协调、梦境系统、三重触发门架构、编译时的 feature 剔除——这些都是经过深思熟虑的系统。
**还有更多功能即将推出。** KAIROS(始终在线的 Claude)、ULTRAPLAN(30 分钟远程规划)、Buddy 伙伴、Coordinator 模式、代理集群、工作流脚本——代码库的内容远远领先于公开发布的版本。其中大部分都被 feature 开关控制,在外部构建中是不可见的。
**内部文化可见一斑。** 动物代号(Tengu、Fennec、Capybara)、有趣的功能名称(企鹅模式、梦境系统)、带有抽卡机制的拓麻歌子宠物系统。Anthropic 的一些人显然玩得很开心。
如果这件事能带给我们一个启示的话,那就是安全很难。但显然,`.npmignore` 更难 :P
由 [Luke Encrapera](https://luke.encrapera.com/) 撰写
标签:Anthropic, CIS基准, Claude Code, CMS安全, JavaScript, MITM代理, npm, Sourcemap, TypeScript, 云资产清单, 安全插件, 开发安全, 暗色界面, 源码泄露, 自动化攻击, 逆向工程