2026.03.31 source leak

Claude Code
泄露文件全解析

Claude Code 的完整 TypeScript 源码通过 npm 包中的 sourcemap 文件意外泄露。 我们深入分析了全部源码,发现了大量未发布功能、隐藏命令和内部机制。

Bun 打包器默认生成 source map,而 .npmignore 中遗漏了 *.map 文件。 sourcesContent 数组中包含了全部原始源代码。

0
源文件
0
代码行数
0
Rust Crate
0
内置工具
0
斜杠命令
Last Updated:

未发布功能

源码中发现了 8 个尚未公开或正在开发中的功能模块,涵盖 AI 宠物、持续助手、远程规划、多智能体协作等方向。

协调器模式 Coordinator
COORDINATOR_MODE
未发布

多智能体任务编排系统,支持 4 阶段工作流:研究 → 综合 → 实现 → 验证。 Worker 通过 Leader 权限桥接协调,支持 Tmux、iTerm2 和进程内三种面板后端。 可在会话中途切换模式。内置完整自定义 Agent 创建向导(11 步 Wizard), 产物以 YAML 前置数据 + Markdown 文件存储在 .claude/agents/。 工具按 5 个桶分类:READ_ONLY / EDIT / EXECUTION / MCP / OTHER。

Multi-Agent 4 Phases 11-Step Wizard 5 Tool Buckets
UDS 收件箱
feature flag: UDS_INBOX
未发布

跨会话进程间通信机制 — 多个本地 Claude 实例之间通过 Unix Domain Socket 互相发送消息, 实现跨会话协作与数据共享。由 /peers 命令门控。 权限系统支持 14+ 种请求类型(Bash / FileEdit / FileWrite / MCP 等), classifier 自动审批时展示 20fps shimmer 动画提示「正在尝试自动批准…」。

IPC Unix Socket 14+ 权限类型 20fps Shimmer
守护进程 Daemon
--daemon-worker
未发布

后台会话管理模式 — 以守护进程形式运行 Claude Code, 处理后台任务队列。通过 --daemon-worker CLI 标志激活, 在 cli.tsx 启动分发器中作为快速路径处理。 内置自动更新器每 30 分钟轮询 GCS 检查新版本(支持 npm / 原生安装器 / 包管理器三种路径); 累计 API 消耗达 $5 时弹出 CostThresholdDialog 确认对话框。

Background CLI Flag 30min 自动更新 $5 成本警告

隐藏斜杠命令

源码中发现 26 个未公开的斜杠命令,部分为内部员工专用(ant-only),部分由功能标志门控。 查看完整命令系统分析 →

未公开命令列表
26 Commands
/ctx-viz /ultraplan /dream /env /buddy /voice /peers /fork /brief /advisor /backfill-sessions /break-cache /bughunter /good-claude /mock-limits /bridge-kick /ant-trace /perf-issue /debug-tool-call /oauth-refresh /agents-platform /autofix-pr /teleport /share /summary /onboarding
紫色 = 内部专用 (ant-only) 绿色 = 已发布 白色 = 功能门控

秘密 CLI 启动标志

除公开文档的参数外,main.tsxcli.tsx 中还隐藏了大量未公开的启动参数。 查看工具框架详解 →

未公开启动参数
CLI Flags
--bare --dump-system-prompt --daemon-worker --bg --worktree --tmux --agent --task-budget --max-budget-usd --plugin-dir --sdk-betas --allowedTools --disallowedTools --dangerously-skip-permissions --no-claude-md --chrome-native-host --computer-use-mcp --mcp-config

--dump-system-prompt 仅限内部员工使用,可将完整系统提示词输出到 stdout。 --bare 激活精简模式,工具集缩减为仅 Bash、FileRead、FileEdit 三项(对应 CLAUDE_CODE_SIMPLE 环境变量)。

编译时功能标志

通过 Bun 的 feature() 函数实现编译时特性开关,配合死代码消除。 以下是源码中发现的 32 个编译时功能标志。 查看 Rust 重写详解 →

核心功能标志
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 REMOTE_MANAGED CRON_TASKS DEEP_LINKS OUTPUT_STYLES KEYBINDINGS CUSTOM_THEMES

GrowthBook 功能门控

运行时功能发布通过 GrowthBook 平台管理,使用 tengu_ 前缀的不透明代号进行灰度控制。 缓存策略极为激进,值在运行时高度缓存。

门控代号 → 功能映射
Runtime Gates
代号 功能 状态
tengu_malort_pedwayComputer Use (Chicago)门控
tengu_onyx_ploverAutoDream 自动记忆整理门控
tengu_kairosKAIROS 持续助手模式门控
tengu_bridge_repl_v2Bridge V2 直连协议已上线
tengu_penguins_offFast Mode 快速模式熔断器Kill Switch
tengu_amber_quartz_disabledVoice Mode 语音模式熔断器Kill Switch
tengu_coordinator协调器多智能体模式门控
tengu_buddyBUDDY 伙伴系统门控
tengu_ultraplanULTRAPLAN 远程规划门控
tengu_plugins插件市场门控

秘密环境变量

源码中发现 120+ 个未公开的环境变量,涵盖调试追踪、运行时覆盖和安全旁路三大类。 查看记忆系统详解 →

调试与性能分析
Debug
CLAUDE_CODE_PERFETTO_TRACE Perfetto 性能追踪
CLAUDE_CODE_PROFILE_STARTUP 启动性能剖析
CLAUDE_CODE_FRAME_TIMING 帧计时日志
CLAUDE_CODE_DEBUG 通用调试模式
CLAUDE_CODE_VERBOSE 详细日志输出
运行时覆盖
Override
CLAUDE_CODE_INJECTED_DATE 日期注入
CLAUDE_CODE_MAX_TOKENS Token 上限覆盖
CLAUDE_CODE_THINKING_BUDGET 思考预算控制
CLAUDE_CODE_SIMPLE 精简工具集模式
CLAUDE_CODE_REMOTE_MEMORY_DIR 远程记忆目录
安全旁路
Dangerous
DISABLE_COMMAND_INJECTION_CHECK 禁用命令注入检查 — 危险
CLAUDE_CODE_DISABLE_AUTO_MEMORY 禁用自动记忆
CLAUDE_CODE_VOICE_DISABLED 禁用语音模式
CLAUDE_CODE_SKIP_TRUST_DIALOG 跳过信任对话框

API Beta 头部

源码中硬编码了 18+ 个 anthropic-beta 请求头,揭示了大量未公开的 API 特性及其上线日期。 查看系统提示词架构 →

