Skip to content

156181679-dev/Open-ClaudeCode

 
 

Repository files navigation

Open-ClaudeCode

完整开源的 Claude Code 项目 - 基于 Anthropic 官方源码重建

🌐 Languages: 中文 | English


🙏 特别感谢

本项目由衷感谢 Anthropic 公司的开源贡献!

Anthropic 通过 npm 包发布 Claude Code,使我们能够学习和研究这个优秀的 AI 编程助手架构。本项目的源码是从官方 npm 包的 source map 中恢复的,仅供学习和研究使用。

"您说的对,我不应该把map文件一并发布到npm中,这是一个非常严重的错误。"

我们理解 source map 文件本应用于开发调试,而非公开发布。Anthropic 对此问题的认识和处理方式值得我们学习。


📖 项目简介

Open-ClaudeCode 是一个完整的 Claude Code 开源版本,包含:

  • 可运行的 CLI - 编译后的完整可执行文件 (v2.1.88)
  • TypeScript 源码 - 1,902 个恢复的源文件供学习研究
  • 官方插件 - 13 个 Anthropic 官方插件
  • 配置示例 - 多种场景的 settings 配置
  • 完整文档 - 项目说明、使用指南、CHANGELOG

📁 目录结构

Open-ClaudeCode/
├── package/              # 可运行的 CLI
│   ├── cli.js            # 编译后的 CLI (12.5MB)
│   ├── cli.js.map        # Source Map (57MB)
│   ├── package.json      # 包配置
│   ├── bun.lock          # Bun 锁文件
│   ├── sdk-tools.d.ts    # SDK 类型定义 (117KB)
│   └── vendor/           # 原生二进制模块
│       ├── audio-capture/   # 音频捕获 (6 平台)
│       └── ripgrep/         # 代码搜索工具 (6 平台)
├── src/                  # 完整 TypeScript 源码 (1,902 文件)
│   ├── tools/            # 30+ 工具实现 (184 文件)
│   ├── commands/         # 50+ 命令实现 (207 文件)
│   ├── services/         # API、MCP、OAuth 服务 (130 文件)
│   ├── components/       # React UI 组件 (389 文件)
│   ├── ink/              # Ink UI 框架 (96 文件)
│   ├── utils/            # 工具函数 (564 文件)
│   ├── hooks/            # React Hooks (104 文件)
│   ├── bridge/           # 桥接模块 (31 文件)
│   ├── vendor/           # 原生模块源码 (4 文件)
│   └── ...               # 更多模块
├── plugins/              # 13 个官方插件
│   ├── agent-sdk-dev/
│   ├── claude-opus-4-5-migration/
│   ├── code-review/
│   ├── commit-commands/
│   ├── explanatory-output-style/
│   ├── feature-dev/
│   ├── frontend-design/
│   ├── hookify/
│   ├── learning-output-style/
│   ├── plugin-dev/
│   ├── pr-review-toolkit/
│   ├── ralph-wiggum/
│   └── security-guidance/
├── examples/             # 配置示例
│   └── settings/         # strict / lax / bash-sandbox
├── docs/                 # 文档
├── README.md             # 本文件
├── ACKNOWLEDGEMENTS.md   # 感谢声明
├── CHANGELOG.md          # 版本更新记录
├── LICENSE               # 许可证说明
├── .gitignore            # Git 忽略规则
└── .gitattributes        # Git 属性

🚀 快速开始

前置要求

  • Node.js 18+ (下载)
  • API 密钥(任选一种):
    • 🔵 Anthropic 官方 API — 在 console.anthropic.com 注册获取 API Key
    • 🟢 第三方代理 — 国内用户推荐,获取代理地址和 API Key

    ⚠️ OpenAI 格式代理(如 MiniMax、OpenRouter 等)请使用 Universal-AI-Protocol-Bridge 进行协议转换

    • 🔴 Claude 订阅账号 — 运行后通过 OAuth 登录(需科学上网)

第一步:克隆并运行

# 1. 克隆仓库
git clone https://github.com/LING71671/Open-ClaudeCode.git
cd Open-ClaudeCode

# 2. 验证环境
node --version          # 需要 >= 18.0.0
node package/cli.js --version  # 应显示 2.1.88

# 3. 启动!
node package/cli.js

第二步:认证

首次运行需要认证,选择以下任一方式

方式一:第三方代理(国内推荐 🇨🇳)

适合中国大陆用户,无需科学上网:

  1. 获取第三方代理的 API 地址和密钥
  2. 创建 settings.json
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://你的代理地址",
    "ANTHROPIC_AUTH_TOKEN": "sk-你的密钥"
  }
}
  1. 运行:node package/cli.js --settings settings.json

