Build your own Claude Code from scratch. 🔍 Claude Code 开源了 50 万行代码,读不动?用 ~5000 行 TypeScript / Python 从零复现核心架构,11 章分步教程带你理解 coding agent 精髓
翻译准备中
开发工具GitHub @Windy3f3f3f3f自行安装运营者未确认
试用过了吗? 点一下就好,无需登录。
尚未收集仓库信息。
尚未检测到更新。GitHub 发布版本后会显示在这里。
制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗一步步,从零手写一个 Claude Code
📘 在线阅读教程 → | 📘 Read Tutorial (English) → | English
📖 想深入了解原理? 姊妹项目 How Claude Code Works — 12 篇专题,33 万字,从源码级别深度解析 Claude Code 架构
⚖️ 声明 / Disclaimer:这是一个从零手写 Claude Code 的学习项目,照着 Claude Code 的公开可观察行为和通用 Agent 写法来做,不保证和 Claude Code 真实内部实现一致。"Claude Code" 是 Anthropic 的商标,本项目和 Anthropic 没有关联。
Claude Code 有几十万行代码,读不动?
本项目用 约 5000 行代码(TypeScript 和 Python 两个版本分别写),从零手写 Claude Code 的核心:Agent Loop、13 个工具(含并行执行 + 流式早期启动)、4 层上下文压缩、语义记忆召回、技能系统、多 Agent、MCP 集成。参照的是 Claude Code 的公开可观察行为,每一步都对着它讲清差异在哪。
这不是 demo,是一份分步教程——13 章内容,跟着动手写几千行代码,从零理解一个 Coding Agent 的工作原理。而且每个代码章都能一条命令跑起来、不用 API key(见下方「每章代码都能跑」一节)。读完你就理解了 coding agent 的核心运作机制,无需啃那几十万行代码。
13 章内容,分两个阶段——先构建一个可用的 Coding Agent,再逐步添加进阶能力。每章都贴能跑的真实代码 + 与 Claude Code 的架构对照:
| 章节 | 内容 | 架构对照视角 |
|---|---|---|
| Phase 1: 构建一个可用的 Coding Agent | ||
| 1. Agent Loop | 核心循环:调用 LLM → 执行工具 → 重复 | agent.ts ↔ query.ts |
| 2. 工具系统 | 13 个工具 + mtime 防护 + 延迟加载 | tools.ts ↔ Tool.ts + 66 工具 |
| 3. System Prompt | 提示词工程 + @include 语法 | prompt.ts ↔ prompts.ts |
| 4. CLI 与会话 | REPL、Ctrl+C、会话持久化 | cli.ts ↔ cli.tsx |
| 5. 流式输出 | 双后端 + 流式工具执行 + 并行执行 | agent.ts ↔ api/claude.ts |
| 6. 权限与安全 | 5 模式 + 声明式规则 + 危险检测 | tools.ts ↔ permissions/ (52KB) |
| 7. 上下文管理 | 4 层压缩 + 大结果持久化 | agent.ts ↔ compact/ |
| Phase 2: 进阶能力 | ||
| 8. 记忆系统 | 4 类型记忆 + 语义召回 + 异步预取 | memory.ts ↔ memory.ts |
| 9. 技能系统 | 技能发现 + inline/fork 双模式 | skills.ts ↔ SkillTool/ |
| 10. Plan Mode |
读代码最怕读不懂又跑不起来,改一行也不知道对不对。所以每个代码章都配了一份能单独跑的最小实现:一条命令、不用 API key,就能看它真的转起来。
node steps/run.mjs --list # 列出所有能跑的章节
node steps/run.mjs 7 # 跑第 7 章:对话变长了,它把旧消息压成摘要
node steps/run.mjs 7 --diff # 只看这一章比上一章多写的那几行
node steps/run.mjs 7 --py # 换成 Python 版
看到的输出是真跑出来的(本地 mock 模型驱动,不联网),--diff 标出的正是这一章新增的代码。想拿自己的 prompt 连真模型试,加 --live 就行。每章的这段代码、文档里贴的代码块、跑出来的那段输出,全从同一份源码生成——不会出现"文档说的和代码对不上"。
TypeScript 版
git clone https://github.com/Windy3f3f3f3f/claude-code-from-scratch.git
cd claude-code-from-scratch
npm install && npm run build
Python 版(需要 Python 3.11+,详细说明)
cd python
pip install -e .
mini-claude-py # 命令行入口(避免与 TS 版 mini-claude 冲突)
python -m mini_claude # 或用 python -m 方式运行
支持两种后端,通过环境变量自动识别:(支持自定义base url)
方式一:Anthropic 格式(推荐)
export ANTHROPIC_API_KEY="sk-ant-xxx"
# 可选:使用代理
export ANTHROPIC_BASE_URL="https://aihubmix.com"
方式二:OpenAI 兼容格式
export OPENAI_API_KEY="sk-xxx"
export OPENAI_BASE_URL="https://api.openai.com/v1"
默认模型为 claude-opus-4-6,可通过环境变量或命令行参数自定义:
export MINI_CLAUDE_MODEL="claude-sonnet-4-6" # 环境变量方式
npm start -- --model gpt-4o # 命令行方式(优先级更高)
TypeScript 版
npm start # 交互式 REPL 模式(推荐)
npm start -- --resume # 恢复上次会话继续对话
npm start -- --yolo # 跳过安全确认(危险命令自动执行)
npm start -- --plan # Plan 模式:只分析不修改
npm start -- --accept-edits # 自动批准文件编辑
npm start -- --dont-ask # CI 模式:需确认的操作自动拒绝
npm start -- --max-cost 0.50 # 费用限制(美元)
npm start -- --max-turns 20 # 轮次限制
Python 版
mini-claude-py # 交互式 REPL 模式(推荐)
mini-claude-py --resume # 恢复上次会话继续对话
mini-claude-py --yolo # 跳过安全确认
mini-claude-py --plan # Plan 模式:只分析不修改
mini-claude-py --accept-edits # 自动批准文件编辑
mini-claude-py --dont-ask # CI 模式:需确认的操作自动拒绝
mini-claude-py --max-cost 0.50 # 费用限制(美元)
mini-claude-py --max-turns 20 # 轮次限制
全局安装后可在任意目录使用:
以上为 README 的开头部分。其余内容请阅读原文。 查看完整 README ↗
| 只读规划 + 4 选项审批工作流 |
agent.ts ↔ EnterPlanMode |
| 11. 多 Agent | Sub-Agent fork-return 多 Agent 架构 | subagent.ts ↔ AgentTool/ |
| 12. MCP 集成 | JSON-RPC over stdio 连接外部工具 | mcp.ts ↔ mcpClient.ts |
| 13. 架构对比 | 完整对比 + 扩展方向 | 全局 |
| 14. 功能测试 | 22 项手动测试覆盖全部功能 | test/ |