Claude Code
泄露文件全解析
Claude Code 的完整 TypeScript 源码通过 npm 包中的 sourcemap 文件意外泄露。 我们深入分析了全部源码,发现了大量未发布功能、隐藏命令和内部机制。
Bun 打包器默认生成 source map,而 .npmignore 中遗漏了 *.map 文件。
sourcesContent 数组中包含了全部原始源代码。
未发布功能
源码中发现了 8 个尚未公开或正在开发中的功能模块,涵盖 AI 宠物、持续助手、远程规划、多智能体协作等方向。
电子宠物系统 — 基于用户 ID 通过 Mulberry32 PRNG 确定性生成。 18 种物种、5 级稀有度(普通 60% 到传说 1%)、1% 闪光概率。 每只伙伴有 5 项属性值、眼型、帽子,以及由 Claude 生成的「灵魂」人格。 以 5 行高 12 字符宽的 ASCII 艺术形式渲染。 桌面端 6 秒无操作后触发 OS 级通知(仅终端失焦时); Swarm 工作模式下以 500ms 间隔轮询 Leader 同步权限响应。
全天候持续运行的 AI 助手模式 — 监听、记录并主动行动。
使用追加式每日日志、<tick> 定时提示机制,
15 秒阻塞预算限制。拥有专属工具:SendUserFile、PushNotification、SubscribePR。
底层维护约 80 字段的全局会话状态单例(State),
prompt cache 支持 1 小时 TTL(tengu_prompt_cache_1h_config 门控),
并含 2000 token 阈值的缓存断裂检测机制。
将复杂规划任务卸载到远程 Cloud Container Runtime 会话。 使用 Opus 4.6 模型,最长运行 30 分钟。提供浏览器端审批 UI, 规划结果通过 Teleport 机制传送回本地终端。 Files API 支持最大 500MB 文件上传; 内置网关检测模块可识别 7 种 API 提供商(Bedrock / Vertex / Foundry 等)。
多智能体任务编排系统,支持 4 阶段工作流:研究 → 综合 → 实现 → 验证。
Worker 通过 Leader 权限桥接协调,支持 Tmux、iTerm2 和进程内三种面板后端。
可在会话中途切换模式。内置完整自定义 Agent 创建向导(11 步 Wizard),
产物以 YAML 前置数据 + Markdown 文件存储在 .claude/agents/。
工具按 5 个桶分类:READ_ONLY / EDIT / EXECUTION / MCP / OTHER。
跨会话进程间通信机制 — 多个本地 Claude 实例之间通过 Unix Domain Socket 互相发送消息,
实现跨会话协作与数据共享。由 /peers 命令门控。
权限系统支持 14+ 种请求类型(Bash / FileEdit / FileWrite / MCP 等),
classifier 自动审批时展示 20fps shimmer 动画提示「正在尝试自动批准…」。
从 claude.ai 网页端远程驱动本地 CLI 会话。双向 WebSocket/SSE 通信,
JWT 认证 + 设备指纹(SHA-256)。支持 V1(环境 API)和 V2(直连)两种协议版本。
含崩溃恢复和 4 小时 TTL 指针文件。
桥接对话框通过 qrcode 库渲染 QR 码供移动端扫码连接;
所有 UI 组件经 React Compiler 自动 memoization(_c(N) 缓存分配器)。
后台会话管理模式 — 以守护进程形式运行 Claude Code,
处理后台任务队列。通过 --daemon-worker CLI 标志激活,
在 cli.tsx 启动分发器中作为快速路径处理。
内置自动更新器每 30 分钟轮询 GCS 检查新版本(支持 npm / 原生安装器 / 包管理器三种路径);
累计 API 消耗达 $5 时弹出 CostThresholdDialog 确认对话框。
后台记忆整理引擎 — 作为 fork 子智能体运行。三门触发机制:距上次整理 ≥24 小时 + ≥5 个新会话 + 文件锁。
四阶段流程:定向 → 采集近期信号 → 整合 → 修剪索引。
Dream 智能体仅有只读 bash 权限。
GrowthBook 初始化超时设为 5000ms;
反蒸馏机制 tengu_anti_distill_fake_tool_injection 向 API 调用注入伪工具作为训练数据质量信号。
深度定制的 Ink 终端 React 渲染器 — 8 步渲染管线(React → Reconciler → VDOM → Yoga 布局 → Output → Screen → Diff → Terminal)。 以 60fps(16ms 帧间隔)驱动,双缓冲 + blit 差异优化。 支持硬件滚动(DECSTBM)、完整 DOM 事件系统(capture + bubble)、文本选择与剪贴板、 以及 3 个 Interning Pool 池化 Style / Char / StringStyle。
隐藏斜杠命令
源码中发现 26 个未公开的斜杠命令,部分为内部员工专用(ant-only),部分由功能标志门控。 查看完整命令系统分析 →
秘密 CLI 启动标志
除公开文档的参数外,main.tsx 和 cli.tsx 中还隐藏了大量未公开的启动参数。
查看工具框架详解 →
--dump-system-prompt 仅限内部员工使用,可将完整系统提示词输出到 stdout。
--bare 激活精简模式,工具集缩减为仅 Bash、FileRead、FileEdit 三项(对应 CLAUDE_CODE_SIMPLE 环境变量)。
编译时功能标志
通过 Bun 的 feature() 函数实现编译时特性开关,配合死代码消除。
以下是源码中发现的 32 个编译时功能标志。
查看 Rust 重写详解 →
GrowthBook 功能门控
运行时功能发布通过 GrowthBook 平台管理,使用 tengu_ 前缀的不透明代号进行灰度控制。
缓存策略极为激进,值在运行时高度缓存。
| 代号 | 功能 | 状态 |
|---|---|---|
tengu_malort_pedway | Computer Use (Chicago) | 门控 |
tengu_onyx_plover | AutoDream 自动记忆整理 | 门控 |
tengu_kairos | KAIROS 持续助手模式 | 门控 |
tengu_bridge_repl_v2 | Bridge V2 直连协议 | 已上线 |
tengu_penguins_off | Fast Mode 快速模式熔断器 | Kill Switch |
tengu_amber_quartz_disabled | Voice Mode 语音模式熔断器 | Kill Switch |
tengu_coordinator | 协调器多智能体模式 | 门控 |
tengu_buddy | BUDDY 伙伴系统 | 门控 |
tengu_ultraplan | ULTRAPLAN 远程规划 | 门控 |
tengu_plugins | 插件市场 | 门控 |
秘密环境变量
源码中发现 120+ 个未公开的环境变量,涵盖调试追踪、运行时覆盖和安全旁路三大类。 查看记忆系统详解 →
API Beta 头部
源码中硬编码了 18+ 个 anthropic-beta 请求头,揭示了大量未公开的 API 特性及其上线日期。
查看系统提示词架构 →
有趣发现
源码深处藏着的奇妙细节 — 从内部代号到反蒸馏机制,从员工隐身模式到遥测追踪。
防止 Anthropic 员工在公开仓库的 commit/PR 中意外暴露内部信息。自动清除 AI 辅助痕迹。
src/utils/undercover.ts项目代号 Tengu,Fast Mode 是 Penguin,Computer Use 是 Chicago,Opus 变体 Fennec,新模型族 Capybara。
spec/12_constants_types.md基于 ML 的转录分类器自动判断 bash 命令安全性,内部代号 "YOLO" — 用于自动授权权限请求。
TRANSCRIPT_CLASSIFIERAtomicU64 无锁计数器追踪输入/输出 token、API 耗时、工具调用次数、代码行增删、commit 和 PR 数量。成本精确到毫分。
analytics.rs系统提示词中注入假工具定义(fake tool injection),用于检测和防止第三方模型蒸馏训练。
system_prompt.rs在二进制层面使用 Zig 编写的客户端认证模块,用于验证 CLI 客户端的真实性,防止 API 滥用。
src-rust/crates/cliBUDDY 系统的 18 个物种名使用 String.fromCharCode() 编码,规避构建系统的金丝雀字符串扫描。
代码中引用了 Claude Capybara(全新模型族 v2)、Opus 4.7、Sonnet 4.8 — 均未公开发布。
spec/00_overview.mdSpinner 组件内置 186 个趣味加载动词,从技术术语到幽默短语,随机展示进度状态。
spec/12_constants_types.md__SYSTEM_PROMPT_DYNAMIC_BOUNDARY__ 将提示词分为静态(跨组织缓存)和动态(每次请求变化)两部分,优化 API 成本。
claude passes 命令可生成邀请链接,赠送朋友一周免费 Claude Code 使用权。
claude stickers 命令存在但返回 "coming soon!" — 一个尚未上线的游戏化收集功能。
当单次会话 API 累计消耗达到 $5 时,CostThresholdDialog 弹出确认对话框,要求用户手动确认是否继续消费。
Markdown 渲染组件维护模块级 LRU token 缓存(最大 500 条),纯文本走快速路径直接跳过 marked.lexer 解析。
消息列表组件对超过 200 条的消息启用渲染裁剪,先过滤空渲染附件再应用 200 条上限,旧消息不再生成 React 节点。
spec/04 · MessageListProgressBar 组件使用 9 级 Unicode Block 字符实现亚字符精度的终端进度条渲染,支持自定义填充色和空色。
spec/05 · ProgressBar.tsx每 10 秒轮询堆内存:超 1.5GB 进入 high 状态,超 2.5GB 进入 critical 状态触发紧急回收策略。
输入框内置完整 Vim 状态机(Normal / Insert),支持 operator + motion、dot-repeat、f/F/t/T 查找,以及 Emacs 风格 Kill Ring(Ctrl+K/U/W 剪切,Ctrl+Y / Meta+Y 粘贴循环)。
spec/07 · useVimInput / useTextInputHold-to-talk 语音录制通过 Anthropic 自建 voice_stream WebSocket STT 端点转写,Deepgram 关键词提示最多 50 条,含项目名、Git 分支和技术术语。
两步快捷键 Ctrl+X → Ctrl+K(3 秒确认窗口)可一键终止所有后台运行的 Agent 任务,触发 SDK 事件并发送聚合通知。
常见问题
关于 Claude Code 源码泄露事件的 100 个技术问答,涵盖泄露原因、未发布功能、隐藏命令、系统架构等方方面面。
Claude Code 源码是怎么泄露的?
Bun 打包器默认生成 source map 文件(sourcemap: "external"),而项目的 .npmignore 中遗漏了 *.map 文件。npm publish 时 sourcesContent 数组包含了全部原始 TypeScript 源文件,任何人下载 npm 包后即可还原完整源码。这是 Bun bundler 的默认行为 — 如果开发者没有在发布配置中显式排除 *.map,所有原始代码会被完整内嵌到 JSON 格式的 source map 中。该问题直到社区研究者下载包后才被发现。
泄露了多少文件?
共 1902 个 TypeScript 源文件,约 800K+ 行代码,外加 9 个 Rust crate。这些文件完整覆盖了 Claude Code 的业务逻辑、工具框架、终端渲染引擎与未发布功能模块。Rust 侧包含 cc-core、cc-api、cc-tools、cc-query、cc-tui、cc-commands、cc-mcp、cc-bridge、cc-buddy 共 9 个 crate,是对 TypeScript 版本性能关键路径的 Rust 重写。
泄露事件是什么时候发生的?
2026 年 3 月 31 日通过 npm 包被发现。研究者在下载 Claude Code 的 npm 发布包后,注意到其中的 .js.map 文件意外携带了完整的 sourcesContent 原始代码。泄露覆盖了 Claude Code 的全部内部架构,包括 8 个未发布功能、26 个隐藏命令、32 个编译时功能标志,以及大量内部代号和调试机制。Anthropic 随后对 npm 包进行了修复。
泄露的是什么技术栈?
主体为 TypeScript 源码 + 9 个 Rust crate 的混合架构。TypeScript 侧使用 React 19 ConcurrentRoot + Ink 框架进行终端 UI 渲染,Bun 作为打包器,Zod 做运行时类型校验;Rust 侧使用 Tokio 异步运行时 + ratatui 终端 UI 库 + reqwest HTTP 客户端。TypeScript 负责业务逻辑与 UI,Rust 承担性能关键路径(终端渲染、文件扫描、差异计算、API 通信等)。
source map 泄露的技术原理是什么?
Bun bundler 默认启用 sourcemap: "external",会将原始源码内嵌到 .js.map 的 sourcesContent 数组中。由于 .npmignore 未排除 *.map 文件,这些 map 文件随包一并发布到 npm registry。Source map 是一种标准的调试映射格式,其中 sourcesContent 字段是可选的 — 但 Bun 默认开启此选项以方便调试,导致 1902 个完整的原始 .ts 文件以 JSON 数组的形式存储在 map 文件中。
泄露中发现了多少隐藏功能?
共发现 8 个未发布功能(BUDDY 电子宠物、KAIROS 全天候助手、ULTRAPLAN 远程规划、Coordinator 多智能体协调器、UDS 跨会话收件箱、Bridge 远程控制、Daemon 后台守护进程、AutoDream 自动记忆整理)、26 个隐藏斜杠命令(分为已发布/内部/门控三类)、32 个编译时功能标志(控制特性开关)、120+ 个环境变量(覆盖调试/运行时/安全旁路三大类)。
这次泄露对用户有安全风险吗?
泄露的是工具代码本身而非用户数据,不涉及 API Key 或用户隐私。但源码暴露了内部机制、未发布功能、安全旁路变量(如 CLAUDE_CODE_DANGEROUSLY_DISABLE_PERMISSIONS)与反蒸馏注入策略(tengu_anti_distill_fake_tool_injection),对 Anthropic 的商业机密和安全防线有影响。泄露还揭示了内部代号体系(Tengu、Penguin、Chicago、Fennec、Capybara)及未公开的模型引用(Opus 4.7、Sonnet 4.8、Claude Capybara)。
泄露中发现了多少内置工具?
共 40+ 个内置工具,按权限分为 5 个桶:READ_ONLY(GlobTool、GrepTool、FileReadTool 等安全只读操作)/ EDIT(FileEditTool、FileWriteTool)/ EXECUTION(BashTool,120 秒超时,需用户确认)/ MCP(第三方 Model Context Protocol 工具)/ OTHER(未分类兜底)。权限请求类型多达 14+ 种,每种有独立 UI 组件;由 classifier 决定是否自动审批 — 通过 TRANSCRIPT_CLASSIFIER 功能标志启用 ML 安全分类器。
Claude Code 的代码规模有多大?
约 800K+ 行 TypeScript + Rust 混合代码,分布在 1902 个 TS 源文件和 9 个 Rust crate 中。涵盖 10 大子系统:Query/Turn 执行引擎、工具框架、终端 UI(Ink)、命令系统、Bridge 协议、多智能体系统、记忆系统、MCP 集成、Plugin/Skills 平台、IDE 集成。TypeScript 侧拥有 87+ 命令和 40+ 工具,Rust 侧已重写了 33 个工具和 33 个命令,两套实现保持功能对等。
如何查看泄露的 source map?
从 npm registry 下载 Claude Code 对应版本的 tarball(npm pack @anthropic-ai/claude-code),解压后查找 *.js.map 文件。每个 map 文件的 sourcesContent 数组即为原始 TypeScript 代码,可直接用 JSON parser 提取。sources 数组对应文件路径,sourcesContent 数组对应文件内容,两者按索引一一映射。可用 jq '.sourcesContent[0]' 快速查看第一个源文件的完整代码。
Claude Code 的 BUDDY 伙伴系统是什么?
BUDDY 是一个未发布的虚拟电子宠物功能,内置于 Claude Code 源码中。它为每个用户确定性生成一只专属伙伴,拥有 18 种物种、5 级稀有度和独立人格。伙伴以 5 行高 × 12 字符宽的 ASCII 艺术形式渲染在终端中,每只都有随机眼型(6 种)、帽子(8 种)和 5 项属性值。代码位于 src/buddy/ 目录,计划发布窗口为 2026 年 4 月 1-7 日。
BUDDY 有多少种物种?具体都有哪些?
共 18 种物种:Duck(鸭子)、Goose(鹅)、Blob(团子)、Cat(猫)、Dragon(龙)、Octopus(章鱼)、Owl(猫头鹰)、Penguin(企鹅)、Turtle(海龟)、Snail(蜗牛)、Ghost(幽灵)、Axolotl(六角恐龙)、Capybara(水豚)、Cactus(仙人掌)、Robot(机器人)、Rabbit(兔子)、Mushroom(蘑菇)、Chonk(胖墩)。物种名在源码中使用 String.fromCharCode() 编码以规避金丝雀字符串扫描检测。
BUDDY 的稀有度系统怎么工作?
5 级稀有度及概率分布:Common(普通)60%、Uncommon(稀有)25%、Rare(珍贵)10%、Epic(史诗)4%、Legendary(传说)1%。另外有独立于稀有度的 1% 闪光(Shiny)概率 — 即任何稀有度的伙伴都有 1% 的几率获得闪光特效。稀有度决定了物种池范围和视觉效果差异。
BUDDY 的随机生成用了什么算法?种子怎么构造?
使用 Mulberry32 伪随机数生成算法(32 位状态 PRNG)。种子构造公式为 SHA-256(userId + salt),其中 salt 为硬编码字符串 "friend-2026-401"。这意味着生成过程完全确定性 — 同一个用户 ID 永远会得到相同的物种、稀有度、属性值和外观特征。Rust 侧的 cc-buddy crate 维持了与 TypeScript 实现完全相同的生成逻辑。
同一用户能重新抽取 BUDDY 吗?
不能。BUDDY 的生成是完全确定性的 — 种子由 SHA-256(userId + "friend-2026-401") 派生,同一用户 ID 永远映射到同一只伙伴。不存在重新抽取或刷新机制。这一设计确保了伙伴的"唯一归属感":你的 BUDDY 是专属于你的,不可更换。只有更换账号(改变 userId)才能获得不同的伙伴。
BUDDY 的 Bones 和 Soul 有什么区别?
Bones(骨骼)= 视觉特征层,包括物种、稀有度、眼型、帽子、属性值等,全部由 Mulberry32 PRNG 实时计算,不存储在磁盘上。Soul(灵魂)= AI 生成的名字和人格描述,由 Claude 模型生成后持久化到 companion.json 文件中。Bones 是可复现的数学结果,Soul 则是一次性的 AI 创作 — 两者结合构成一只完整的伙伴。
BUDDY 的桌面通知机制是怎样的?
当终端窗口失去焦点后,BUDDY 会在 6 秒无操作后触发 OS 级桌面通知,通过 sendDesktopNotification 模块发送原生系统通知。这种设计模拟了"宠物在等你回来"的互动感,只在用户切换到其他应用时才会触发,不会在终端活跃使用时打扰用户。通知内容与伙伴的 Soul 人格相关。
BUDDY 的 Swarm 权限轮询间隔是多少?
在 Swarm(多智能体协作)工作模式下,BUDDY 以 500ms 间隔轮询 Leader 节点同步权限响应。内部维护 2 个 callback Map(普通权限和 sandbox 权限),Worker 将权限请求发送给 Leader 后以 500ms 为周期检查响应。这确保了多 Agent 协同场景下权限审批的及时传递,同时不会因过于频繁的轮询造成性能问题。
BUDDY 有哪些属性维度?ASCII 艺术长什么样?
5 个属性维度:Debugging(调试力)、Patience(耐心值)、Chaos(混乱度)、Wisdom(智慧)、Snark(毒舌度),每项由 PRNG 派生一个数值。外观方面,每只伙伴渲染为 5 行高 × 12 字符宽的 ASCII 艺术,配有 6 种眼型(Dot .、Star *、X、Circle o、At @、Degree °)和 8 种帽子(None、Crown、Tophat、Propeller、Halo、Wizard、Beanie、TinyDuck)。
BUDDY 的当前发布状态是什么?
状态为未发布(Unreleased)。代码完整存在于源码中(TypeScript 版 src/buddy/ + Rust 版 cc-buddy crate),但未对外启用。受 BUDDY 编译时功能标志和 tengu_buddy GrowthBook 门控双重控制。源码中发现的计划发布窗口为 2026 年 4 月 1-7 日,但实际是否发布取决于 Anthropic 的决策。可通过 /buddy 斜杠命令触发(当前为门控状态)。
KAIROS 是什么?
KAIROS 是一个未发布的 24/7 全天候持续运行 AI 助手模式。与普通的"问答式"Claude Code 会话不同,KAIROS 持续监听项目变化、记录日志并在需要时主动采取行动。每次自主行动有 15 秒阻塞预算限制,拥有 3 个专属工具:SendUserFile、PushNotification、SubscribePR。底层维护约 80 个字段的全局会话状态单例(bootstrap/state.ts)。
KAIROS 的工作流程是什么?
KAIROS 运行一个持续循环:监听 → 分析 → 判断 → 执行 → 日志 → 循环。通过 <tick> 定时提示机制触发每一轮思考周期,每轮有 15 秒阻塞预算。系统会评估是否需要主动介入(如文件变更、PR 更新、构建失败等),如果判断需要行动则调用专属工具执行操作,并将结果追加到每日日志中。可通过 SleepTool 主动让出控制权。
KAIROS 有几个专属工具?分别是什么?
3 个专属工具,仅在 KAIROS 模式下可用:SendUserFile — 向用户发送文件或代码片段;PushNotification — 推送 OS 级桌面通知提醒用户关注某个事件;SubscribePR — 订阅 GitHub PR 的变更事件,当 PR 有新评论、review 或状态变化时自动收到通知。这三个工具使 KAIROS 能够主动与用户和外部系统交互,而非被动等待用户输入。
KAIROS 的会话状态有多复杂?
极为复杂 — 全局会话状态单例(State)包含约 80 个字段,定义在 bootstrap/state.ts 中。字段涵盖:originalCwd(原始工作目录)、projectRoot(项目根)、totalCostUSD(累计成本)、totalAPIDuration(API 总耗时)、sessionId、agentColorMap(Agent 颜色映射)、systemPromptSectionCache(提示词缓存),以及 OTel 度量计数器(session、loc、pr、commit、cost、token 共 6 类)。
KAIROS 的 prompt cache TTL 是多少?
Prompt cache 的 TTL 为 1 小时(3600 秒),由 GrowthBook 功能标志 tengu_prompt_cache_1h_config 控制。这意味着相同的系统提示词在 1 小时内可以被缓存复用,显著降低 API 调用成本和延迟。同时,系统内置了 2000 token 阈值的缓存断裂检测机制 — 如果新请求与缓存内容差异超过 2000 token,系统会判定为 cache break 并重新构建提示词。
KAIROS 的 cache break 检测阈值是多少 token?
2000 tokens。当新请求的提示词与已缓存版本相比变化量超过 2000 token 时,系统判定发生了缓存断裂(cache break),会放弃已缓存的提示词前缀并重新构建完整提示词。这一机制确保了缓存的有效性 — 少量变更可以复用缓存(节省成本),但大幅度变更会触发完整重建(确保准确性)。阈值数值硬编码在 KAIROS 的 cache 管理逻辑中。
KAIROS 的日志和 tick 机制是什么?
日志机制:KAIROS 使用追加式(append-only)每日日志,记录所有自主行动、观察到的变化和决策理由。日志按天分割,每个会话对应一个日志文件。Tick 机制:通过 <tick> 提示词标记触发周期性思考循环,每个 tick 有 15 秒阻塞预算。KAIROS 还可使用 SleepTool 主动休眠直到下一个事件触发,避免空转消耗资源。
KAIROS 的发布状态是什么?
状态为未发布(Unreleased)。受到 KAIROS 和 KAIROS_BRIEF 两个编译时功能标志控制,同时有 GrowthBook 门控 tengu_kairos。相关的隐藏斜杠命令包括 /assistant(KAIROS 主入口)、/brief(KAIROS 简报模式,需 KAIROS_BRIEF 标志)、/dream(触发记忆整理)和 /voice(语音输入模式)。所有这些命令目前均为门控状态。
KAIROS 如何决定是否主动行动?
通过 tick 机制 + 规则引擎判断。每个 <tick> 周期内(15 秒预算),KAIROS 评估当前项目状态变化:文件修改、Git 事件、PR 状态变更、构建结果等。如果规则引擎判定需要介入(如检测到测试失败、PR 有新 review 需要回应等),KAIROS 会使用专属工具主动执行操作。如果判定无需行动,则通过 SleepTool 休眠等待下一次事件触发。
KAIROS 与普通 Claude Code 会话有什么区别?
核心区别是主动性。普通会话是"用户提问 → Claude 回答"的被动模式;KAIROS 是"持续后台运行 → 监听变化 → 主动行动"的主动模式。具体差异:KAIROS 有 3 个专属工具(SendUserFile、PushNotification、SubscribePR)普通会话没有;KAIROS 维护约 80 字段的持久状态而普通会话无此开销;KAIROS 有追加式日志系统记录全部行动;KAIROS 的 prompt cache 有 1 小时 TTL 而普通会话更短。
ULTRAPLAN 是什么?
ULTRAPLAN 是一个未发布的远程规划功能,将复杂规划任务卸载到 Cloud Container Runtime(CCR)远程会话中执行。使用 Opus 4.6 模型,最长运行 30 分钟,CCR 环境配备 16GB 内存(Node.js --max-old-space-size=8192)。提供浏览器端审批 UI,规划结果通过 /teleport 命令传送回本地终端。受 ULTRAPLAN 编译时标志和 tengu_ultraplan GrowthBook 门控。
ULTRAPLAN 的执行时长上限是多少?
最长 30 分钟。与普通 Claude Code 会话的即时响应不同,ULTRAPLAN 设计用于需要深度思考的复杂规划任务 — 如大型重构方案、架构设计、跨多文件的实现策略等。远程 CCR 容器在 30 分钟内持续运行 Opus 4.6 模型,期间用户可以在浏览器审批 UI 中实时查看规划进度并进行审批。超时后会话自动终止。
ULTRAPLAN 使用什么模型?
使用 Opus 4.6 — Anthropic 最强的推理模型。选择 Opus 而非更快的 Sonnet 是因为 ULTRAPLAN 面向的是需要深度分析和多步推理的复杂规划任务,质量优先于速度。远程 CCR 环境提供 16GB 内存确保模型有足够资源处理大型代码库的上下文。通过 /ultraplan 斜杠命令触发(当前为 ant-only 内部命令)。
ULTRAPLAN 的 CCR 会话是什么?
CCR = Cloud Container Runtime,是 Anthropic 的远程容器执行环境。ULTRAPLAN 会将本地项目上下文上传到 CCR 容器(Files API 支持最大 500MB),然后在远程环境中启动一个隔离的 Opus 4.6 规划会话。CCR 容器配备 Node.js 运行时(--max-old-space-size=8192,即 8GB 堆内存),总可用内存 16GB。规划完成后通过 Teleport 机制将结果传回本地。
ULTRAPLAN 的审批 UI 和 Teleport 机制是什么?
审批 UI 是一个浏览器端界面,用户可以在其中实时查看 ULTRAPLAN 的规划产出并进行确认/修改/拒绝。这确保了人在回路(human-in-the-loop)的安全性。Teleport 机制通过 /teleport 斜杠命令将远程 CCR 会话的规划结果安全地传送回本地终端,包括生成的代码、文件修改建议和实现步骤。传送完成后远程容器自动释放资源。
Coordinator 模式是什么?
Coordinator 是一个未发布的多智能体任务编排系统,支持 4 阶段工作流:研究 → 综合 → 实现 → 验证。Leader Agent 负责任务分解和协调,Worker Agent 通过 Leader 权限桥接执行具体任务。支持 3 种面板后端:Tmux、iTerm2 和进程内。可在会话中途切换模式。受 COORDINATOR_MODE 编译时标志和 tengu_coordinator GrowthBook 门控。
自定义 Agent 创建流程有几步?
完整的 11 步创建向导(Wizard):Step 0 LocationStep(选择项目级或个人级)→ Step 1 MethodStep(自动生成或手动配置)→ Step 2 GenerateStep(AI 生成后跳到 Step 6)→ Step 3 TypeStep(Agent 标识符)→ Step 4 PromptStep(系统提示词,最少 20 字符,支持外部编辑器)→ Step 5 DescriptionStep(使用说明)→ Step 6 ToolsStep(5 桶工具选择器)→ Step 7 ModelStep(模型选择)→ Step 8 ColorStep(显示颜色)→ Step 9 MemoryStep(记忆配置,条件性)→ Step 10 ConfirmStep(写入文件)。
Agent 配置的存储格式和位置是什么?
Agent 配置以 YAML 前置数据 + Markdown 正文的格式存储在 .claude/agents/ 目录中。YAML 部分定义元数据(类型、模型、颜色、工具列表等),Markdown 正文为 Agent 的系统提示词。支持项目级(存储在项目 .claude/agents/)和个人级(存储在用户主目录 ~/.claude/agents/)两种位置。Agent 类型标识符需通过 validateAgentType 校验。
工具桶有几个分类?分别是什么?
5 个工具桶分类:READ_ONLY(只读操作 — GlobTool、GrepTool、FileReadTool 等)、EDIT(编辑操作 — FileEditTool、FileWriteTool、NotebookEditTool)、EXECUTION(执行操作 — BashTool、TungstenTool,可执行任意命令,风险最高)、MCP(Model Context Protocol 第三方工具,通过 getMcpServerBuckets 动态注册)、OTHER(未分类兜底)。自定义 Agent 创建时 Step 6 即为工具桶选择器。
Files API 上传上限和网关检测功能是什么?
Files API 支持最大 1 GiB 单文件上传(用于向 CCR 远程环境传送项目文件)。内置网关检测模块可识别多种 API 提供商(如 Amazon Bedrock、Google Vertex、Azure Foundry 等),自动适配不同网关的认证和请求格式。这使 ULTRAPLAN 能够在不同部署环境下正常工作,无需用户手动配置代理参数。
Bridge 远程控制是什么?
Bridge 是一个已发布的远程控制功能,允许用户通过 claude.ai 网页界面远程驱动本地 CLI 的 Claude Code 实例。这意味着你可以在浏览器中操控在本地终端运行的 Claude Code,实现远程编码。Bridge 使用 JWT 认证,设备指纹由 SHA-256(hostname + username + homeDir) 生成,Pointer 文件有 4 小时 TTL。受 BRIDGE_MODE 编译时标志和 tengu_bridge_repl_v2 门控。
Bridge 使用什么认证机制?
使用 JWT(JSON Web Token)认证。设备指纹通过 SHA-256(hostname + username + homeDir) 计算,确保每台设备有唯一标识。Token 刷新策略为过期前 5 分钟自动刷新 + 30 分钟周期性后备刷新,确保长时间会话不会因 token 过期而中断。V2 协议的不活跃超时为 45 秒 — 超过 45 秒无交互则自动断开连接释放资源。
Bridge 有几个版本协议?
2 个版本:V1 基于 Environments API + HybridTransport,是早期实现;V2 使用直接 HTTP + SSE(Server-Sent Events),是当前主推版本,由 GrowthBook 门控 tengu_bridge_repl_v2 控制灰度。V2 协议更简洁高效,不活跃超时 45 秒,支持双向消息流。两个版本可以共存,通过功能标志决定用户使用哪个版本。
Bridge 的 QR Code 和 React Compiler 是什么?
QR Code 功能:Bridge 提供 QR code 桥接对话框,用户在终端中扫描二维码即可在浏览器中建立远程连接,免去手动输入连接信息。使用 qrcode 库生成。React Compiler 集成:Bridge 的前端 UI 使用了 React Compiler 进行自动 memoization 优化,通过 _c(N) cache 分配器避免不必要的组件重渲染,提升 UI 性能。
Daemon 是什么?
Daemon 是一个未发布的后台会话管理系统,允许 Claude Code 作为后台守护进程持续运行。受 DAEMON 编译时功能标志控制,通过 --daemon-worker CLI 标志启动。Daemon 内置自动更新器,支持 npm、native installer 和 package managers 等多种安装路径的检测与更新。整体设计目标是让 Claude Code 从"用时启动"进化为"常驻后台、随时可用"。
Daemon 的自动更新器轮询间隔是多少?
每 30 分钟向 Google Cloud Storage(GCS)轮询一次新版本。更新器会检测当前安装方式(npm / native installer / package manager),选择对应的更新策略。这确保了后台常驻的 Daemon 实例始终运行最新版本,无需用户手动干预。轮询间隔固定为 30 分钟,平衡了及时性和网络开销。
$5 成本对话框是什么?
当单次会话的累计 API 消耗达到 $5 时,系统弹出 CostThresholdDialog 确认对话框,要求用户确认是否继续。这是一个安全阈值机制,防止因意外的长时间运行或循环调用导致高额费用。对话框显示当前总消耗金额和会话持续时间,用户可选择继续或终止会话。该机制内置于 Daemon 的会话管理逻辑中。
AutoDream 是什么?
AutoDream 是一个未发布的自动记忆整理系统,在会话间(用户不在时)自动运行,对项目记忆进行归纳、合并和清理。类比人类的"睡眠记忆整理"。记忆存储在 ~/.claude/projects/<project>/memory/ 目录,支持 4 种记忆类型:User(用户信息)、Feedback(反馈指导)、Project(项目状态)、Reference(外部资源引用)。受 AUTO_DREAM 编译时标志和 tengu_onyx_plover GrowthBook 门控。
AutoDream 的触发条件是什么?
采用三门触发机制,三个条件必须同时满足才会执行:①时间间隔门 — 距离上次运行至少 24 小时;②会话计数门 — 自上次运行以来已累积 5+ 个新会话;③文件锁门 — 获取文件锁(1 小时超时),防止并发执行。三门设计确保 AutoDream 不会过于频繁运行,同时保证有足够的新数据值得整理。
AutoDream 的执行流程是什么?
四阶段流水线:Orient(定位) → Gather(收集) → Consolidate(合并) → Prune(修剪)。整理过程使用 Fork 子 Agent(权限限制为 Read-only bash only),对 MEMORY.md 索引中的记忆文件进行分析。索引上限为 200 个文件,超出时在 Prune 阶段淘汰过时或低价值的记忆。GrowthBook 初始化超时为 5000ms,包含反蒸馏机制(tengu_anti_distill_fake_tool_injection)。
Claude Code 有多少隐藏斜杠命令?有几种状态类型?
共 26 个隐藏斜杠命令,分为 3 种状态类型:Released(已发布但未公开文档的 — 如 /add-dir、/compact、/plan、/review、/sandbox 等)、Internal(仅 Anthropic 员工可用的 ant-only 命令 — 如 /backfill-sessions、/bughunter、/dump-system-prompt、/mock-limits 等)、Gated(通过 GrowthBook 功能标志灰度控制的 — 如 /buddy、/voice、/peers 等)。
有哪些未公开的 CLI 启动参数?
18+ 个未公开 CLI 标志:--bare(精简模式,仅 Bash/FileRead/FileEdit 三个工具)、--dump-system-prompt(ant-only,输出完整系统提示词到 stdout)、--daemon-worker(Daemon 后台工作模式)、--bg(后台任务模式)、--worktree(Git worktree 隔离)、--tmux(Tmux 面板后端)、--agent(指定 Agent 类型)、--task-budget/--max-budget-usd(预算控制)、--dangerously-skip-permissions(跳过权限检查)等。
编译时功能标志有多少个?
共识别出 32 个编译时功能标志。核心功能类:KAIROS、KAIROS_BRIEF、COORDINATOR_MODE、BRIDGE_MODE、DAEMON、ULTRAPLAN、BUDDY、VOICE_MODE、UDS_INBOX、FORK_SUBAGENT。基础设施类:CHICAGO_MCP、TRANSCRIPT_CLASSIFIER、PLUGINS、SKILLS_MARKETPLACE、MCP_RESOURCES、TEAM_MEMORY、TOOL_SEARCH、AUTO_DREAM、FAST_MODE、ADVISOR、CRON_TASKS、CUSTOM_THEMES 等。
功能标志的作用是什么?
编译时功能标志在 构建阶段决定哪些功能代码被包含到最终产物中。标志为 true 时相关代码被编译进发布包,为 false 时完全排除(dead code elimination)。这使 Anthropic 可以在同一代码库中并行开发多个未发布功能(如 KAIROS、BUDDY、ULTRAPLAN),而不会影响生产环境的稳定性。标志与 GrowthBook 运行时门控配合使用 — 编译时标志控制代码存在性,运行时门控控制功能可见性。
Released、Internal 和 Gated 命令有什么区别?
Released — 已编译进发布包,所有用户可用,但可能未出现在官方文档中(如 /compact、/plan、/review、/rewind、/checkpoint)。Internal(ant-only)— 仅 Anthropic 内部员工可用的诊断和调试命令(如 /backfill-sessions、/ctx_viz、/mock-limits、/ant-trace),通常需要内部认证。Gated — 通过 GrowthBook 功能标志灰度发布,可按用户/组织逐步开放(如 /buddy、/voice、/peers)。
门控命令如何解锁?
通过 GrowthBook 远程配置平台控制。每个门控命令对应一个 tengu_* 功能标志(如 /buddy 对应 tengu_buddy,/voice 对应 VOICE_MODE)。Anthropic 可以在 GrowthBook 后台按 user_id、org_id、user_type 等属性精准控制哪些用户看到哪些功能。初始化时客户端拉取门控配置(5000ms 超时),并缓存到磁盘作为离线后备。开发者可通过 setGrowthBookConfigOverride API 在本地测试时覆盖配置。
CLI 标志存储在哪个文件中?
CLI 启动参数定义在 Rust 侧的 cli/main.rs 中,使用 Rust 的命令行解析框架。TypeScript 侧的对应入口在 src/cli/ 目录下。每个标志都有对应的解析逻辑和默认值。值得注意的是,--dump-system-prompt 是 ant-only 标志,会将完整的系统提示词输出到 stdout,这在泄露分析中特别有价值。命令系统支持大小写不敏感匹配和懒加载(通过 dynamic import())。
有哪些典型的隐藏命令示例?
有趣的例子包括:/bughunter(自动 bug 搜索工具)、/commit-push-pr(一键提交+推送+创建 PR)、/good-claude(给 Claude 正反馈的彩蛋命令)、/ctx_viz(上下文可视化调试)、/mock-limits(模拟速率限制)、/bridge-kick(踢除 Bridge 连接)、/share(分享会话)、/teleport(ULTRAPLAN 结果传送)、/autofix-pr(自动修复 PR 问题)。这些命令覆盖了调试、效率和实验性功能。
如何枚举所有可用的斜杠命令?
源码中完整的命令列表位于 Rust 侧的 named_commands.rs 文件。TypeScript 侧在 src/commands/ 目录下有对应实现。命令分为 4 种类型:local(同步执行,返回文本)、local-jsx(React 组件渲染)、prompt(模型扩展执行)。所有命令支持大小写不敏感匹配,并使用懒加载(dynamic import())减少启动开销 — 只在命令被调用时才加载其实现模块。
功能标志在编译时如何影响构建?
功能标志通过 条件编译控制代码包含性。当标志为 false 时,Bun bundler 的 tree-shaking 和 dead code elimination 会将相关代码完全剔除出最终产物。例如当 BUDDY = false 时,整个 src/buddy/ 模块不会被打包。Rust 侧使用 Cargo 的 feature 系统实现同样效果。这保证了生产构建的体积和性能不受未发布功能影响,同时开发分支可以方便地通过翻转标志来测试新功能。
GrowthBook 在 Claude Code 中的作用是什么?
GrowthBook 是 Claude Code 使用的运行时特征门控和 A/B 测试平台。它控制功能的灰度发布 — Anthropic 可以远程决定哪些用户看到哪些功能,无需发布新版本。客户端启动时拉取远程配置(5000ms 初始化超时),并缓存到磁盘作为离线后备。用户属性包括 user_id、org_id、user_type。开发测试时可通过 setGrowthBookConfigOverride API 覆盖远程配置。
tengu_* 前缀代号系统是什么?
tengu 是 Claude Code 项目的内部代号,所有 GrowthBook 功能标志都以 tengu_ 为前缀。已知的代号映射包括:tengu_malort_pedway(Computer Use / Chicago)、tengu_onyx_plover(AutoDream)、tengu_kairos(KAIROS 助手)、tengu_bridge_repl_v2(Bridge V2 协议)、tengu_penguins_off(Fast Mode 终止开关)、tengu_amber_quartz_disabled(语音模式终止开关)、tengu_coordinator(多智能体协调器)。
tengu_frond_boric 控制什么?
tengu_frond_boric 是 Analytics Kill Switch(遥测总开关)。当此标志被激活时,Claude Code 会完全停止向 Anthropic 发送所有遥测和分析数据。这是一个安全阀门 — 如果遥测系统出现问题(如数据泄露风险、性能影响、合规要求),Anthropic 可以通过 GrowthBook 后台远程关闭所有实例的遥测上报,无需发布新版本。正常运行时 Claude Code 会追踪 1000+ 种遥测事件。
tengu_anti_distill_fake_tool_injection 是什么?
这是 Claude Code 的反蒸馏(Anti-Distillation)防御机制。当此 GrowthBook 标志激活时,系统会在发送给 API 的请求中注入伪造的工具定义(fake tool injection),污染竞争对手通过 API 交互数据蒸馏 Claude 行为的尝试。这是一种对抗知识蒸馏攻击的策略 — 如果有人试图通过大量 API 调用来复制 Claude 的工具使用模式,注入的假工具会干扰训练数据的质量。
GrowthBook 初始化超时是多少?
5000 毫秒(5 秒)。客户端启动时向 GrowthBook 远程服务器请求最新的功能标志配置,如果 5 秒内未收到响应则使用磁盘缓存的上次成功配置作为后备(persistent cache)。这确保了即使网络不佳或 GrowthBook 服务不可用,Claude Code 仍然可以正常启动并使用上次已知的功能配置。缓存采用积极更新策略(aggressive runtime caching)。
环境变量分几类?
分为 3 大类:Debug 调试类 — 用于内部诊断,如 CLAUDE_CODE_PERFETTO_TRACE(性能追踪)、CLAUDE_CODE_PROFILE_STARTUP(启动分析)、CLAUDE_CODE_FRAME_TIMING(帧计时)、CLAUDE_CODE_DEBUG、CLAUDE_CODE_VERBOSE。Runtime 运行时类 — 控制运行行为,如 CLAUDE_CODE_MAX_TOKENS、CLAUDE_CODE_THINKING_BUDGET、CLAUDE_CODE_INJECTED_DATE。Safety Bypass 安全旁路类 — 用于跳过权限检查(如 CLAUDE_CODE_DANGEROUSLY_DISABLE_PERMISSIONS)。
有哪些典型的调试环境变量?
主要调试变量包括:CLAUDE_CODE_PERFETTO_TRACE — 启用 Perfetto 格式的性能追踪,生成可在 Chrome Tracing 中查看的追踪文件;CLAUDE_CODE_PROFILE_STARTUP — 分析启动阶段的性能瓶颈;CLAUDE_CODE_FRAME_TIMING — 记录每帧渲染耗时,用于诊断终端 UI 卡顿;CLAUDE_CODE_DEBUG — 通用调试模式;CLAUDE_CODE_VERBOSE — 详细日志输出;CLAUDE_CODE_DEBUG_REPAINTS — 追踪 fiber owner chain 定位不必要的组件重渲染。
有哪些安全旁路环境变量?
最具争议的是 CLAUDE_CODE_DANGEROUSLY_DISABLE_PERMISSIONS — 顾名思义,完全禁用权限检查系统,所有工具调用将直接执行而不请求用户确认。这在 CI/CD 或受信任的自动化环境中有用,但在交互使用中极其危险。此外还有 CLAUDE_CODE_SKIP_TRUST_DIALOG(跳过信任对话框)等变量。安全旁路类变量的命名刻意使用 "DANGEROUSLY" 前缀以警示开发者风险。
环境变量总共有多少个?
共 120+ 个环境变量被文档化。这些变量分布在 Debug 调试(约 10+)、Runtime 运行时覆盖(约 20+)和 Safety 安全旁路(少量但高影响)三类中,其余涵盖 API 配置、代理设置、MCP 集成、日志控制等方面。变量名均以 CLAUDE_CODE_ 前缀开头(部分例外),确保命名空间隔离不与系统其他环境变量冲突。
运行时环境变量控制什么?
运行时变量控制 Claude Code 的实时行为参数,无需重新编译。关键变量包括:CLAUDE_CODE_MAX_TOKENS — 覆盖模型最大输出 token 数;CLAUDE_CODE_THINKING_BUDGET — 控制思考预算(扩展思考的 token 分配);CLAUDE_CODE_INJECTED_DATE — 注入自定义日期(测试用);CLAUDE_CODE_SIMPLE — 启用精简模式(等效于 --bare 标志);CLAUDE_CODE_VOICE_DISABLED — 禁用语音输入模块。这些变量使运维团队可以不重启即调整实例行为。
Claude Code 有多少个子系统?
10 大核心子系统:① Query/Turn 执行引擎(处理用户请求和模型响应)、② 工具框架(40+ 工具 + 5 桶权限)、③ 终端 UI(React 19 + Ink 框架)、④ 命令系统(87+ 命令,大小写不敏感)、⑤ Bridge 协议(远程控制 V1/V2)、⑥ 多智能体系统(Coordinator + Worker)、⑦ 记忆系统(4 种记忆类型 + AutoDream 整理)、⑧ MCP 集成(JSON-RPC 2.0 over stdio)、⑨ Plugin/Skills 平台、⑩ IDE 集成。
Rust 重写了哪些模块?具体 9 个 crate 是什么?
9 个 Rust crate:cc-core(共享类型,14 种错误变体,AtomicU64 无锁成本追踪,Hooks 系统)、cc-api(API 客户端,SSE 流式传输,5 次重试 / 1 秒基数 / 60 秒上限)、cc-tools(33 个工具实现,零大小结构体,BashTool 120 秒超时)、cc-query(Agent 循环,90% 上下文自动压缩,保留最后 10 条消息)、cc-tui(终端 UI,ratatui 框架,3 面板布局)、cc-commands(33 个命令)、cc-mcp(MCP 客户端,协议版本 2024-11-05)、cc-bridge(轮询式桥接,60 秒指数退避上限)、cc-buddy(伙伴系统,与 TS 版生成逻辑完全对等)。
为什么要用 Rust 重写?
主要驱动力是性能关键路径的原生速度需求。终端渲染引擎需要 60fps(16ms 帧间隔),文件扫描和差异计算需要低延迟,API 通信需要高效的 SSE 流解析,这些都是 Node.js/TypeScript 难以稳定达到的性能目标。Rust 的零成本抽象、无 GC 暂停和编译期安全保证使其成为理想选择。cc-core 使用 AtomicU64 实现无锁成本追踪,避免了 JavaScript 中需要加锁的并发问题。
TypeScript 和 Rust 的职责分界是什么?
TypeScript 侧:Ink/React 终端 UI 框架、Node.js 事件循环、Bun bundler、Zod 运行时校验、40+ 工具实现(全量)、87+ 命令(全量)、GrowthBook 集成、业务逻辑和路由。Rust 侧:ratatui 即时模式 UI、Tokio 异步运行时、reqwest + rustls-tls HTTP 客户端、serde 序列化、33 个工具(持续迁移中)、33 个命令(持续迁移中)。两套实现保持功能对等,Rust 版本是 TypeScript 版本的渐进式替代。
React 在 Claude Code 中扮演什么角色?
Claude Code 使用 React 19 ConcurrentRoot + Ink 框架进行终端 UI 渲染(不是 Web!)。通过 react-reconciler 创建自定义 Fiber 根,将 React 组件树协调为终端字符输出。ConcurrentRoot 模式支持非阻塞渲染和优先级调度。渲染管线中使用 prepareForCommit/resetAfterCommit 触发 Yoga 布局计算和帧调度,commitMount 处理 autoFocus。React Compiler 自动 memoization 应用于所有组件。
虚拟滚动的上限是多少?
MAX_RENDERED_LINES = 200(消息渲染上限)。当对话超过 200 条消息时,旧消息不再生成 React 节点 — 只保留数据不渲染 UI,以防止 DOM 树过大导致性能下降。在渲染前会先过滤掉空的 attachment 消息,然后对剩余消息应用 200 条限制。支持 JumpHandle 的 transcript 模式跳转。LogoHeader 组件使用 React.memo 优化避免不必要的重渲染。
内存双阈值策略是什么?
Claude Code 实施双阈值内存管理策略,每 10 秒检查一次内存使用:1.5GB — 高水位阈值(status: 'high'),触发警告并开始主动释放非关键缓存;2.5GB — 临界阈值(status: 'critical'),触发紧急内存回收,可能中止非必要的后台任务。这一策略防止了长时间运行的会话(如 KAIROS、Daemon)因内存泄漏导致 OOM 崩溃。
渲染帧率目标是多少?
目标 60fps,对应帧间隔 FRAME_INTERVAL_MS = 16(毫秒)。终端渲染引擎使用 8 步渲染管线:React → Reconciler → VDOM → Yoga 布局 → Output → Screen → Diff → Terminal。通过双缓冲 + 差异绘制(Blit)算法只重绘变化的 Cell,避免全屏刷新。FpsMetricsProvider 实时追踪帧率,CLAUDE_CODE_FRAME_TIMING 环境变量可开启帧计时诊断。
消息渲染上限是多少条?
200 条。超过 200 条消息后,旧消息停止渲染(不生成 React 节点),但消息数据仍保留在内存中供搜索和引用。这一限制是为了保持终端 UI 的流畅性 — React 组件树过大会导致协调(reconciliation)开销增加。同时,cc-query crate 在模型上下文达到 90% 时会自动触发消息压缩,保留最后 10 条消息并压缩其余历史。
Markdown LRU 缓存容量是多少?
500 条 entry。Claude Code 维护一个 LRU(Least Recently Used)缓存来存储已解析的 Markdown 渲染结果。当 Claude 返回的消息包含 Markdown 格式时,解析后的终端渲染结果会被缓存起来,避免重复解析同一内容(如滚动回看时)。缓存满 500 条后,最近最少使用的条目被淘汰。这配合 200 条消息渲染上限,确保了长会话中 Markdown 内容的渲染性能。
Claude Code 有多少内置工具?
40+ 个内置工具,TypeScript 侧为完整实现,Rust 侧的 cc-tools crate 已重写 33 个。核心工具包括:BashTool(命令执行,2 秒显示 spinner,2 分钟自动转后台,120 秒超时,支持 bwrap/sandbox-exec 沙箱)、FileReadTool(文件读取,支持文本/图片/Jupyter/PDF)、FileEditTool(文件编辑,强制 read-after-write,mtime 过期检查)、FileWriteTool(文件创建,最大 1 GiB)、GlobTool、GrepTool(ripgrep 核心)、AgentTool(子 Agent 实例化)等。
工具权限分几个桶?各桶包含什么?
5 个权限桶:READ_ONLY — 安全只读操作(GlobTool、GrepTool、FileReadTool、WebFetchTool),默认自动通过;EDIT — 中等风险编辑操作(FileEditTool、FileWriteTool、NotebookEditTool),需用户确认;EXECUTION — 高风险命令执行(BashTool、TungstenTool),可执行任意命令,必须确认;MCP — Model Context Protocol 第三方工具,通过 getMcpServerBuckets 动态注册,风险取决于具体 MCP 服务器;OTHER — 未分类兜底。
权限请求类型有多少种?
14+ 种,每种有独立的 UI 组件和交互逻辑:BashPermissionRequest(含 sed 编辑模式检测、沙箱选项)、FileEditPermissionRequest(diff 视图预览)、FileWritePermissionRequest(完整文件内容预览)、FilesystemPermissionRequest、NotebookEditPermissionRequest(Cell diff 视图)、WebFetchPermissionRequest、McpToolPermissionRequest 等。每种请求还支持 4 级权限响应:Automatic / Ask Once / Ask Always / Deny。
classifier 自动审批是什么?
通过 TRANSCRIPT_CLASSIFIER 功能标志启用的 ML 安全分类器。当工具调用发生时,分类器自动评估操作的安全性。如果判定为安全(如常规文件读取、已知安全的 bash 命令),自动放行无需用户确认。审批过程中显示 ClassifierCheckingSubtitle 组件,带有 20fps shimmer 动画(闪光加载效果),组件隔离设计避免 shimmer 动画导致整个权限对话框重渲染。
20fps shimmer 动画用在哪里?
用在工具权限审批等待时的 UI 组件中(ClassifierCheckingSubtitle)。当 ML 分类器正在评估工具调用的安全性时,用户看到一个带有 20fps 闪光动画的"检查中"提示。动画帧率刻意低于主渲染管线的 60fps,以减少 CPU 开销。通过组件隔离技术实现 — shimmer 的状态更新不会触发父级权限对话框的重渲染,避免了 UI 闪烁问题。
MCP 工具桶包含什么?
MCP(Model Context Protocol)工具桶包含通过 MCP 服务器动态注册的第三方工具。MCP 使用 JSON-RPC 2.0 over stdio 协议(版本 2024-11-05),允许外部工具以标准化方式集成到 Claude Code 中。工具的风险级别取决于具体的 MCP 服务器 — 系统通过 getMcpServerBuckets 函数动态获取每个 MCP 工具的权限桶分配。cc-mcp crate 提供了 Rust 侧的 MCP 客户端实现。
READ_ONLY 桶的工具可以做什么?
READ_ONLY 桶包含安全的只读操作工具:GlobTool — 文件模式匹配,按修改时间排序;GrepTool — 基于 ripgrep 核心的内容搜索,支持正则/多行/上下文;FileReadTool — 文件读取,支持文本、图片、Jupyter notebook 和 PDF(/dev 路径受保护);WebFetchTool — URL 内容获取,HTML 转 Markdown,15 分钟缓存。这些工具默认自动通过权限检查(Ask Once 级别),因为只读操作不会修改用户文件系统。
EXECUTION 桶有什么限制?
EXECUTION 桶包含 BashTool 和 TungstenTool,风险最高 — 可执行任意系统命令。限制措施包括:每次执行需用户确认(除非 classifier 自动审批);BashTool 有 120 秒默认超时;2 秒后显示 spinner 动画;2 分钟无输出自动转后台;支持 bwrap(Linux)/ sandbox-exec(macOS)沙箱隔离。可通过 CLAUDE_CODE_DANGEROUSLY_DISABLE_PERMISSIONS 旁路(极度危险)。
YOLO 模式是什么?
YOLO 模式通过 ML 安全分类器(TRANSCRIPT_CLASSIFIER)实现自动判断命令危险等级并跳过人工审批的功能。当分类器将一个工具调用评定为安全时,权限请求自动通过 — 实现"You Only Live Once"风格的快速执行。这不等于完全禁用权限(那是 --dangerously-skip-permissions 标志),而是基于 ML 分类的智能自动审批。分类器持续学习用户的操作模式以提高准确率。
系统提示词中工具描述占多大比例?
工具描述是系统提示词的核心组成部分,占据了相当大的 token 比例。每个工具的描述包括:功能说明、参数定义(JSON Schema)、使用限制和示例。40+ 个工具的描述合计占用了系统提示词中大量 token。系统使用 systemPromptSectionCache 缓存提示词各节以避免重复序列化。--dump-system-prompt(ant-only)标志可输出完整系统提示词到 stdout,用于调试提示词的构成和长度。
终端渲染引擎有几步管线?
8 步渲染管线:① React(组件树更新)→ ② Reconciler(Fiber 协调)→ ③ VDOM(虚拟 DOM 生成)→ ④ Yoga 布局(Flexbox 计算)→ ⑤ Output(输出生成)→ ⑥ Screen(屏幕缓冲区写入)→ ⑦ Diff(差异计算)→ ⑧ Terminal(终端转义序列输出)。整条管线以 60fps(16ms 帧间隔)为目标,使用双缓冲和 Blit 差异绘制优化性能。
Cell 编码用了什么数据结构?
使用 2×Int32 位域结构编码每个终端 Cell。两个 32 位整数中紧凑地编码了字符内容、前景色、背景色、样式属性(粗体/斜体/下划线等)以及 Interning Pool 索引。这种位域设计将每个 Cell 的内存占用压缩到仅 8 字节,对于一个 200 列 × 50 行的终端屏幕(10,000 个 Cell)总共只需 80KB。配合 3 个 Interning Pool 进一步去重共享数据。
有几个 Interning Pool?分别是什么?
3 个 Interning Pool:Style Pool — 样式属性去重池,相同的前景/背景色 + 粗体/斜体等组合只存储一份,Cell 通过索引引用;Char Pool — 字符内容去重池,相同的字符(包括 CJK 全角字符、emoji ZWJ 序列等)只存储一份;StringStyle Pool — 字符串+样式组合去重池。三层 Interning 大幅减少了终端缓冲区的内存占用,尤其在显示大量重复内容(如代码缩进、表格边框)时效果显著。
Blit 差异绘制算法做什么?
Blit(Block Image Transfer)差异绘制是终端渲染引擎的核心优化算法。每帧渲染时,系统比较前后两帧的 Screen 缓冲区,只将发生变化的 Cell 发送到终端,而非全屏刷新。配合双缓冲策略(当前帧和上一帧各一个缓冲区),以及硬件滚动(DECSTBM 转义序列),Blit 算法将大部分帧的实际终端输出量降低到只有变化区域,从而在低带宽终端(如 SSH 远程会话)中也能保持流畅。
同步输出支持几种终端?
支持 8 种终端的同步输出优化。同步输出(Synchronized Output)通过特定的转义序列告诉终端"暂时不要渲染,等我把这一帧的所有内容写完再一次性刷新",避免了部分渲染导致的闪烁。同时支持 Bracketed Paste Mode(ESC[?2004h)、SSH 兼容性检测(\r 终止的合并输入)、BiDi 双向文本支持(reorderBidi for Windows/xterm.js)、以及 CJK 全角/emoji/组合字符的 grapheme 宽度检测。
Undercover 模式是什么?
Undercover 模式是一个隐藏 Anthropic 员工身份痕迹的功能。当启用时,员工在 GitHub 上的提交和 PR 中不会显示 Anthropic 相关的标识 — 使贡献看起来像普通社区成员的行为。这对于 Anthropic 员工在开源项目中进行不引人注目的贡献很有用,避免因公司身份引发过度关注或偏见。源码中包含了该模式的完整实现逻辑。
YOLO 安全分类器是什么?
YOLO 安全分类器是一个基于 ML 的 bash 命令安全性自动判断系统。当 Claude Code 需要执行 bash 命令时,分类器评估命令的危险等级:安全命令(如 ls、git status)自动放行,危险命令(如 rm -rf、写入敏感路径)需要用户确认。分类器使用 TRANSCRIPT_CLASSIFIER 功能标志控制,带有 20fps shimmer 加载动画。与完全禁用权限不同,YOLO 模式是"智能自动审批"而非"无审批"。
Kill Ring 功能是什么?
Claude Code 的终端输入框实现了完整的 Vim 模式(Normal/Insert 状态切换),其中包括 Emacs 风格的 Kill Ring(剪切环)。Ctrl+K/Ctrl+U/Ctrl+W 剪切文本到 Kill Ring,Ctrl+Y 粘贴最近剪切的内容,Meta+Y 在 Kill Ring 历史中循环粘贴更早的剪切内容。同时支持 Vim 的 operator+motion 组合、dot-repeat 重复上次操作、f/F/t/T 行内搜索等高级编辑功能。
语音输入支持多少种语言?用什么 STT 引擎?
支持 20+ 种语言,使用 Deepgram 语音转文字(STT)引擎,通过 Anthropic 的 voice_stream STT 端点调用。支持最多 50 个关键词提示(keyword hints)以提高特定技术术语的识别准确率。受 VOICE_MODE 编译时功能标志和 tengu_amber_quartz_disabled(语音模式终止开关)控制。通过 /voice 斜杠命令触发,可用 CLAUDE_CODE_VOICE_DISABLED 环境变量禁用。
Ctrl+X Ctrl+K 快捷键做什么?
这是一个两步快捷键序列:先按 Ctrl+X 进入扩展快捷键模式,再按 Ctrl+K 触发"杀死全部后台 Agent"操作。按下后有 3 秒确认窗口(3000ms),用户可以在此期间取消。确认后会终止所有后台运行的 Agent 任务,触发 SDK 级别的取消事件(useCancelRequest)并向每个被终止的 Agent 发送聚合通知。这是在 multi-agent Coordinator 模式下快速清理失控任务的紧急手段。