0. 为什么 Claude Code 值得你读源码?
Claude Code 是 Anthropic 推出的终端级 AI 编程助手,能理解整个代码仓库、执行命令、修改文件、运行测试,并且完全开源(虽然官方尚未完整开源,但社区已通过逆向与复现形成大量参考实现,本文基于公开技术报告与典型开源复现版 claude-code-analyzer 分析)。
与传统 Copilot 不同,Claude Code 具备:
全项目感知:自动构建依赖图、调用链
工具循环:可以 ls, grep, edit, run 等
安全约束:需要用户批准危险操作
本文将带你从零理解其核心源码逻辑,并给出一个最小可复现的 Demo。
1. 整体架构:从终端输入到代码变更
text
用户输入 → 会话管理 → 上下文构建 → 模型调用 → 工具解析 → 执行循环 → 输出结果
↑ │
└──────── 历史消息 + 工具结果 ──────┘
核心模块:
Session:维护对话历史、仓库根路径、工具白名单
Context Builder:收集文件结构、最近编辑、相关符号、linter 错误
Tool Executor:解析模型返回的 tool_call,执行本地操作
Safety Guard:危险命令需用户确认
2. 源码结构(以典型 Python 复现版为例)
text
claude_code/
├── main.py # CLI 入口
├── session.py # 对话状态管理
├── context/
│ ├── repo_map.py # 生成项目树形结构
│ ├── grep_search.py # 基于 ripgrep 的符号检索
│ └── relevance.py # 按修改时间/调用关系排序
├── tools/
│ ├── base.py # 工具基类
│ ├── file_ops.py # read, write, edit
│ ├── shell.py # 执行 shell 命令
│ └── approve.py # 安全审批
└── llm/
├── claude_client.py # Anthropic API 封装
└── tool_formatter.py # 将工具