返回首页

Claude Code Sources:CLI 架构

Claude Code 源码泄露揭秘:基于 React/Ink 的多模式运行时,带有 Agent Orchestration、Dynamic Imports 和严格 Bash Security。分析聚焦于终端 AI 架构。

泄露中的 Claude Code 内部:React 和 Agents
Advertisement 728x90

Claude代码剖析:泄露源码揭示的深层架构

2026年3月31日,Claude Code的源代码通过npm包中的sourcemap泄露。这不是一个干净的git检出,而是客户端代码的恢复快照,包含转换和缺失文件,如assistant/index.tsdaemon/main.jsscreens/REPL.tsx已用React Compiler编译,main.tsx保留了启动优化的痕迹:profileCheckpoint、密钥链预取、并行MDM读取。

代码反映了从简单CLI到终端操作系统的演变。导入是动态的,用于懒加载;--version无需依赖即可运行。但复杂性在增长:守护进程、远程控制、tmux、MCP服务器。

CLI作为多模式运行时的门面

entrypoints/cli.tsx是路由中心:--version、系统提示、守护进程、环境运行器、自托管运行器、ps/日志/附加/终止。动态导入最小化评估:workers are lean。快速路径不拉取重模块,减少内存和崩溃风险。

Google AdInline article slot

优点:启动优化。缺点:了解所有模式使CLI感觉像机场。懒加载拯救了局面,但结构令人望而生畏。

// 来自cli.tsx的示例
if (fastPath) {
  // 零导入超出此文件
  console.log(version);
  process.exit(0);
}

main.tsx:系统的重心

main.tsx是汇聚点:初始化、模式选择、工具池、功能标志、KAIROS/主动模式、结构化输出、会话恢复。优点:所有分支逻辑集中一处。缺点:妥协,如主动模式在getTools()之前用于SleepTool.isEnabled()

演变可见:从CLI到带有标志和检查的系统。规模催生此类构造。

Google AdInline article slot
  • 初始化和模式选择
  • 系统提示和工具池
  • 功能标志和远程会话
  • UI启动和会话

终端中的React:Ink与前端结合

Claude Code是Ink上的React应用。screens/REPL.tsx管理通知、模态框、IDE集成、MCP、插件、队友模式、浮动UI、Buddy。

同步状态、过滤工具、混合插件。不是聊天,而是终端中的前端,带有浏览器式习惯。

编排代理作为基础设施

不是单一代理,而是控制中心。AgentTool支持:

Google AdInline article slot
  • 同步/异步启动
  • 后台和工作树隔离
  • 远程和队友模式
  • 自己的工具池和权限模式
  • 缓存身份用于提示/工具

异步代理带有进度、通知。工作树作为路由的一部分。成熟的代理能力超越Promise.all

探索代理受限:只读,无写入/删除/重定向/heredoc,专注于并行grep/读取。自主与约束的平衡。

工具执行:并发与容错

工具分组:只读并行,风险工具串行。流式执行器具有:

  • 错误时取消兄弟任务
  • user_interrupted vs sibling_error vs streaming_fallback
  • 缓冲以保持顺序
  • 中断处理

产品在挂起和冲突中存活。

不自毁的Bash:安全偏执

bashPermissionsbashSecurity阻止:

  • 命令/进程替换
  • 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

Advertisement 728x90

继续阅读