乐于分享
好东西不私藏

cluade code 源码逆向工程解读分析

cluade code 源码逆向工程解读分析

github项目概述

Claude Code Best (CCB) 是一个对 Anthropic 官方 Claude Code CLI 工具进行反编译/逆向还原的开源项目。该项目旨在复现 Claude Code 的大部分功能及工程化能力,但技术实现相当完整。

Claude Code 架构图

技术定位

Claude Code 被定义为一个 Terminal-native Agentic Coding System(终端原生智能编码系统),具有三个关键特性:

  1. 1. Terminal-native: 原生 CLI 应用,不是 IDE 插件、Web 界面或 API wrapper
  2. 2. Agentic: 具备 AI 自主决策工具调用链,不是简单的”一问一答”聊天模式
  3. 3. Coding system: 面向软件工程全流程,不是通用问答工具

核心架构

Claude Code 采用五层架构设计:

┌─────────────────────────────────────────────────────────┐
│ 1. 入口层 (cli.tsx → main.tsx)                          │
│    feature() = false, MACRO 注入, 启动 Commander.js CLI  │
├─────────────────────────────────────────────────────────┤
│ 2. 交互层 (REPL.tsx — React/Ink)                        │
│    PromptInput 捕获用户输入 → UserMessage 加入会话       │
├─────────────────────────────────────────────────────────┤
│ 3. 编排层 (QueryEngine.ts)                               │
│    管理 turn 生命周期、token 预算、compaction 触发       │
├─────────────────────────────────────────────────────────┤
│ 4. 核心循环 (query.ts — Agentic Loop)                    │
│    组装上下文 → 调 API → 收流式响应 → 解析工具调用      │
│    → 权限检查 → 执行工具 → 结果回传 → 再次调 API → 循环 │
├─────────────────────────────────────────────────────────┤
│ 5. 工具执行 (BashTool.call / FileEditTool.call / ...)    │
│    实际执行: 读文件、运行命令、搜索代码...               │
├─────────────────────────────────────────────────────────┤
│ 6. 通信层 (claude.ts → Anthropic API)                    │
│    流式 HTTP, 支持 Bedrock/Vertex/Azure 多 provider      │
└─────────────────────────────────────────────────────────┘

功能实现状态

核心系统(已完全实现)

  • • REPL 交互界面(Ink 终端渲染)
  • • 多平台 API 通信(Anthropic Direct、AWS Bedrock、Google Vertex、Azure Foundry)
  • • 流式对话与工具调用循环
  • • 会话引擎(QueryEngine.ts)
  • • 上下文构建(git status / CLAUDE.md / memory)
  • • 权限系统(plan/auto/manual 模式)
  • • Hook 系统(pre/post tool use)
  • • 会话恢复 (/resume)
  • • Doctor 诊断 (/doctor)
  • • 自动压缩 (compaction)

工具系统

始终可用的工具(✅)

  • • 文件操作: FileReadTool、FileEditTool、FileWriteTool、NotebookEditTool
  • • 命令执行: BashTool(带沙箱和权限检查)
  • • 网络工具: WebFetchTool、WebSearchTool
  • • 代理工具: AgentTool(支持子代理派生)
  • • 交互工具: AskUserQuestionTool、SendMessageTool
  • • 任务管理: TodoWriteTool、TaskOutputTool、TaskStopTool

条件启用的工具(⚠️)

  • • GlobTool、GrepTool(默认启用)
  • • TaskCreate/Get/Update/ListTool(需开启 Todo V2)
  • • Enter/ExitWorktreeTool(需开启 Worktree 模式)
  • • TeamCreate/DeleteTool(需开启 Agent Swarms)
  • • PowerShellTool(仅 Windows)
  • • LSPTool(需设置环境变量)

关闭的功能(❌)

项目通过 polyfill 使所有 Feature Flags 返回 false,因此以下功能被关闭:

  • • SleepTool、Cron 工具(AGENT_TRIGGERS 相关)
  • • WebBrowserTool、MonitorTool
  • • Voice 相关功能(VOICE_MODE)
  • • 远程控制功能(BRIDGE_MODE、DAEMON)
  • • Anthropic 内部专用功能(ANT-ONLY)

安全机制

Claude Code 实现了多层次的安全保障:

  1. 1. 权限模型: Allow/Ask/Deny 三级权限体系
  2. 2. 沙箱机制: 权限之外的第二道防线
  3. 3. 计划模式: Plan Mode “先看后做”的安全机制
  4. 4. Hook 系统: 执行前后的拦截协议

项目结构

claude-code/
├── src/
│   ├── entrypoints/
│   │   ├── cli.tsx          # 入口文件(含 MACRO/feature polyfill)
│   │   └── sdk/             # SDK 子模块 stub
│   ├── main.tsx             # 主 CLI 逻辑(Commander 定义)
│   └── types/
│       ├── global.d.ts      # 全局变量/宏声明
│       └── internal-modules.d.ts  # 内部 npm 包类型声明
├── packages/                # Monorepo workspace 包
│   ├── color-diff-napi/     # 完整实现(终端 color diff)
│   ├── modifiers-napi/      # stub(macOS 修饰键检测)
│   └── @ant/               # Anthropic 内部包 stub
├── scripts/                 # 自动化 stub 生成脚本
├── dist/                    # 构建输出
└── package.json             # Bun workspaces monorepo 配置

快速开始

环境要求

  • • Bun >= 1.3.11(必须最新版本)
  • • Node.js >= 18(部分依赖需要)
  • • 有效的 Anthropic API Key(或 Bedrock / Vertex 凭据)

安装与运行

# 安装依赖
bun install

# 开发模式(看到版本号 888 说明正确)

bun run dev

# 直接运行

bun run src/entrypoints/cli.tsx

# 管道模式

echo
 "say hello" | bun run src/entrypoints/cli.tsx -p

# 构建

bun run build

版本路线图

  • • V1: 完成跑通及基本的类型检查通过
  • • V2: 完整实现工程化配套设施
  • • V3: 实现多层级解耦(UI 包、Agent 包等可独立优化)
  • • V4: 完成大量测试文件,提高稳定性

总结

Claude Code Best 项目成功逆向还原了 Anthropic 官方 Claude Code CLI 工具的核心功能,实现了完整的终端原生智能编码系统。它不仅能够理解代码、修改文件、执行命令,还具备完善的安全机制和权限控制系统。虽然部分高级功能(如语音、远程控制、Web 浏览器等)因 Feature Flags 被关闭而不可用,但已实现的功能足以支持日常开发工作流。

该项目展示了 AI 编程助手如何在终端环境中实现真正的自主代理(Agentic)能力,而非简单的问答交互,为开发者提供了一个强大的本地化 AI 编码工具。