已知 Beta 特性
Headers
interleaved-thinking-2025-05-14 交错思考
prompt-caching-2024-07-31 提示缓存
output-128k-2025-02-19 128K 输出
max-tokens-3-5-sonnet-2024-07-15 Sonnet Token 上限
token-efficient-tools-2025-02-19 Token 高效工具
未发布 Beta 特性
Unreleased
redact-thinking 隐藏思考过程
afk-mode 离线自主模式
advisor-tool 二级模型审查工具
task-budgets 任务预算控制
prompt-caching-scope 缓存作用域控制

有趣发现

源码深处藏着的奇妙细节 — 从内部代号到反蒸馏机制,从员工隐身模式到遥测追踪。

Undercover 隐身模式

防止 Anthropic 员工在公开仓库的 commit/PR 中意外暴露内部信息。自动清除 AI 辅助痕迹。

src/utils/undercover.ts
YOLO 权限分类器

基于 ML 的转录分类器自动判断 bash 命令安全性,内部代号 "YOLO" — 用于自动授权权限请求。

TRANSCRIPT_CLASSIFIER
1000+ 遥测事件

AtomicU64 无锁计数器追踪输入/输出 token、API 耗时、工具调用次数、代码行增删、commit 和 PR 数量。成本精确到毫分。

analytics.rs
反蒸馏防护

系统提示词中注入假工具定义(fake tool injection),用于检测和防止第三方模型蒸馏训练。

system_prompt.rs
Zig 二进制客户端认证

在二进制层面使用 Zig 编写的客户端认证模块,用于验证 CLI 客户端的真实性,防止 API 滥用。

src-rust/crates/cli
186 个加载动画动词

Spinner 组件内置 186 个趣味加载动词,从技术术语到幽默短语,随机展示进度状态。

spec/12_constants_types.md
Guest Passes 来宾通行证

claude passes 命令可生成邀请链接,赠送朋友一周免费 Claude Code 使用权。

named_commands.rs
Stickers 贴纸收集

claude stickers 命令存在但返回 "coming soon!" — 一个尚未上线的游戏化收集功能。

named_commands.rs
$5 成本警告对话框

当单次会话 API 累计消耗达到 $5 时,CostThresholdDialog 弹出确认对话框,要求用户手动确认是否继续消费。

spec/04 · CostThresholdDialog.tsx
200 条消息渲染上限

消息列表组件对超过 200 条的消息启用渲染裁剪,先过滤空渲染附件再应用 200 条上限,旧消息不再生成 React 节点。

spec/04 · MessageList
按住说话语音输入

Hold-to-talk 语音录制通过 Anthropic 自建 voice_stream WebSocket STT 端点转写,Deepgram 关键词提示最多 50 条,含项目名、Git 分支和技术术语。

spec/06 · voiceStreamSTT.ts

常见问题

