Claude Code 从零复刻教程 - 完整大纲

本教程面向有 JavaScript 基础的开发者,通过 12 篇系列文章,从零构建一个类似 Claude Code 的 AI 编程助手 CLI 工具。


目录


教程简介

什么是 Claude Code?

Claude Code 是 Anthropic 官方推出的命令行工具,可以让开发者通过终端与 Claude AI 进行自然语言交互,辅助完成编程任务。它具有以下核心能力:

能力说明
CLI 交互在终端中通过自然语言与 AI 对话
工具调用AI 可以读写文件、执行命令、搜索代码
多智能体多个 AI Agent 协同工作
长期记忆跨会话记住项目上下文

教程目标

完成本系列教程后,你将:

  • 理解 AI CLI 工具的核心架构
  • 掌握 TypeScript + Node.js 构建 CLI 的最佳实践
  • 实现一个功能完整的 AI 编程助手
  • 为参与开源或开发自己的 AI 工具奠定基础

受众要求

要求说明
JavaScript 基础熟悉 ES6+ 语法
命令行基础会使用终端
TypeScript教程中会讲解,但有 JS 基础可快速上手
API Key需要准备 Anthropic API Key(免费注册)

技术栈

类别技术版本说明
语言TypeScript5.x类型安全、易于调试
运行时Node.js20+ESM + TS 原生支持
包管理npm10+生态成熟
AI 能力Anthropic SDK最新Claude API 封装
CLI 框架Commander.js12.x参数解析
输出美化picocolors1.x彩色终端输出
存储文件系统-轻量无需 DB
测试Vitest2.x快速轻量

系列大纲


阶段一:CLI 核心框架

第 1 篇:项目初始化与 CLI 骨架

核心内容:

  • 项目目录结构设计
  • TypeScript 配置(tsconfig.json)
  • Commander.js 入门
  • 入口文件架构
  • 打印彩色输出

交付物: 最小可运行的 CLI 工具 my-claude

# 完成后可运行
my-claude --help
# 输出帮助信息

文件结构:

my-claude/
├── src/
│   ├── main.ts          # 入口
│   └── index.ts         # 导出
├── package.json
├── tsconfig.json
└── README.md

第 2 篇:REPL 循环实现

核心内容:

  • 标准输入输出(readline 模块)
  • 消息队列设计
  • 用户输入处理
  • 退出机制
  • 彩色提示符

交付物: 可交互的命令行界面

my-claude
# 显示彩色提示符
# 等待用户输入
# 循环处理...
# 输入 /exit 退出

关键代码模式:

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
  prompt: chalk.blue('claude> ')
});

rl.prompt();
rl.on('line', async (input) => {
  await processInput(input.trim());
  rl.prompt();
});

第 3 篇:参数解析与配置管理

核心内容:

  • 命令行参数解析(–api-key, --model 等)
  • 环境变量配置
  • settings.json 配置文件
  • API Key 安全管理
  • 配置优先级

交付物: 完整的配置系统

my-claude --api-key sk-ant-xxx --model claude-sonnet
# 或通过环境变量
ANTHROPIC_API_KEY=sk-ant-xxx my-claude
# 或通过配置文件

配置文件结构:

// ~/.my-claude/settings.json
{
  "apiKey": "sk-ant-xxx",
  "model": "claude-sonnet-4-20250514",
  "maxTokens": 8192
}

阶段二:对话系统

第 4 篇:Anthropic API 集成

核心内容:

  • Anthropic SDK 安装与配置
  • API 调用流程
  • 消息格式
  • 流式响应
  • 错误处理
  • 重试机制

交付物: 能对话的 CLI

my-claude
# claud> 解释什么是闭包
# [AI 回复...]

核心代码:

import Anthropic from '@anthropic-ai/sdk';

const client = new Anthropic({ apiKey });

const message = await client.messages.create({
  model: 'claude-sonnet-4-20250514',
  max_tokens: 1024,
  messages: [{ role: 'user', content: 'Hello!' }]
});

第 5 篇:七层 System Prompt 架构

核心内容:

  • 七层设计理念
  • 身份定义层
  • 系统约束层
  • 任务规范层
  • 安全准则层
  • 工具使用层
  • 沟通规范层
  • 静态/动态分层优化

交付物: 模块化的 Prompt 系统

Prompt 结构图:

┌─────────────────────────────────────────┐
│  Layer 7: 动态上下文(记忆/MCP/语言)       │ ← 每次请求重建
├─────────────────────────────────────────┤
│  Layer 6: 沟通规范                       │
├─────────────────────────────────────────┤
│  Layer 5: 工具使用指导                   │
├─────────────────────────────────────────┤
│  Layer 4: 安全准则                       │
├─────────────────────────────────────────┤
│  Layer 3: 任务规范                       │
├─────────────────────────────────────────┤
│  Layer 2: 系统约束                       │
├─────────────────────────────────────────┤
│  Layer 1: 身份定义                       │ ← 全局缓存
└─────────────────────────────────────────┘

第 6 篇:对话上下文管理

核心内容:

  • 消息历史管理
  • Token 计数
  • 上下文窗口限制
  • 消息截断策略
  • 对话状态持久化
  • 上下文压缩

交付物: 完整对话体验

interface ConversationContext {
  messages: Message[];
  totalTokens: number;
  maxTokens: number;
}

