技术栈:TypeScript + Node.js/Bun + React Ink + OpenAI/Anthropic API
教程定位:从 Claude Code 51 万行源码中提炼核心架构,用 5000 行代码实现 80% 的核心能力
✅ 你应该读这本教程,如果你是:
- 已经在使用 Claude Code/Cursor,想要理解其底层实现
- 技术创业者,想要构建自己的 AI 编码工具
- 企业技术团队,需要定制内部开发工具
- 对工业级 Agent 架构感兴趣的开发者
- 希望学习 Anthropic 的工程实践
❌ 这本教程可能不适合你,如果你:
- 只想要开箱即用的工具(直接用 Claude Code 即可)
- 没有 TypeScript 基础
- 只想要简单的代码补全功能
Claude Code 是目前最先进的 Agent CLI 实现:
- 51 万行生产级代码,经过数百万次真实使用验证
- Anthropic 投入数百人团队持续优化
- 包含大量未公开的前沿技术(记忆系统、子代理编排、安全沙箱)
学习价值:
- 架构设计:如何设计一个可扩展的 Agent 系统
- 工程实践:如何处理边界情况、错误恢复、性能优化
- 产品思维:如何平衡自主性与可控性
- 商业洞察:了解 AI 工具的未来方向
教程分为 6 个主要部分,共 26 章:
第 0 部分:准备(序章)
第 1 部分:核心架构(5 章)← 理解 Claude Code 的设计哲学
第 2 部分:工具系统(8 章)← 实现 30+ 工具,含生产力工具与子代理
第 3 部分:高级特性(5 章)← 记忆、权限、沙箱
第 4 部分:工程化(4 章)← 测试、监控、部署
第 5 部分:扩展生态(3 章)← Skills、插件、子代理编排
第 6 部分:实战案例(1 章)← 完整项目
详细学习路径见文末。
必需工具:
- Node.js 20+ 或 Bun 1.0+
- TypeScript 5.0+
- OpenAI/Anthropic API Key
推荐工具:
- VS Code + TypeScript 插件
- Git
- Docker(用于沙箱)
代码仓库:
- 配套代码:
github.com/your-repo/agent-cli-tutorial - 每章对应一个 Git 分支
- 完整可运行的示例
1.1 从 51 万行代码看整体架构
- 项目结构:1900+ 文件的组织方式
- 核心模块:REPL、QueryEngine、工具系统、权限系统
- 数据流:从用户输入到工具执行的完整路径
- 代码分割:450 个 chunk 的打包策略
1.2 技术栈选择的深层原因
- 为什么选择 React + Ink?(终端 UI 的最佳实践)
- 为什么是单进程事件循环?(vs 多进程架构)
- 为什么用 Bun?(vs Node.js)
- 34 行状态管理的设计哲学
1.3 与其他 Agent 工具的架构对比
- Claude Code vs Cursor:Terminal-native vs IDE-integrated
- Claude Code vs Aider:Agentic loop vs Git patch
- Claude Code vs ChatGPT:本地执行 vs 云端沙箱
- 架构选择的权衡(Trade-offs)
2.1 cli.tsx:302 行的入口艺术
- 动态 import 策略(零模块加载的 --version)
- 性能分析埋点(profileCheckpoint)
- 反调试检查(生产环境保护)
- Polyfill 注入(兼容性处理)
2.2 命令行参数解析
- Commander.js 的使用
- 子命令架构(claude、mcp、auth、plugin 等)
- 参数验证与错误处理
2.3 初始化流程
- 认证系统(OAuth + API Key)
- 遥测与分析(GrowthBook 集成)
- 策略限制(policyLimits)
- 配置加载(6 层优先级)
2.4 实战:实现一个最小化的 CLI 入口
- 约 100 行代码
- 支持基础命令行参数
- 完整的错误处理
3.1 React Ink 终端渲染原理
- Ink 的工作机制
- 虚拟 DOM 到终端输出
- 性能优化(避免重渲染)
3.2 主屏幕组件架构
- 消息列表渲染
- 流式输出处理
- 工具调用可视化
- 状态栏设计
3.3 交互模式设计
- 对话模式(持续会话)
- 管道模式(-p 参数)
- 非交互模式(脚本调用)
3.4 实战:构建一个简单的 REPL
- 使用 Ink 渲染终端 UI
- 实现消息历史显示
- 支持流式输出
- 约 300 行代码
4.1 Agentic Loop 的五步流水线
用户输入 → 上下文构建 → LLM 推理 → 工具调用 → 结果处理
↑ ↓
└──────────────── 循环直到任务完成 ──────────────┘
4.2 流式对话与工具调用
- Server-Sent Events (SSE) 处理
- 工具调用的解析与执行
- 并行工具调用(Parallel Tool Use)
- 错误恢复与重试
4.3 上下文管理
- 消息历史维护
- Token 计数与限制
- 自动压缩(auto-compact)
- 上下文窗口优化
4.4 会话状态管理
- QueryEngine 的状态机
- 会话归因(attribution)
- 会话恢复(/resume)
4.5 实战:实现核心对话循环
- 约 500 行代码
- 支持流式对话
- 支持工具调用
- 完整的错误处理
5.1 五步预处理流水线
1. Git 状态检测
2. CLAUDE.md 加载
3. 记忆召回
4. 文件上下文
5. 环境信息
5.2 Git 集成
- 自动检测 Git 仓库
- 读取 git status、git diff
- 分支信息、提交历史
- .gitignore 处理
5.3 CLAUDE.md:项目级上下文
- 文件格式规范
- 自动生成策略
- 更新时机
5.4 智能文件选择
- 相关性排序
- Token 预算分配
- 增量更新
5.5 实战:实现上下文构建系统
- Git 信息提取
- 文件相关性计算
- 上下文组装
- 约 400 行代码
6.1 工具的定义与注册
- Tool Schema 设计(JSON Schema)
- 工具接口(ITool)
- 工具注册机制(getTools())
- 工具分类(核心工具 vs 条件工具 vs Feature Flag 工具)
6.2 工具执行流程
- 工具调用解析
- 参数验证
- 权限检查(pre-hook)
- 执行与结果捕获
- 后处理(post-hook)
6.3 工具设计的最佳实践
- 单一职责原则
- 幂等性设计
- 错误处理
- 超时控制
6.4 实战:实现工具系统框架
- 工具注册器
- 工具执行器
- Hook 系统
- 约 200 行代码
7.1 FileReadTool:智能文件读取
- 支持的文件类型(文本、PDF、图片、Notebook)
- 大文件处理(分块读取)
- 编码检测
- 二进制文件处理
7.2 FileWriteTool:安全文件写入
- 文件创建 vs 覆写
- 备份机制
- Diff 生成
- 权限检查
7.3 FileEditTool:精确文件编辑
- Search-Replace 模式
- Diff-based 编辑
- 冲突检测
- 撤销机制
7.4 NotebookEditTool:Jupyter Notebook 编辑
- Notebook 格式解析
- 单元格级别编辑
- 输出保留
7.5 实战:实现文件操作工具集
- 完整的文件读写编辑
- 支持多种文件格式
- 约 600 行代码
8.1 BashTool:Shell 命令执行
- 命令执行(child_process)
- 输出捕获(stdout/stderr)
- 流式输出
- 超时控制
- 交互式命令处理
8.2 PowerShellTool:Windows 支持
- PowerShell 执行
- 跨平台兼容性
8.3 GlobTool:文件模式匹配
- Glob 语法支持
- 性能优化(大型代码库)
- .gitignore 集成
8.4 GrepTool:代码搜索
- 正则表达式搜索
- 多文件搜索
- 上下文行数控制
- 性能优化(ripgrep 集成)
8.5 LSPTool:语言服务器协议集成
- LSP 协议基础
- 代码诊断、跳转与补全
- 与编辑器工具链集成
8.6 实战:实现 Shell、搜索与语言服务工具
- 安全的命令执行
- 高性能代码搜索
- LSP 客户端接入
- 约 500 行代码
9.1 WebFetchTool:网页抓取
- URL 抓取(HTTP 请求)
- HTML → Markdown 转换
- AI 摘要生成
- 超时与重试
9.2 WebBrowserTool:浏览器自动化
- 与 WebFetchTool 的区别(完整浏览器 vs 简单 HTTP)
- 页面渲染与 JavaScript 执行
- 截图与元素交互
- Chrome CDP 集成
9.3 WebSearchTool:网页搜索
- 搜索引擎集成
- 域名过滤
- 结果排序
9.4 AskUserQuestionTool:用户交互
- 多问题提示
- 选项预览
- 输入验证
9.5 SendMessageTool:消息发送
- 跨 Agent 通信(Mailbox 机制)
- 异步消息传递
9.6 实战:实现网络与交互工具
- 网页抓取与浏览器自动化
- 用户交互界面
- 约 400 行代码
10.1 TodoWriteTool:结构化任务管理
- 任务列表的创建与更新
- 状态追踪(pending / in_progress / completed)
- 与 Agentic Loop 的配合模式
- 为什么任务管理是 Agent 的核心能力
10.2 Plan Mode:先规划后执行
- EnterPlanModeTool / ExitPlanModeTool 的设计
- 规划阶段与执行阶段的权限隔离
- Plan Mode 与 Manual/Auto 模式的关系
- 如何在工具中实现"只读规划"约束
10.3 Git Worktree 支持
- EnterWorktreeTool / ExitWorktreeTool
- 为什么用 Worktree 而不是分支切换
- 多任务并行隔离的实现
- 与沙箱系统的配合
10.4 WorkflowTool 与 ScheduleCronTool:自动化编排
- 工作流定义(DAG 结构)
- 定时任务调度
- 触发器与条件分支
10.5 实战:实现生产力工具集
- TodoWriteTool 实现
- Plan Mode 状态机
- 约 400 行代码
本章聚焦单个子代理的实现机制;多代理编排模式见第 24 章。
11.1 AgentTool:子代理派生
- Fork 模式(继承上下文)
- Async 模式(后台运行)
- Background 模式(长期任务)
- Remote 模式(远程执行)
11.2 子代理的生命周期
- 创建与初始化
- 上下文传递
- 结果回传
- 清理与回收
11.3 内置 Agent
- Explore Agent(快速代码库探索)
- Plan Agent(架构设计与规划)
- Verification Agent(验证与测试)
11.4 实战:实现子代理系统
- 子代理派生
- 上下文隔离
- 结果聚合
- 约 500 行代码
12.1 MCP(Model Context Protocol)概述
- 协议规范
- 为什么需要 MCP?
- MCP vs 传统工具
12.2 MCP Server 开发
- Server 实现
- 工具注册
- 资源管理
12.3 内置 MCP Servers
- GitHub MCP Server
- 文件系统 MCP Server
- Chrome MCP Server
12.4 MCP 客户端实现
- Server 发现与连接
- 工具调用代理(MCPTool / ListMcpResourcesTool / ReadMcpResourceTool)
- MCP 认证(McpAuthTool)
- 错误处理
12.5 实战:实现 MCP 客户端
- 连接 MCP Server
- 动态工具加载
- 约 400 行代码
13.1 工具性能优化
- 缓存策略
- 并行执行
- 懒加载
13.2 工具监控
- 执行时间追踪
- 成功率统计
- 错误日志
13.3 工具调试
- Debug 模式
- 工具调用日志
- 参数验证
13.4 实战:实现工具监控系统
- 性能追踪
- 日志记录
- 约 200 行代码
14.1 记忆系统架构
第一层:热数据(当前会话)
第二层:话题文件(项目级记忆)
第三层:长期记忆(跨会话知识)
14.2 自动记忆提取
- 提取时机(stopHooks)
- 提取策略(5 重门禁)
- 记忆子代理(extractMemories)
- 记忆巩固(autoDream)
14.3 记忆召回
- 相关性排序(findRelevantMemories)
- 话题文件选择(最多 5 个)
- Token 预算管理
14.4 CLAUDE.md 管理
- 自动生成
- 手动编辑
- 版本控制
14.5 实战:实现记忆系统
- 三层记忆架构
- 自动提取与召回
- 约 600 行代码
15.1 权限模式
- Manual 模式(每次询问)
- Plan 模式(先规划后执行,与第 10 章 Plan Mode 的关联)
- Auto 模式(YOLO 分类器)
15.2 YOLO 分类器
- 安全操作自动批准
- 危险操作拦截
- 分类规则
15.3 路径验证
- 文件路径白名单
- 敏感目录保护
- 符号链接检查
15.4 规则匹配
- 命令黑名单
- 参数校验
- 正则表达式匹配
15.5 权限审计
- 操作日志
- 拒绝原因
- 用户反馈
15.6 实战:实现权限系统
- 三种权限模式
- YOLO 分类器
- 约 800 行代码
16.1 沙箱架构
第一层:OS 原生沙箱(bubblewrap/Seatbelt)
第二层:权限系统
第三层:资源限制
第四层:审计日志
16.2 OS 原生沙箱实现
- Linux:bubblewrap
- macOS:Seatbelt(sandbox-exec)
- Windows:Windows Sandbox API
16.3 Git Worktree 与文件系统隔离
- Worktree 作为轻量级隔离单元(与第 10 章的配合)
- 只读目录与读写目录划分
- 禁止访问的敏感路径
16.4 网络隔离
- 域名白名单
- 端口限制
- 代理配置
16.5 资源限制
- CPU 限制
- 内存限制
- 磁盘限制
- 超时控制
16.6 实战:实现安全沙箱
- OS 原生沙箱
- Worktree 隔离集成
- 资源限制
- 约 700 行代码
17.1 压缩策略
- Auto-compact(自动触发)
- Micro-compact(增量压缩)
- API compact(云端压缩)
17.2 压缩算法
- 消息合并
- 摘要生成
- 重要信息保留
17.3 压缩时机
- Token 阈值(95%)
- 消息数量
- 用户触发(/compact)
17.4 实战:实现自动压缩
- 压缩算法
- 触发机制
- 约 300 行代码
18.1 Hook 类型
- Pre-hook(工具调用前)
- Post-hook(工具调用后)
- Stop-hook(对话结束后)
18.2 Hook 配置
- settings.json 配置
- 动态加载
- 优先级管理
18.3 内置 Hooks
- 记忆提取(extractMemories)
- 权限检查
- 性能追踪
18.4 自定义 Hooks
- Hook 接口
- 注册机制
- 错误处理
18.5 实战:实现 Hook 系统
- Hook 框架
- 内置 Hooks
- 约 200 行代码
19.1 单元测试
- 工具函数测试
- Mock LLM 响应
- 测试覆盖率
19.2 集成测试
- 完整对话流程
- 工具调用链
- 错误场景
19.3 端到端测试
- 真实 API 调用
- 文件系统操作
- 性能基准
19.4 实战:构建测试套件
- Jest/Vitest 配置
- 测试用例编写
- CI/CD 集成
20.1 日志系统
- 结构化日志
- 日志级别
- 日志轮转
20.2 性能监控
- API 延迟
- 工具执行时间
- Token 消耗
20.3 错误追踪
- Sentry 集成
- 错误聚合
- 告警机制
20.4 用户分析
- GrowthBook 集成
- A/B 测试
- Feature Flag
20.5 实战:实现监控系统
- 日志与追踪
- 性能指标
- 约 300 行代码
21.1 配置层级
1. 默认配置
2. 全局配置(~/.config/agent-cli/)
3. 项目配置(.agent-cli/)
4. 环境变量
5. 命令行参数
6. 运行时覆盖
21.2 配置格式
- JSON Schema 验证
- 配置迁移
- 向后兼容
21.3 敏感信息管理
- API Key 加密
- 密钥轮转
- 环境变量
21.4 实战:实现配置系统
- 多层配置
- 验证与迁移
- 约 200 行代码
22.1 构建策略
- Code splitting(450 个 chunk)
- Tree shaking
- 压缩优化
22.2 多平台支持
- macOS(Intel + Apple Silicon)
- Linux(x64 + ARM)
- Windows
22.3 分发渠道
- npm 包
- Homebrew
- Standalone 可执行文件
22.4 自动更新
- 版本检测
- 增量更新
- 回滚机制
22.5 实战:构建与发布
- Bun 打包配置
- CI/CD 流程
- 多平台构建
23.1 Skills 系统概述
- Skills vs 工具(能力封装 vs 单次调用)
src/skills/目录结构- DiscoverSkillsTool 与 SkillTool 的工作机制
- Skills 的加载与热更新(loadSkillsDir)
23.2 插件架构
- 插件接口
- 插件生命周期
- 插件隔离
23.3 插件开发
- 插件模板
- 工具注册
- 配置管理
- MCP Skills(mcpSkills / mcpSkillBuilders)
23.4 插件管理
- 安装与卸载(/plugin install)
- 版本管理
- 依赖解析
23.5 实战:实现插件与 Skills 系统
- Skills 加载器
- 插件管理命令
- 约 400 行代码
本章聚焦多代理协同的编排模式;单个子代理实现见第 11 章。
24.1 编排模式
- 顺序执行
- 并行执行
- 条件分支
- 循环迭代
24.2 Agent Swarms(团队协作)
- Team 创建(TeamCreateTool / TeamDeleteTool)
- 角色分配
- 任务分发
- 结果聚合
24.3 后台任务系统
- 任务创建(TaskCreateTool)
- 任务监控(TaskGetTool / TaskListTool / TaskOutputTool)
- 任务控制(TaskUpdateTool / TaskStopTool)
24.4 Coordinator 模式
src/coordinator/coordinatorMode.ts- Worker Agent 的角色(workerAgent.ts)
- 多 Agent 上下文隔离
24.5 实战:实现子代理编排
- 编排引擎
- 团队协作
- 约 500 行代码
25.1 API 抽象层
- 统一接口
- Provider 适配器
- 自动切换
25.2 支持的 Providers
- Anthropic Direct(API Key + OAuth)
- AWS Bedrock(凭据刷新)
- Google Vertex(GCP 凭据)
- Azure Foundry(API Key + Azure AD)
25.3 成本优化
- 模型选择策略
- 智能路由
- 缓存机制
25.4 实战:实现多云支持
- Provider 适配器
- 智能路由
- 约 400 行代码
26.1 项目规划
- 功能清单
- 技术选型
- 架构设计
26.2 核心实现
- REPL 界面(300 行)
- 对话引擎(500 行)
- 工具系统(1000 行)
- 权限系统(800 行)
- 沙箱系统(700 行)
- 记忆系统(600 行)
- 其他(1100 行)
总计:约 5000 行核心代码
26.3 测试与优化
- 单元测试
- 性能优化
- 用户体验
26.4 部署与运维
- 打包发布
- 监控告警
- 用户反馈
26.5 持续迭代
- Feature Flag 管理
- A/B 测试
- 版本规划
A.1 核心文件清单
src/entrypoints/cli.tsx(入口,302 行)src/main.tsx(主流程)src/screens/REPL.tsx(终端 UI 主屏幕)src/query.ts(核心对话循环)src/QueryEngine.ts(会话引擎)src/context.ts(上下文构建)src/hooks/toolPermission/(权限系统)src/tools/(30+ 工具实现)src/services/mcp/(MCP 客户端,12000+ 行)src/memdir/(记忆目录系统)src/skills/(Skills 系统)src/coordinator/(多 Agent 协调器)
A.2 关键设计模式
- 事件驱动架构
- 插件化设计
- Hook 模式
- Provider 模式
A.3 性能优化技巧
- 动态 import
- Code splitting
- 缓存策略
- 并行执行
- 30+ 工具的完整 Schema
- 参数说明
- 使用示例
- 通用 Agent Prompt
- Explore Agent
- Plan Agent
- Verification Agent
- 记忆提取 Agent
- Coordinator Agent
- settings.json 完整配置
CLAUDE.md模板- .gitignore 规则
- 启动失败
- API 调用错误
- 工具执行失败
- 权限问题
- 性能问题
- Agent、Tool、Hook、MCP 等核心概念
- Feature Flag、YOLO、Compact、Worktree 等术语
- Skills、Coordinator、Swarm 等多代理术语
- Claude Code 官方文档
- Anthropic 研究论文
- 开源项目
- 社区讨论
- 第 0 部分:了解定位
- 第 1 章:架构全景
- 第 2-4 章:启动流程、REPL、对话引擎
- 动手:运行 Claude Code 源码
- 第 1-2 部分:核心架构 + 工具系统
- 动手:实现 5-10 个核心工具
- 动手:构建基础对话循环
- 第 1-4 部分:完整学习
- 动手:实现完整的 Agent CLI
- 动手:添加测试与监控
- 全部内容 + Claude Code 源码研读
- 动手:实现所有高级特性
- 动手:贡献开源项目
这不是一本"玩具教程",而是一本"工业级实战指南":
- 真实架构:基于 Claude Code 51 万行源码提炼
- 生产就绪:5000 行代码实现 80% 核心能力
- 深度解析:不只是"怎么做",更重要的是"为什么这样做"
- 可复用:每个模块都可以独立使用
- 持续更新:跟随 Claude Code 的演进持续更新
学完这本教程,你将能够:
- 理解工业级 Agent 的设计哲学
- 构建自己的 Agent CLI 工具
- 为企业定制内部开发工具
- 参与开源 Agent 项目
- 在 AI 工具领域创业
技术要点:TypeScript + Node.js/Bun + React Ink + OpenAI/Anthropic API;基于 Claude Code 真实架构;5000 行核心代码;30+ 生产级工具。