方式二:Anthropic 官方 API

  1. 访问 console.anthropic.com 注册账号
  2. 获取 API Key(格式 sk-ant-...
  3. 创建 settings.json
{
  "env": {
    "ANTHROPIC_AUTH_TOKEN": "sk-ant-你的密钥"
  }
}
  1. 运行:node package/cli.js --settings settings.json

方式三:Claude 订阅账号(OAuth)

需要 Claude 订阅 + 科学上网:

# 直接运行,会自动打开浏览器登录
node package/cli.js

🖥️ 运行截图

Open-ClaudeCode 运行截图


📖 使用教程

模式一:交互模式(推荐新手)

直接运行,像聊天一样对话:

node package/cli.js

进入后你会看到交互界面,可以直接输入问题或指令:

> 帮我创建一个 Python Flask 项目
> 解释一下这段代码
> 帮我修复这个 bug

常用操作:

  • 输入文字 → 按 Enter 发送
  • Ctrl+C → 中断当前操作
  • /help → 查看所有可用命令
  • /clear → 清空对话
  • /exit → 退出

模式二:非交互模式(脚本/管道)

适合自动化、脚本调用:

# 简单问答
node package/cli.js -p "解释一下什么是闭包"

# 处理文件
node package/cli.js -p "帮我重构 src/main.ts 中的 getUser 函数"

# 指定模型
node package/cli.js -p "写一个排序算法" --model sonnet

# JSON 输出(适合程序处理)
node package/cli.js -p "列出当前目录的文件" --output-format json

模式三:继续上次对话

# 继续当前目录的最近对话
node package/cli.js -c

# 恢复指定会话
node package/cli.js -r <session-id>

⚙️ 常用配置

🔑 配置自己的 API(第三方代理 / 自定义端点)

如果你使用第三方 API 代理服务或有自定义端点,可以这样配置:

方式一:通过 Settings 文件(推荐,持久化)

  1. 创建配置文件:
// settings.json
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://你的代理地址",
    "ANTHROPIC_AUTH_TOKEN": "sk-你的API密钥"
  }
}
  1. 运行时加载配置:
node package/cli.js --settings settings.json

方式二:通过环境变量(临时)

# PowerShell
$env:ANTHROPIC_BASE_URL = "https://你的代理地址"
$env:ANTHROPIC_AUTH_TOKEN = "sk-你的API密钥"
node package/cli.js
# CMD
set ANTHROPIC_BASE_URL=https://你的代理地址
set ANTHROPIC_AUTH_TOKEN=sk-你的API密钥
node package/cli.js

方式三:通过全局配置目录

Claude Code 会自动读取 ~/.claude/settings.json

// C:\Users\你的用户名\.claude\settings.json  (Windows)
// ~/.claude/settings.json  (macOS/Linux)
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://你的代理地址",
    "ANTHROPIC_AUTH_TOKEN": "sk-你的API密钥"
  }
}

配置后每次运行 node package/cli.js 都会自动使用这些设置。

支持的模型别名

# 常用模型
node package/cli.js --model sonnet     # Claude Sonnet(默认)
node package/cli.js --model opus       # Claude Opus(最强)
node package/cli.js --model haiku      # Claude Haiku(最快)

# 指定完整模型名
node package/cli.js --model claude-sonnet-4-6
node package/cli.js --model claude-opus-4-6

⚠️ 注意事项

  • 第三方代理可能不支持所有模型,请以代理方提供的模型列表为准
  • ANTHROPIC_AUTH_TOKENANTHROPIC_API_KEY 任选其一即可
  • 如果同时设置了环境变量和 settings 文件,环境变量优先级更高
  • 不要在公开仓库分享包含 API Key 的配置文件

选择模型

# Sonnet(默认,速度快,性价比高)
node package/cli.js --model sonnet

# Opus(最强,但较慢较贵)
node package/cli.js --model opus

# Haiku(最快最便宜)
node package/cli.js --model haiku

权限模式

# 默认模式(每次操作需要确认)
node package/cli.js

# 自动接受编辑(不用每次确认文件修改)
node package/cli.js --permission-mode acceptEdits

# 跳过所有权限检查(⚠️ 仅限沙箱环境)
node package/cli.js --dangerously-skip-permissions

使用插件

# 从指定目录加载插件
node package/cli.js --plugin-dir ./plugins/code-review

# 加载多个插件
node package/cli.js --plugin-dir ./plugins/code-review --plugin-dir ./plugins/commit-commands

🎯 实战示例

示例 1:让 Claude 帮你写代码

# 进入你的项目目录
cd your-project

# 启动 Claude
node /path/to/Open-ClaudeCode/package/cli.js

# 然后输入:
> 帮我创建一个用户登录 API,使用 Express.js
> 给这个函数添加单元测试
> 修复 src/auth.ts 中的类型错误

