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
斜杠命令

未发布功能

源码中发现了 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
未发布功能

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 宽度检测