关于 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-corecc-apicc-toolscc-querycc-tuicc-commandscc-mcpcc-bridgecc-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.mapsourcesContent 数组中。由于 .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 总耗时)、sessionIdagentColorMap(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)。受到 KAIROSKAIROS_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 个编译时功能标志。核心功能类:KAIROSKAIROS_BRIEFCOORDINATOR_MODEBRIDGE_MODEDAEMONULTRAPLANBUDDYVOICE_MODEUDS_INBOXFORK_SUBAGENT。基础设施类:CHICAGO_MCPTRANSCRIPT_CLASSIFIERPLUGINSSKILLS_MARKETPLACEMCP_RESOURCESTEAM_MEMORYTOOL_SEARCHAUTO_DREAMFAST_MODEADVISORCRON_TASKSCUSTOM_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_idorg_iduser_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_idorg_iduser_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_boricAnalytics 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_DEBUGCLAUDE_CODE_VERBOSERuntime 运行时类 — 控制运行行为,如 CLAUDE_CODE_MAX_TOKENSCLAUDE_CODE_THINKING_BUDGETCLAUDE_CODE_INJECTED_DATESafety 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 cratecc-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)、GlobToolGrepTool(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(完整文件内容预览)、FilesystemPermissionRequestNotebookEditPermissionRequest(Cell diff 视图)、WebFetchPermissionRequestMcpToolPermissionRequest 等。每种请求还支持 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 桶包含 BashToolTungstenTool,风险最高 — 可执行任意系统命令。限制措施包括:每次执行需用户确认(除非 classifier 自动审批);BashTool120 秒默认超时;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 PoolStyle 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 ModeESC[?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 命令时,分类器评估命令的危险等级:安全命令(如 lsgit 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 模式下快速清理失控任务的紧急手段。

未发布功能

BUDDY 伙伴系统

一套完整的电子宠物系统 — 基于用户 ID 确定性生成,以 ASCII 艺术形式渲染在终端中。 计划发布窗口:2026 年 4 月 1-7 日。

18
物种数量
5
稀有度等级
1%
闪光概率
5
属性维度

生成机制

每个用户的伙伴由 Mulberry32 伪随机数生成器确定性派生。 种子值 = SHA-256(userId + salt),其中 salt 为固定字符串 "friend-2026-401"。 这意味着同一用户永远获得同一只伙伴 — 无法重新抽取。

伙伴由两部分组成:Bones(视觉特征和属性值,从不存储,总是实时计算) 和 Soul(由 Claude AI 在首次孵化时生成的名字和人格描述,持久化存储在 companion.json 中)。

18 种物种

物种英文名类型
鸭子Duck普通
Goose普通
果冻Blob普通
Cat普通
Dragon稀有
章鱼Octopus稀有
猫头鹰Owl普通
企鹅Penguin普通
乌龟Turtle普通
蜗牛Snail普通
幽灵Ghost稀有
六角恐龙Axolotl史诗
水豚Capybara史诗
仙人掌Cactus稀有
机器人Robot传说
兔子Rabbit普通
蘑菇Mushroom稀有
胖墩Chonk传说

物种名使用 String.fromCharCode() 编码存储,规避构建系统中的金丝雀字符串扫描检测。

稀有度概率

60%
Common 普通
25%
Uncommon 非凡
10%
Rare 稀有
4%
Epic 史诗
1%
Legendary 传说

闪光(Shiny)为独立 1% 概率检定,与稀有度无关。普通稀有度的伙伴不会获得帽子装饰。

视觉元素

眼型(6 种):

Dot 点状 .
Star 星形 *
X 叉形 x
Circle 圆形 o
At @ 符号 @
Degree 度数 °

帽子(8 种):

None 无
Crown 皇冠
Tophat 礼帽
Propeller 螺旋桨帽
Halo 光环
Wizard 巫师帽
Beanie 毛线帽
TinyDuck 迷你鸭子

5 项属性

每只伙伴具有 5 项属性值,通过基于稀有度的 peak/dump 系统随机生成。 稀有度越高,属性值上限越高。

Debugging
调试能力
Patience
耐心
Chaos
混乱值
Wisdom
智慧
Snark
毒舌值

ASCII 渲染

每只伙伴渲染为 5 行高、12 字符宽的 ASCII 艺术图案,显示在终端提示符旁边。 支持动画效果。

___ (o.o) /)__) --"--"-- Buddy!

桌面通知机制

当 Claude 后台工作时,useNotifyAfterTimeout hook 在用户 6 秒无操作后 触发 OS 级桌面通知(调用 sendDesktopNotification 原生模块)。 仅在终端失焦时发送 — 通过 useTerminalFocus 检测焦点状态。

6s
触发延迟
OS
原生通知

Swarm 权限轮询

在 Coordinator 多智能体模式下,Worker 智能体通过 useSwarmPermissionPoller500ms 间隔轮询 Leader 的权限响应。机制细节:

仅当 isSwarmWorker() 为 true 时激活
使用 useInterval(usehooks-ts)驱动 500ms 轮询
遍历 pendingCallbacks Map 中的每个 requestId
收到响应后调用 processResponse() 触发 onAllow / onReject 回调
导出辅助函数:registerPermissionCallback / unregisterPermissionCallback / clearAllPendingCallbacks
同时支持普通权限和沙箱权限两套独立回调 Map
500ms
轮询间隔
2
回调 Map(权限 + 沙箱)
未发布功能

KAIROS 持续助手

全天候持续运行的 AI 助手模式 — 不是等待指令,而是主动监听、记录并在需要时采取行动。 由 KAIROSKAIROS_BRIEF 编译标志门控。

15s
阻塞预算上限
24/7
运行模式
3
专属工具数

工作原理

KAIROS 模式下,Claude 不再是被动等待用户输入的工具,而是转变为一个持续运行的助手。 系统通过定时的 <tick> 提示触发 Claude 的自主思考周期。

每次 tick 到来时,Claude 检查环境变化、评估是否需要主动采取行动。 为避免阻塞用户操作,每次自主行动的执行时间严格限制在 15 秒以内。 如果需要等待,使用 SleepTool 主动让出控制权。

追加式每日日志

KAIROS 使用 append-only 的每日日志系统记录所有观察和行动。 日志按天分割,形成可检索的长期记录。这些日志也是 AutoDream 记忆整理的输入源之一。

专属工具

以下 3 个工具仅在 KAIROS 模式下可用:

SendUserFile — 向用户推送文件,用于主动分享发现或生成的内容
PushNotification — 向用户发送推送通知,用于重要事件提醒
SubscribePR — 订阅 GitHub PR 状态变更,用于代码审查跟踪

运行流程

系统启动
<tick> 触发
环境检查
评估行动
≤15s 执行
记录日志
Sleep 等待

相关命令

/brief /dream /voice

/briefKAIROS_BRIEF 标志门控,提供 KAIROS 状态摘要。 /dream 手动触发记忆整理。

全局会话状态单例(~80 字段)

bootstrap/state.ts 定义了整个 Claude Code 进程的单一全局状态对象。 作为 import DAG 的严格叶节点,包含约 80 个字段,涵盖:

originalCwd / projectRoot — NFC 规范化、符号链接解析后的工作目录
totalCostUSD / totalAPIDuration — 精确到毫分的 API 消耗追踪
sessionId — 进程启动时 randomUUID 生成
agentColorMap — Agent 颜色分配 Map + 索引
systemPromptSectionCache — 系统提示词分段缓存
promptCache1hAllowlist / promptCache1hEligible — 1h TTL 门控(会话稳定,防止中途翻转)
OTel 计量器:sessionCounter / locCounter / prCounter / commitCounter / costCounter / tokenCounter 等

Prompt Cache 机制

提示词缓存支持两种 TTL 策略:默认的 ephemeral 和门控的 1 小时 TTL

策略Cache Control门控条件
默认{ type: 'ephemeral' }模型在 allowlist 中
1h TTL{ type: 'ephemeral', ttl: 3600 }tengu_prompt_cache_1h_config GrowthBook allowlist + 会话 eligible 标志

缓存断裂检测:promptCacheBreakDetection.ts 监控 API 响应中的 cache_read_input_tokens。当缓存命中 token 数低于 2000 token 阈值时判定为缓存断裂, 记录诊断日志辅助排查成本异常。

1h
最大 Cache TTL
2000
断裂检测阈值 (tokens)
~80
State 字段数
未发布功能

ULTRAPLAN 远程规划

将复杂的规划任务卸载到远程云容器,使用最强模型 Opus 4.6 进行长达 30 分钟的深度规划, 然后将结果传送回本地终端。

30min
最长运行时间
Opus 4.6
使用模型
CCR
运行环境

架构设计

ULTRAPLAN 解决的核心问题是:本地终端的资源和时间限制不适合处理复杂的架构规划任务。 它将规划工作卸载到 Cloud Container Runtime (CCR) — Anthropic 的远程容器执行环境。

CCR 环境配置了 16GB 内存(Node.js --max-old-space-size=8192), 运行 Opus 4.6 模型,最长持续 30 分钟。

执行流程

用户 /ultraplan
创建 CCR 会话
远程 Opus 规划
浏览器审批 UI
Teleport 传送
本地应用结果

浏览器审批 UI

远程规划完成后,系统不会自动应用结果。而是生成一个浏览器端的审批界面, 让用户审查规划方案、修改细节、确认后才通过 Teleport 机制将结果传送回本地终端执行。

/teleport 命令(已发布)负责在远程会话和本地会话之间传输数据。 这种设计确保了用户对复杂规划的完全控制权。

门控与限制

编译标志 ULTRAPLAN 门控
GrowthBook 运行时门控 tengu_ultraplan
仅限内部员工使用的 /ultraplan 命令 (ant-only)
需要 OAuth 认证和 CCR 访问权限
未发布功能

AutoDream 自动记忆整理

后台记忆整理引擎 — 像人类在睡眠中整理记忆一样,Claude 在会话间隙自动整合近期经验, 将有价值的信息写入持久化记忆系统。

3
触发门条件
4
整理阶段
24h
最小间隔
200
记忆文件上限

三门触发机制

AutoDream 不会随意运行。它采用三门触发系统,所有条件必须同时满足才会启动整理:

时间门 — 距离上次整理至少 24 小时(扫描节流 10 分钟)
会话门 — 自上次整理以来至少有 5 个新会话的转录记录
锁定门 — 文件锁可用(1 小时过期超时,防止并发整理)

四阶段整理流程

1. 定向 Orient
2. 采集 Gather
3. 整合 Consolidate
4. 修剪 Prune
定向 — 读取现有记忆目录,理解当前记忆状态和索引结构
采集近期信号 — 搜索最近的会话转录,提取有价值的信息片段
整合 — 将新信息写入/更新记忆文件,合并重复内容,丰富已有记忆
修剪与索引 — 保持 MEMORY.md 索引不超过 200 行,删除过时记忆

安全约束

Dream 智能体作为 fork 子智能体运行,权限受到严格限制:

仅有只读 bash 权限 — 不能执行任何修改命令
不能创建新文件(记忆文件除外)
不能访问网络
不能发起子智能体
配置由 GrowthBook 功能标志控制(tengu_onyx_plover

记忆文件格式

整理产出的记忆文件存储在 ~/.claude/projects/<项目>/memory/ 目录下, 采用 YAML frontmatter 的 Markdown 格式。四种记忆类型:

User
用户画像
Feedback
行为反馈
Project
项目上下文
Reference
外部资源引用

GrowthBook 初始化

AutoDream 的配置和门控依赖 GrowthBook 功能标志客户端。初始化关键参数:

参数说明
初始化超时5000ms远程评估 + 磁盘持久化缓存,超时则使用缓存值
刷新机制onGrowthBookRefresh监听远程配置更新事件
用户属性user_id / org_id / user_type用于 feature gate 评估
覆盖 APIsetGrowthBookConfigOverride开发/测试环境可手动覆盖任意门控

反蒸馏机制 Anti-Distillation

GrowthBook 门控 tengu_anti_distill_fake_tool_injection 启用后, 系统向 API 请求中注入伪工具定义(fake tools),作为训练数据质量信号。

伪工具混入真实工具列表中发送给 API
目的:检测第三方是否使用 Claude Code 的 API 输出进行模型蒸馏训练
伪工具的存在不影响正常功能 — Claude 不会调用它们
getExtraBodyParams() 在请求组装阶段注入

此机制还配合 tengu_frond_boric(analytics kill switch)共同构成 Anthropic 的遥测安全体系 — 当检测到异常流量模式时可一键关闭所有遥测。

已发布功能

Bridge 远程控制

从 claude.ai 网页端或移动端远程驱动本地 CLI 会话。双向实时通信, 支持两套协议版本,包含完整的认证、崩溃恢复和设备指纹机制。

2
协议版本
JWT
认证方式
4h
指针文件 TTL
SHA-256
设备指纹算法

双协议架构

V1 环境 API
Legacy

通过 Environments API 注册为"环境"并轮询任务。传输层为 HybridTransport — WebSocket 读取 + HTTP POST 写入(100ms 批量发送)。

V2 直连
Current

绕过 Environments API,直接 HTTP 创建会话 + 注册桥接 + SSE 传输。由 GrowthBook tengu_bridge_repl_v2 门控。45 秒活性超时。

部署模式

REPL Bridge — 内嵌在现有 REPL 进程中,将远程消息注入为本地用户输入
Standalone Bridge (claude remote-control) — 每个会话生成子进程,支持三种模式:单会话、worktree 隔离、同目录共享

认证与安全

使用 JWT 认证,客户端提前 5 分钟主动刷新 token,备用 30 分钟定时刷新。 会话 ID 兼容层在 cse_*(内部基础设施)和 session_*(客户端 API)前缀间自动转换。

设备指纹通过 SHA-256 哈希生成:SHA-256(hostname + username + homeDir),用于可信设备识别。 崩溃恢复使用项目目录中的桥接指针文件(4 小时 TTL)。

双向消息协议

Web → CLI (BridgeMessage):

UserMessage 用户消息
PermissionResponse 权限响应
Cancel 取消操作
Ping 心跳

CLI → Web (BridgeEvent):

TextDelta 文本增量
ToolStart / ToolEnd 工具生命周期
PermissionRequest 权限请求
TurnComplete / Error / Pong

QR Code 桥接对话框

BridgeDialog.tsx 组件在 REPL 桥接启动时展示 QR 码和分支名称, 供移动端/远程客户端扫码连接。使用 qrcode 库实时渲染。

内部状态:showQR: booleanqrText: stringbranchName: string
从 AppState 读取当前桥接状态
用户关闭对话框时调用 onDone() 回调

React Compiler 自动 Memoization

所有 Bridge 相关组件(及整个 Claude Code UI)均经过 React Compiler (react/compiler-runtime) 编译处理。自动 memoization 模式特征:

_c(N) 缓存分配器 — 编译器为每个组件生成固定大小的缓存数组
Symbol.for("react.memo_cache_sentinel") 哨兵值 — 标记未初始化的缓存槽位
非手写 memo — 所有 memoization 完全由编译器自动插入
编译时特性标志通过 feature('FLAG_NAME')bun:bundle 评估,死代码在外部构建中被消除
核心系统

记忆系统 Memdir

基于文件的持久化记忆系统 — 使用 Markdown + YAML frontmatter 格式, 支持自动记忆、团队共享记忆、相关性检索和过期预警。

4
记忆类型
200
文件数上限
25KB
索引大小上限
24h
新鲜度阈值

存储结构

记忆文件按用户+项目存储在 ~/.claude/projects/<sanitized-git-root>/memory/ 目录下。 每个记忆文件是独立的 Markdown 文件,以 YAML frontmatter 描述元数据(name、description、type)。 MEMORY.md 作为索引文件,限制在 200 行 / 25KB 以内。

四种记忆类型

User 用户画像

关于用户角色、目标、偏好和知识水平的信息。帮助 Claude 针对不同用户定制交互方式。

Feedback 行为反馈

用户对 Claude 工作方式的纠正和确认。包含规则本身 + Why 原因 + How to apply 应用方式。

Project 项目上下文

正在进行的工作、目标、截止日期等无法从代码或 git 历史推导的信息。

Reference 外部引用

指向外部系统中信息位置的指针 — Linear 项目、Slack 频道、Grafana 面板等。

相关性检索

主要检索方式:调用 Sonnet 模型评估记忆相关性,从全部记忆中选出最多 5 个最相关的文件加载到上下文。 备选方案:轻量级 TF-IDF 关键词匹配,作为无 LLM 调用时的低成本降级方案。

过期预警

超过 24 小时未更新的记忆会被添加 <system-reminder> 警告标签, 提示模型该记忆可能已过时,需要对照当前代码/资源验证后再使用。

安全防护

团队记忆子目录支持包含完整的路径遍历防护

URL 编码遍历检测 (%2e%2e)
Unicode 规范化攻击防护
符号链接安全写入验证
文件名清理与白名单

内存双阈值策略

useMemoryUsage hook 每 10 秒轮询 process.memoryUsage() 检测堆内存使用量。两个阈值触发不同响应:

状态阈值响应
正常< 1.5 GB返回 null,无任何干预
high≥ 1.5 GB返回 { status: 'high' },触发警告和主动上下文压缩
critical≥ 2.5 GB返回 { status: 'critical' },触发紧急回收策略

Memory 与 GrowthBook Gate

自动记忆功能(auto memory)受 GrowthBook 功能标志控制。关键门控关系:

tengu_onyx_plover — AutoDream 记忆整理服务的主开关
isAutoMemoryEnabled() — 决定 Agent 创建向导是否展示 MemoryStep
记忆文件的 description 字段用于未来会话的相关性判断(决定是否加载到上下文)
Session Memory(sessionMemory.ts)管理会话内短期记忆,与持久化 memdir 独立
上下文压缩(compact/)与 memory 协同 — 压缩时保留 memory 引用,避免丢失重要记忆指针
深度分析

架构总览

Claude Code 是一个基于 React/Ink 的终端 AI 编程助手,包含 10 大核心子系统, 正在进行从 TypeScript 到 Rust 的完整重写。

10
核心子系统
TS+Rust
双技术栈
200K
上下文窗口
Bun
打包工具

技术栈

主语言:TypeScript/TSX(1902 文件、800K+ 行)
次语言:Rust(9 crate,完整重写进行中)
打包:Bun bundler(编译时 feature() 死代码消除)
终端 UI:Ink(React reconciler for terminal)+ Yoga(flexbox 布局)
运行时:Node.js / Bun CLI
默认模型:claude-sonnet-4-6 / claude-opus-4-6

10 大子系统

Query/Turn 执行引擎

主循环:构建 API 请求 → 流式响应 → 工具调用 → token 预算管理 → 成本追踪。200K 上下文窗口自动压缩。

工具框架 Tool

抽象基类 + Zod schema 验证 + 40+ 实现。4 级权限模型(自动/询问一次/每次询问/拒绝),沙箱支持。

终端 UI Ink

自定义 React reconciler 渲染到终端。Yoga flexbox 布局引擎 + ANSI/CSI 转义序列处理。389 个组件文件。

命令系统

87+ 斜杠命令,懒加载 + 模糊匹配。三种类型:local(同步)、local-jsx(React 组件)、prompt(模型扩展)。

Bridge 协议

JWT 认证 WebSocket/SSE 双向通信。远程/云同步会话,IDE 集成(VS Code、JetBrains)。

多智能体系统

子智能体隔离实例、后台任务执行、协调器模式(4 阶段工作流)、Swarm 模式(并行 worker)。

记忆系统

短期(会话历史)+ 长期(memdir Markdown 文件)+ 自动整理(AutoDream 服务)。

MCP 集成

Model Context Protocol 服务端支持,动态工具注册。Claude Code 自身也可作为 MCP 服务器运行(server: claude/tengu)。

插件/技能系统

社区插件市场 + 技能宏 + 插件信任模型。插件可提供 skills、hooks、MCP server、LSP server、输出样式。

IDE 集成

实时 diff 在 IDE 中查看,文件选择同步。支持 VS Code 和 JetBrains 系列 IDE。

数据流:一次用户请求

PromptInput
命令分发
runQuery()
API 流式响应
工具执行
权限对话
循环/结束

权限模型

四级权限 + 六层配置优先级:

权限级别:

Automatic — 自动允许
Ask Once — 询问一次后记住
Ask Always — 每次都询问
Deny — 拒绝

配置优先级(高→低):

Managed(企业,只读)
MDM(macOS plist / Win 注册表)
Local project
Project(共享)
Session
Global

虚拟滚动与消息列表

消息列表使用 VirtualMessageList 虚拟化渲染,关键常量:

参数说明
MAX_RENDERED_LINES200消息渲染上限,超过后旧消息不生成 React 节点
空渲染附件预过滤在 200 上限前先剔除 null-rendering 附件类型
JumpHandletranscript 模式支持快速跳转到特定消息位置
LogoHeaderReact.memoblit 优化注释 — 必须先于消息渲染,确保正确滚动行为

ConcurrentRoot React 19

Claude Code 使用 React 19 的 ConcurrentRoot 模式创建 fiber root(通过 react-reconciler), 实现非阻塞渲染和优先级调度。关键集成点:

reconciler.createContainer(rootNode, ConcurrentRoot, ...) — 启用并发模式
prepareForCommit / resetAfterCommit — yoga 布局计时 + 帧调度
commitMount — autoFocus 组件自动获焦
hideInstance / unhideInstance — Suspense 降级时设置 LayoutDisplay.None
React Compiler 自动 memoization 贯穿所有组件

粘贴处理器

终端输入层包含智能粘贴检测:区分单字符键入和多字符粘贴事件。 启用 bracketed paste 模式(ESC[?2004h)时,粘贴内容被 ESC[200~ / ESC[201~ 包裹,避免误触发命令快捷键。 SSH 兼容模式下还检测 \r 结尾的合并输入。

深度分析

Rust 完整重写

源码中包含一套完整的 Rust 重写版本 — 不是 FFI 绑定,而是从零开始的独立实现。 使用 Tokio 异步运行时、ratatui 终端 UI,产出同名 claude 可执行文件。

9
Crate 数量
33
工具实现
33
斜杠命令
Tokio
异步运行时

Crate 架构

Crate职责关键特性
cc-core共享类型/配置14 种错误变体、AtomicU64 无锁成本追踪、Hooks 系统
cc-apiAPI 客户端SSE 流式传输、5 次重试指数退避(1s 基准、60s 上限)、Prompt 缓存
cc-tools33 个工具实现零大小结构体 + Tool trait、BashTool 120s 超时、FileEdit 唯一性校验
cc-query智能体循环90% 阈值自动压缩、保留最近 10 条消息、3 次连续失败熔断
cc-tui终端 UIratatui 即时渲染(替代 React/Ink)、三面板布局、盲文字符 Spinner
cc-commands斜杠命令33 个命令匹配 TS 版本、大小写不敏感查找
cc-mcpMCP 客户端JSON-RPC 2.0 over stdio、协议版本 2024-11-05、多服务器聚合
cc-bridgeBridge 协议轮询式桥接、设备指纹 SHA-256、指数退避(60s 上限)
cc-buddy伙伴系统18 物种、Mulberry32 PRNG、与 TS 版完全一致的确定性生成

与 TypeScript 版对照

维度TypeScriptRust
终端 UIInk(React reconciler)ratatui(即时模式)
异步运行时Node.js event loopTokio
打包Bun bundlerCargo(原生编译)
HTTP 客户端fetch APIreqwest + rustls-tls
Schema 验证Zodserde + 自定义 JSON Schema
成本追踪JS 对象AtomicU64(lock-free)
工具数量40+33(持续追赶)
命令数量87+33(持续追赶)

独特实现细节

隐藏标志 --dump-system-prompt — 不显示在帮助中,将完整系统提示词输出到 stdout
Guest Passesclaude passes 生成邀请链接赠送一周免费使用
Stickersclaude stickers 返回 "coming soon!",贴纸收集功能
WebSearchTool — Brave Search API 主力 + DuckDuckGo 降级备选
SendMessageTool — 支持 to = "*" 广播给所有接收者
CronTool — 完整 5 字段 cron 表达式,最多 50 个定时任务
深度分析

命令系统详解

87+ 个斜杠命令,采用统一 Command 接口、懒加载和模糊匹配。 注册优先级:bundledSkills > builtinPlugins > skillDir > workflows > plugins > COMMANDS()。

87+
命令总数
3
命令类型
25+
内部专用

三种命令类型

local — 同步执行,直接返回文本结果
local-jsx — 渲染 React/Ink 组件到终端
prompt — 扩展为文本发送给模型处理

所有命令实现使用动态 import() 懒加载,启动时只加载元数据(名称、描述、快捷键), 实际代码在首次调用时才加载。

内部专用命令 (ant-only)

以下命令仅对 USER_TYPE === 'ant'(Anthropic 员工)可见:

/backfill-sessions /break-cache /bughunter /commit /commit-push-pr /ctx_viz /good-claude /issue /init-verifiers /mock-limits /bridge-kick /version /ultraplan /subscribePr /resetLimits /onboarding /share /summary /teleport /ant-trace /perf-issue /env /oauth-refresh /debug-tool-call /agents-platform /autofix-pr

功能门控映射

功能标志门控命令
BRIDGE_MODE/remote-control
KAIROS / KAIROS_BRIEF/brief, /assistant
VOICE_MODE/voice
ULTRAPLAN/ultraplan
BUDDY/buddy
FORK_SUBAGENT/fork
UDS_INBOX/peers

常用公开命令

/add-dir /advisor /branch /compact /plan /mcp /plugin /review /rewind /sandbox /security-review /skills /checkpoint /ultrareview

自定义 Agent 创建向导 (11 步)

CreateAgentWizard.tsx 组装多步向导,由 WizardProvider 通用框架驱动。 产物以 YAML frontmatter + Markdown 文件存储在 .claude/agents/

步骤组件说明
0LocationStep选择存储位置:项目 (.claude/agents/) 或个人 (~/.claude/agents/)
1MethodStep选择创建方式:Claude 自动生成(推荐)或手动配置
2GenerateStepAI 生成模式 — 输入描述后调用 generateAgent(),成功后跳至步骤 6
3TypeStep手动输入 Agent 标识名,validateAgentType() 验证唯一性
4PromptStep系统提示词编辑(最少 20 字符,支持外部编辑器)
5DescriptionStep使用说明 (whenToUse),支持外部编辑器
6ToolsStepToolSelector — 按 5 桶分类多选工具
7ModelStepModelSelector — 选择 Agent 使用的模型
8ColorStepColorPicker — 选择 Agent 显示颜色
9MemoryStep条件步骤 — 仅当 isAutoMemoryEnabled() 时显示
10ConfirmStep最终确认并写入文件(writeAgentFile()

向导框架提供:step 导航历史栈、goNext() / goBack() / goToStep(n) 跳转、 Ctrl+C/D 退出绑定、步骤计数器显示。AI 生成模式下步骤 3-5 被跳过,直接从生成结果填充数据。

深度分析

工具框架详解

40+ 个内置工具,基于统一抽象基类 Tool.ts, 每个工具声明 Zod schema、权限需求、并发安全标志和 UI 渲染方法。

40+
工具数量
4
权限行为
6
任务类型
1 GiB
最大文件限制

权限决策模型

allow — 直接允许,无需用户确认
ask — 显示消息并请求用户确认
deny — 显示消息并拒绝执行
passthrough — 始终询问用户

核心工具列表

工具类型关键特性
BashTool执行2s 显示 spinner、2min 自动后台、bwrap/sandbox-exec 沙箱
FileReadTool读取支持文本/图片/Jupyter/PDF、/dev 路径防护
FileEditTool编辑读后写强制、mtime 陈旧检查、唯一字符串匹配
FileWriteTool写入读后写强制、最大 1 GiB
GlobTool搜索文件模式匹配,修改时间排序
GrepTool搜索ripgrep 内核,正则/多行/上下文支持
AgentTool智能体隔离子实例,阻止递归生成
WebFetchTool网络HTML→Markdown、15 分钟缓存
WebSearchTool网络Brave Search + DuckDuckGo 降级
CronTool调度5 字段 cron、最多 50 任务、7 天自动过期

任务框架

6 种任务类型,5 种状态。任务 ID 格式:前缀 + 8 位 crypto-random base-36 字符(约 2.8 万亿种组合)。

任务类型说明
local_bash本地 shell 命令
local_agent本地子智能体
remote_agent远程子智能体
in_process_teammate进程内协作者
local_workflow本地工作流
dream记忆整理任务

精简模式

设置 CLAUDE_CODE_SIMPLE 环境变量或使用 --bare 标志时, 工具集缩减为仅 Bash、FileRead、FileEdit 三项, 适用于受限环境或快速交互场景。

工具桶分类 (5 Buckets)

自定义 Agent 的 ToolSelector 将所有工具按安全级别分为 5 个桶, 支持按桶批量选择/取消、键盘导航(Tab 切换桶,Space 切换工具):

桶名称包含工具安全级别
READ_ONLYGlobTool / GrepTool / FileReadTool / WebFetchTool 等安全 — 不修改任何状态
EDITFileEditTool / FileWriteTool / NotebookEditTool中等 — 修改本地文件
EXECUTIONBashTool(内部构建含 TungstenTool)高危 — 可执行任意命令
MCP按 MCP 服务器动态分组(getMcpServerBuckets()动态 — 取决于 MCP 服务器
OTHER未匹配任何桶的工具未分类兜底

14+ 权限请求类型

PermissionRequest.tsx 顶层分发器根据工具类型渲染专用权限对话框:

权限请求组件适用工具
BashPermissionRequestBashTool — 含 sed 编辑模式检测、沙箱选项
FileEditPermissionRequestFileEditTool — 渲染 diff 视图
FileWritePermissionRequestFileWriteTool — 渲染完整文件内容
FilesystemPermissionRequest文件系统操作
NotebookEditPermissionRequestJupyter 笔记本 — 渲染 cell diff
WebFetchPermissionRequestWebFetchTool
McpToolPermissionRequestMCP 工具调用

Classifier 自动审批

TRANSCRIPT_CLASSIFIER 编译标志启用 ML 分类器自动判断 bash 命令安全性。 审批进行中时展示专用动画组件:

ClassifierCheckingSubtitle — 独立子组件,渲染 20fps shimmer 动画文字「正在尝试自动批准…」
使用独立子组件隔离以防止 shimmer 导致整个权限对话框重渲染
检查 classifierCheckInProgress prop 控制动画显示
通过后自动 allow,无需用户交互
深度分析

系统提示词架构

模块化、可缓存的系统提示词组装系统。以 SYSTEM_PROMPT_DYNAMIC_BOUNDARY 为界, 分为静态(跨组织缓存)和动态(每次请求变化)两部分。

缓存/动态分界

系统提示词通过 __SYSTEM_PROMPT_DYNAMIC_BOUNDARY__ 标记分为两部分:

静态部分(可缓存)
Cached

跨组织/用户共享,适用于 Anthropic 的提示缓存机制。包含:身份框架、沟通规则、软件工程指南、行动可逆性评估、工具偏好、语气风格、输出效率。

动态部分(每次变化)
Volatile

每个请求/用户/会话不同。包含:会话指引、记忆内容、环境信息、语言设置、输出风格、MCP 指令、工作目录。

6 种输出风格

风格说明
Default标准输出,简洁直接
Explanatory解释性输出,详细说明推理过程
Learning教学模式,帮助用户理解概念
Concise极简模式,最少输出
Formal正式语气
Casual轻松语气

6 种前缀变体

根据运行环境自动检测并注入不同前缀:

Cli — 标准终端 CLI 模式
Sdk — Agent SDK 模式
SdkPreset — SDK 预设模式
Vertex — Google Cloud Vertex AI(检测 ANTHROPIC_VERTEX_PROJECT_ID
Bedrock — AWS Bedrock(检测 AWS_BEDROCK_MODEL_ID
Remote — 远程会话(检测 CLAUDE_CODE_REMOTE

特殊注入

协调器模式 — 当 COORDINATOR_MODE 激活时,注入多智能体编排指令
自主模式 — KAIROS 下响应 <tick> 提示,使用 SleepTool 让出控制
网络安全指令 — 由 Anthropic Safeguards 团队具名成员维护的安全规则段
自定义提示词 — 用户可通过 --system-prompt--append-system-prompt 自定义

模型知识截止

Opus 4.6
2025 年 5 月
Sonnet 4.6
2025 年 8 月

Grapheme 宽度检测

终端渲染层(termio/)包含完整的 grapheme cluster 宽度检测, 正确处理 CJK 全宽字符、emoji(ZWJ 序列)、组合字符。 OutputcharCache 对每行文本缓存 ClusteredChar[] 数组, 避免重复解析 ANSI + grapheme。

双向文本(BiDi)支持通过 reorderBidi 在 Windows/xterm.js 环境下自动重排。 Tab 字符在写入时按屏幕 x 坐标展开为空格(而非测量时),确保渲染宽度与测量宽度一致。

60fps 渲染目标

全局常量 FRAME_INTERVAL_MS = 16 确定 60fps 帧目标。 渲染循环由 scheduleRender 以 16ms 节流(leading + trailing)调度, 配合 FPS 指标追踪(FpsMetricsProvider)实时监控帧率。 CLAUDE_CODE_DEBUG_REPAINTS 环境变量可启用帧级重绘调试, 通过 fiber owner chain 追踪定位导致闪烁的 React 组件。

有趣发现

内部代号大全

Anthropic 内部使用动物和城市名作为项目代号。 源码中发现的代号系统揭示了产品线路图和内部文化。

项目与功能代号

代号含义来源
TenguClaude Code 项目代号GrowthBook 前缀 tengu_*、MCP 服务器名 claude/tengu
PenguinFast Mode 快速模式API 端点用 penguin_mode、熔断器 tengu_penguins_off
ChicagoComputer Use 功能编译标志 CHICAGO_MCP、启动参数 --computer-use-mcp
FennecOpus 模型变体模型迁移历史中的内部标识
Capybara全新模型族(v2)代码中引用 fast 变体和 1M context 版本

未发布模型引用

Claude Capybara — 全新模型族,版本 2,含 fast 变体和 1M 上下文版本
Opus 4.7 — 下一代 Opus 模型
Sonnet 4.8 — 下一代 Sonnet 模型

这些引用出现在模型配置常量和能力检查代码中,暗示 Anthropic 的模型发布路线图。

GrowthBook 代号体系

所有运行时功能门控使用 tengu_ 前缀 + 不透明代号。 命名风格混合了芝加哥地名(malort、pedway)、矿物(onyx、amber、quartz)和鸟类(plover):

tengu_malort_pedway tengu_onyx_plover tengu_amber_quartz_disabled tengu_bridge_repl_v2 tengu_penguins_off tengu_kairos tengu_coordinator tengu_buddy tengu_ultraplan tengu_plugins

Undercover 模式

防止 Anthropic 员工(USER_TYPE === 'ant')在参与开源项目时意外暴露内部信息。 这个机制证实了以下事实:

Anthropic 员工使用 Claude Code 参与公开开源项目
内部模型代号为动物名(Capybara、Tengu、Fennec)
Tengu(天狗)是 Claude Code 的项目代号
自动清除 commit 和 PR 中的 AI 辅助痕迹

关键门控代号详解

代号类型详细作用
tengu_frond_boric Kill Switch Analytics Kill SwitchsinkKillswitch.ts 中的紧急开关, 启用后立即切断所有遥测数据发送。当检测到异常流量或安全事件时一键关闭全部 analytics sink。
tengu_anti_distill_fake_tool_injection 安全门控 反蒸馏机制 — 在 API 请求的工具列表中注入伪工具定义。 作为训练数据「水印」,检测第三方是否使用 Claude Code 输出进行模型蒸馏。 由 getExtraBodyParams() 在请求组装阶段注入。
tengu_scratch 功能标志 Scratchpad 目录 — 为 Coordinator 模式启用专用暂存目录上下文。
tengu_prompt_cache_1h_config 配置列表 1h Cache TTL 白名单 — 会话级锁定(latched),防止中途因配额变化翻转。 匹配时 cache control 从 ephemeral 升级为 ttl: 3600
核心基础设施

终端渲染引擎 Ink

深度定制的 Ink 终端 React 渲染器 — 一套完整的 8 步渲染管线, 以 60fps 驱动双缓冲差异更新,实现终端 UI 的像素级控制。

8
渲染管线阶段
16ms
帧间隔 (60fps)
2×Int32
Cell 编码
3
Interning Pool

8 步渲染管线

每帧渲染经过严格的 8 阶段管线,由 scheduleRender 以 16ms 节流(leading + trailing)调度, 通过 queueMicrotask 延迟执行:

React 树
Reconciler
Virtual DOM
Yoga 布局
Output 缓冲
Screen 像素
Diff 引擎
Terminal 写入

使用 ConcurrentRoot 模式的 React 19 reconciler, fiber 树通过自定义 host config 桥接到 ink 虚拟 DOM。 事件处理器存储在 _eventHandlers 而非 attributes, 防止 handler identity 变化导致 dirty 标记,破坏 blit 优化。

Cell 编码:2×Int32 位域

每个屏幕单元格压缩为两个 32 位整数(Int32Array),实现极致内存效率:

Word位域说明
Word 0高 22 位: charId字符池索引(ASCII 快速查表,非 ASCII 用 Map)
Word 0低 10 位: styleId样式池索引(bit 0 = VISIBLE_ON_SPACE 标志)
Word 1高 16 位: hyperlinkId超链接池索引(OSC 8 协议)
Word 12 位: widthSingle=0, Wide=1, SpacerTail=2, SpacerHead=3

3 个 Interning Pool

三个会话级对象池实现零分配 diff,所有 Screen 共享同一组池实例:

池名称键类型功能
CharPool字符 → int IDASCII 走 Int32Array 快速路径;非 ASCII 走 Map。索引 0=空格, 1=空单元
StylePoolAnsiCode[] → int ID预序列化 transition 缓存;withInverse() / withCurrentMatch() 组合样式
HyperlinkPoolURL → int IDOSC 8 超链接去重;ID 0 = 无链接

虚拟 DOM 节点类型

ink 实现了一套精简的终端 DOM,共 7 种元素类型 + 1 种文本节点:

节点名用途有 Yoga 节点
ink-root文档根节点,持有 FocusManager
ink-boxFlex 容器
ink-text叶子文本容器(yoga measure func)
ink-virtual-text内联文本,无布局
ink-linkOSC 8 超链接包装器
ink-progress终端进度指示器
ink-raw-ansi预渲染 ANSI(rawWidth/rawHeight)

所有变更操作(append / insert / remove / setAttribute)自动将受影响节点及其祖先标记为 dirtystylesEqualshallowEqual 防止 React 每帧创建的新 style 对象触发误标记。

Blit 差异优化

当节点边界框匹配 nodeCache 且未标记 dirty 时,渲染器直接从前帧 prevScreen 批量拷贝(Int32Array 直拷,无解码),使稳态帧达到 O(变更单元格数) 复杂度。

Blit 条件:!dirty && prevScreen && !hasRemovedChild && !layoutShiftedOutput 实例跨帧复用,其 charCache(按行文本 → ClusteredChar[] 映射)在稳态下 实现近零分配的 Spinner/时钟渲染。

硬件滚动 DECSTBM

ScrollBox 渲染采用三趟算法:1) 计算 scrollHeight,应用 pendingScrollDelta(比例排液), 处理 stickyScroll;2) Blit 路径 — 内容未变时直接从 prevScreen blit 并发出硬件 shiftRows 提示;3) 全量渲染 — clip + y-offset = -scrollTop 裁剪子节点。

排液参数精细调优:SCROLL_MIN_PER_FRAME = 4SCROLL_INSTANT_THRESHOLD = 5(≤5 行直接排完), SCROLL_STEP_MED = 2 / SCROLL_STEP_HIGH = 3。 用 DECSTBM CSI 序列将 O(视口) 写入压缩为 O(滚动区域)。

同步输出 (DEC 2026)

writeDiffToTerminal 将 Diff 序列化为 ANSI 序列写入 stdout。 支持 BSU/ESU 同步输出的终端用 DEC 2026 协议包裹,消除画面撕裂。 兼容性检测覆盖 8 种终端:

iTerm2 — 完整支持 BSU/ESU
WezTerm — 完整支持
Ghostty — 完整支持
Kitty — 完整支持
VS Code Terminal — 完整支持
Alacritty — 完整支持
foot — 完整支持
tmux — 解析但不实现 DEC 2026,已排除

完整 DOM 事件系统

ink 实现了浏览器级的事件传播模型:capture 阶段(从根到目标) → bubble 阶段(从目标到根)。支持的事件类型包括 click、scroll、 mouseMove、mouseDown、mouseUp 等。鼠标跟踪在 alt-screen 模式下自动激活。

文本选择系统支持 alt-screen 下的框选和行选,选中文本通过剪贴板决策树写入系统剪贴板 (优先 OSC 52 → 回退 pbcopy/xclip/xsel)。搜索高亮使用预扫描的 MatchPosition[],当前匹配以 yellow/bold/underline 渲染。

Patch 优化器

单趟 Patch 列表优化器 optimize(diff) 执行以下规则:

移除空 stdout patch
合并相邻 stdout patch 为单次写入
折叠连续 clear patch
去重 DECSTBM scroll 提示

结合 charCache 跨帧复用,稳态下仅 Spinner 等变化区域产生 patch, 实现终端文本渲染的接近零分配高性能更新。

关键源码文件

文件职责
ink.tsx核心编排器 — 持有 fiber root、yoga 树、双缓冲、渲染循环
dom.ts虚拟 DOM — 节点类型、dirty 标记、变更操作
reconciler.tsReact reconciler host config(ConcurrentRoot)
screen.tsCell-based Screen 缓冲区 — 2×Int32 编码、blit、diffEach
output.ts渲染操作收集器 — write/blit/clip/clear/shift
renderer.tsDOM → Frame 转换闭包
render-node-to-output.ts递归 DOM 遍历 + ScrollBox 三趟算法
log-update.ts帧间 Diff 引擎
optimizer.tsPatch 列表单趟优化
terminal.ts终端检测 + ANSI 序列化 + BSU/ESU 写入
termio/ANSI 解析器 — 状态机 tokenizer + grapheme 宽度检测