示例 2:代码审查

# 使用 code-review 插件
node package/cli.js --plugin-dir ./plugins/code-review

# 或者直接让 Claude 审查
> 帮我审查最近的 git diff
> 检查这个 PR 有没有潜在问题

示例 3:Git 工作流

# 使用 commit-commands 插件
node package/cli.js --plugin-dir ./plugins/commit-commands

# 或者直接用内置命令
> /commit    # 智能生成 commit message

📋 内置命令速查

在交互模式下输入 / 开头的命令:

命令 功能
/help 显示帮助
/clear 清空对话
/compact 压缩对话历史
/model 切换模型
/theme 切换主题
/vim 切换 Vim 模式
/cost 查看费用统计
/stats 查看使用统计
/share 分享会话
/exit 退出

❓ 常见问题

Q: 提示需要认证怎么办?

A: 首次运行需要登录。运行后会自动打开浏览器,用你的 Claude 账号登录即可。或者设置 ANTHROPIC_API_KEY 环境变量。

Q: 运行后卡住了?

A: 检查网络连接。如果在中国大陆,可能需要代理:

$env:HTTPS_PROXY="http://127.0.0.1:7890"
node package/cli.js

Q: 如何查看花了多少钱?

A: 在交互模式下输入 /cost/stats 查看。

Q: 如何配置第三方代理或自定义 API?

A: 创建 settings.json 文件,内容如下:

{
  "env": {
    "ANTHROPIC_BASE_URL": "https://你的代理地址",
    "ANTHROPIC_AUTH_TOKEN": "sk-你的密钥"
  }
}

然后运行 node package/cli.js --settings settings.json。也可以放到 ~/.claude/settings.json 实现全局配置。

Q: 可以在任何目录运行吗?

A: 可以!但建议在你的项目目录下运行,这样 Claude 可以访问项目文件。

Q: 和 npm 安装的区别?

A: 这个仓库提供的是从 npm 包恢复的完整源码,适合学习研究。功能上和 npm 安装的版本一致。

Q: 支持 OpenAI 格式的 API 吗?

A: Claude Code 原生使用 Anthropic API 格式。如果你需要使用 OpenAI SDK 格式调用,可以使用 Universal-AI-Protocol-Bridge 进行协议转换:

功能特性:

  • 🔄 协议转换 - 将 OpenAI SDK 格式转换为 Anthropic/Claude API 格式
  • 🌐 多协议支持 - OpenAI、Anthropic、Google Gemini、AWS Bedrock、Azure、Ollama 等
  • 流式传输优化 - 完整支持 SSE/NDJSON 流式响应
  • 🔐 安全加密 - AES-GCM 加密保护 API Key
  • ☁️ Cloudflare Workers - 边缘部署,全球低延迟

使用方法:

  1. 访问 在线测试地址 或自行部署
  2. 选择目标协议(如 Anthropic)并填入 API Key
  3. 生成代理 URL,将你的 OpenAI SDK baseURL 指向该地址即可
// 示例:使用 OpenAI SDK 调用 Claude
import OpenAI from 'openai';

const client = new OpenAI({
  baseURL: 'https://your-bridge-url/proxy/{token}/v1',
  apiKey: 'any-key'  // 实际 Key 已加密在 token 中
});

// 现在可以用 OpenAI 格式调用 Claude 了!
const response = await client.chat.completions.create({
  model: 'claude-3-5-sonnet-latest',
  messages: [{ role: 'user', content: 'Hello!' }]
});

📚 学习源码

源码位于 src/ 目录,包含 1,902 个源文件:

# 查看入口点
cat src/main.tsx

# 查看工具实现
ls src/tools/

# 查看命令实现
ls src/commands/

使用插件

插件位于 plugins/ 目录,包含 13 个官方插件:

# 查看插件列表
ls plugins/

# 查看插件详情
cat plugins/ralph-wiggum/.claude-plugin/plugin.json

📊 项目统计

类别 数量
TypeScript 源码 (.ts + .tsx) 1,884 文件
JavaScript 源码 (.js) 18 文件
所有源码文件总计 1,902 文件
工具实现 30+ 个
命令实现 50+ 个
服务模块 15+ 个
UI 组件 25+ 个
官方插件 13 个
原生模块 2 个 (audio-capture, ripgrep)
支持平台 6 个 (macOS/Linux/Windows × arm64/x64)

📜 许可证

本项目源码版权归 Anthropic PBC 所有。

本仓库仅供学习和研究使用,不代表 Anthropic 官方立场。

详见 LICENSEACKNOWLEDGEMENTS.md


🔗 相关链接


最后更新: 2026-04-01

About

ClaudeCode related repository

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • TypeScript 99.7%
  • Other 0.3%