function manageContext(ctx: ConversationContext, newMsg: Message): void {
  ctx.messages.push(newMsg);
  ctx.totalTokens += countTokens(newMsg);
  while (ctx.totalTokens > ctx.maxTokens) {
    ctx.messages.shift();
    ctx.totalTokens = recalculate(ctx.messages);
  }
}

阶段三:工具系统

第 7 篇:工具注册与调用机制

核心内容:

  • 工具接口定义
  • 注册表模式
  • 动态工具注册
  • Tool Use 规范
  • 工具参数验证
  • 调用结果处理

交付物: 工具执行框架

工具接口:

interface Tool {
  name: string;
  description: string;
  input_schema: JSONSchema;
  execute: (params: unknown) => Promise<ToolResult>;
}

class ToolRegistry {
  private tools: Map<string, Tool>;
  register(tool: Tool): void;
  get(name: string): Tool | undefined;
  list(): Tool[];
}

第 8 篇:基础工具实现

核心内容:

  • ReadFileTool:读取文件内容
  • WriteFileTool:写入文件
  • GlobTool:模式匹配文件
  • BashTool:执行 shell 命令
  • 工具权限控制
  • 执行超时处理

交付物: 实际可用的文件操作工具

四个核心工具:

工具命令说明
ReadRead: filePath读取文件
WriteWrite: filePath, content写入文件
GlobGlob: pattern搜索文件
BashBash: command执行命令

阶段四:Agent Teams

第 9 篇:多智能体协作框架

核心内容:

  • Agent 概念与生命周期
  • TeamCreateTool 实现
  • SendMessageTool 实现
  • 任务分发机制
  • 进程内 vs 进程外 Agent
  • 状态同步

交付物: 多 Agent 基础设施

架构图:

         用户
           │
           ▼
      ┌─────────┐
      │ TeamLead │ ← 主 Agent
      └────┬────┘
           │ 分配任务
     ┌─────┼─────┐
     ▼     ▼     ▼
  ┌─────┐ ┌─────┐ ┌─────┐
  │ Ag1 │ │ Ag2 │ │ Ag3 │ ← 队友 Agent
  └─────┘ └─────┘ └─────┘

第 10 篇:内置 Agent 实现

核心内容:

  • ExploreAgent:代码探索专家
  • PlanAgent:架构规划专家
  • VerificationAgent:质量验证专家
  • Agent 提示词设计
  • Agent 间通信
  • 结果汇总

交付物: 专业化的 Agent 角色

Agent 类型:

Agent角色特点
Explore搜索专家只读、并行、高效
Plan规划专家结构化输出、深度分析
Verification验证专家对抗测试、质量把控

阶段五:记忆系统

第 11 篇:长期记忆存储

核心内容:

  • 四种记忆类型(user/feedback/project/reference)
  • 记忆文件格式(YAML frontmatter)
  • 存储路径设计
  • 记忆索引(MEMORY.md)
  • 记忆提取机制
  • 安全存储

交付物: 记忆持久化系统

记忆类型:

类型作用域内容
user私有用户偏好、角色、职责
feedback私有/团队反馈规则、已知问题
project私有/团队项目约定、决策历史
reference团队共享文档、API 参考

存储结构:

~/.my-claude/
└── projects/
    └── <项目路径>/
        └── memory/
            ├── MEMORY.md      # 索引入口
            ├── user_role.md
            ├── feedback.md
            ├── project_arch.md
            └── reference_api.md

第 12 篇:Auto Dream 自动整合

核心内容:

  • Fork Agent 模式
  • 后台记忆整合
  • 整合触发条件
  • 四阶段整合流程(Orient/Gather/Consolidate/Prune)
  • 定时任务调度
  • 整合锁机制

交付物: 智能记忆管理

整合流程:

1. Orient:    了解当前记忆状态
2. Gather:    收集新会话数据
3. Consolidate: 合并新旧记忆
4. Prune:     清理过期内容

学习路径

推荐顺序

第1周:CLI 基础
├── 第 1 篇:项目初始化
├── 第 2 篇:REPL 循环
└── 第 3 篇:配置管理

第2周:对话核心
├── 第 4 篇:API 集成
├── 第 5 篇:Prompt 架构
└── 第 6 篇:上下文管理

第3周:工具系统
├── 第 7 篇:工具框架
└── 第 8 篇:基础工具

第4周:高级功能
├── 第 9 篇:Agent Teams
└── 第10篇:内置 Agent

第5周:记忆系统
├── 第11篇:记忆存储
└── 第12篇:自动整合

快速路径

如果你只想快速体验核心功能:

  1. 第 1 篇:项目初始化
  2. 第 4 篇:API 集成
  3. 第 7 篇:工具框架
  4. 第 8 篇:基础工具

完成这 4 篇后,你就拥有了一个最小可用的 AI 编程助手


附录

A. Claude Code 源码参考

本教程部分设计参考 Claude Code 源码:

模块源码位置教程对应
CLI 入口src/main.tsx第 1-3 篇
对话系统src/src/buddy/第 4-6 篇
工具系统src/src/tools/第 7-8 篇
Agent Teamssrc/src/tasks/第 9-10 篇
记忆系统src/src/memdir/第 11-12 篇

B. 术语表

术语解释
REPLRead-Eval-Print Loop,交互式解释器
Tool UseAI 调用外部工具的能力
System Prompt系统提示词,定义 AI 行为
Token文本处理单位,API 计费依据
Fork Agent从当前会话分离的独立 Agent

C. 相关资源

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