Claude代码剖析:泄露源码揭示的深层架构
2026年3月31日,Claude Code的源代码通过npm包中的sourcemap泄露。这不是一个干净的git检出,而是客户端代码的恢复快照,包含转换和缺失文件,如assistant/index.ts或daemon/main.js。screens/REPL.tsx已用React Compiler编译,main.tsx保留了启动优化的痕迹:profileCheckpoint、密钥链预取、并行MDM读取。
代码反映了从简单CLI到终端操作系统的演变。导入是动态的,用于懒加载;--version无需依赖即可运行。但复杂性在增长:守护进程、远程控制、tmux、MCP服务器。
CLI作为多模式运行时的门面
entrypoints/cli.tsx是路由中心:--version、系统提示、守护进程、环境运行器、自托管运行器、ps/日志/附加/终止。动态导入最小化评估:workers are lean。快速路径不拉取重模块,减少内存和崩溃风险。
优点:启动优化。缺点:了解所有模式使CLI感觉像机场。懒加载拯救了局面,但结构令人望而生畏。
// 来自cli.tsx的示例
if (fastPath) {
// 零导入超出此文件
console.log(version);
process.exit(0);
}
main.tsx:系统的重心
main.tsx是汇聚点:初始化、模式选择、工具池、功能标志、KAIROS/主动模式、结构化输出、会话恢复。优点:所有分支逻辑集中一处。缺点:妥协,如主动模式在getTools()之前用于SleepTool.isEnabled()。
演变可见:从CLI到带有标志和检查的系统。规模催生此类构造。
- 初始化和模式选择
- 系统提示和工具池
- 功能标志和远程会话
- UI启动和会话
终端中的React:Ink与前端结合
Claude Code是Ink上的React应用。screens/REPL.tsx管理通知、模态框、IDE集成、MCP、插件、队友模式、浮动UI、Buddy。
同步状态、过滤工具、混合插件。不是聊天,而是终端中的前端,带有浏览器式习惯。
编排代理作为基础设施
不是单一代理,而是控制中心。AgentTool支持:
- 同步/异步启动
- 后台和工作树隔离
- 远程和队友模式
- 自己的工具池和权限模式
- 缓存身份用于提示/工具
异步代理带有进度、通知。工作树作为路由的一部分。成熟的代理能力超越Promise.all。
探索代理受限:只读,无写入/删除/重定向/heredoc,专注于并行grep/读取。自主与约束的平衡。
工具执行:并发与容错
工具分组:只读并行,风险工具串行。流式执行器具有:
- 错误时取消兄弟任务
user_interruptedvssibling_errorvsstreaming_fallback- 缓冲以保持顺序
- 中断处理
产品在挂起和冲突中存活。
不自毁的Bash:安全偏执
bashPermissions和bashSecurity阻止:
- 命令/进程替换
- Heredoc/zsh等于
zmodload/ztcp/zpty- 混淆标志
env/sudo/nice/timeout- 空格/转义
成熟的层,防御LLM的真实shell攻击。
人性化触感:Buddy与动画
buddy/ — ASCII精灵、对话气泡、动画。终端伴侣为CLI增添活力。
关键要点:
- 动态导入用于快速模式启动
main.tsx作为编排中心,带有规模妥协- 代理基础设施,具有隔离和生命周期
- 并行/串行工具调用,带错误处理
- Bash安全防御shell攻击
- React/Ink用于终端UI,带Buddy
— Editorial Team
暂无评论。