# claude-code **Repository Path**: work25/claude-code ## Basic Information - **Project Name**: claude-code - **Description**: 基于 Claude Code 泄露源码使用OpenCode(使用的模型mimo v2 pro)修复的本地可运行版本, 支持接入任意 Anthropic 兼容 API(如 MiniMax、OpenRouter 等)。 - **Primary Language**: TypeScript - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 4 - **Created**: 2026-04-01 - **Last Updated**: 2026-04-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Claude Code 基于 Claude Code 泄露源码使用OpenCode(使用的模型mimo v2 pro)修复的**本地可运行版本**, 支持接入任意 Anthropic 兼容 API(如 MiniMax、OpenRouter 等)。 > 原始泄露源码无法直接运行。本仓库修复了启动链路中的多个阻塞问题,使完整的 Ink TUI 交互界面可以在本地工作。

运行截图 编译截图

## 功能特性 - 🖥️ 完整的 Ink TUI 交互界面(与官方 Claude Code 一致) - 🤖 `--print` 无头模式(脚本/CI 场景) - 🔌 支持 MCP 服务器、插件、Skills - 🔧 支持自定义 API 端点和模型 - 🛡️ 降级 Recovery CLI 模式 - 🌐 支持多 Agent 协作 - 📝 101 个斜杠命令 - 🔨 45 个内置工具 --- ## 架构概览

整体架构

请求生命周期

工具系统

多 Agent 架构

终端 UI

权限与安全

服务层

状态与数据流
### 整体架构 ```mermaid graph TB subgraph "入口层 (Entry Points)" BIN["bin/claude-code
Shell 入口脚本"] CLI["src/entrypoints/cli.tsx
CLI 主入口"] MAIN["src/main.tsx
主逻辑 (Commander.js)"] RECOVERY["src/localRecoveryCli.ts
降级 Recovery CLI"] end subgraph "UI 层 (Terminal UI)" REPL["src/screens/REPL.tsx
交互式 REPL"] COMPONENTS["src/components/
144+ UI 组件"] INK["src/ink/
Ink 终端渲染引擎"] STATE["src/state/AppState.tsx
全局状态管理"] end subgraph "工具系统 (Tool System)" TOOL_BASE["src/Tool.ts
工具基类"] TOOLS["src/tools/
45 个工具"] TOOL_REG["src/tools.ts
工具注册"] end subgraph "命令系统 (Command System)" COMMANDS["src/commands/
101 个斜杠命令"] CMD_REG["src/commands.ts
命令注册"] end subgraph "服务层 (Services)" API["src/services/api/
API 客户端"] MCP["src/services/mcp/
MCP 协议"] OAUTH["src/services/oauth/
OAuth 认证"] PLUGINS["src/services/plugins/
插件系统"] ANALYTICS["src/services/analytics/
遥测分析"] end subgraph "技能系统 (Skills)" SKILLS["src/skills/
Skill 系统"] BUNDLED["src/skills/bundled/
内置 Skills"] end subgraph "外部依赖" ANTHROPIC["Anthropic SDK"] BUN["Bun 运行时"] REACT["React + Ink"] COMMANDER["Commander.js"] end BIN --> CLI CLI --> MAIN MAIN --> REPL MAIN --> RECOVERY REPL --> COMPONENTS COMPONENTS --> INK COMPONENTS --> STATE MAIN --> TOOL_REG TOOL_REG --> TOOLS TOOLS --> TOOL_BASE MAIN --> CMD_REG CMD_REG --> COMMANDS MAIN --> API MAIN --> MCP MAIN --> OAUTH MAIN --> PLUGINS TOOLS --> API TOOLS --> MCP COMMANDS --> API API --> ANTHROPIC MAIN --> BUN INK --> REACT MAIN --> COMMANDER MAIN --> SKILLS SKILLS --> BUNDLED ``` ### 请求生命周期 ```mermaid sequenceDiagram participant User participant CLI participant Main participant REPL participant ToolSystem participant API participant Anthropic User->>CLI: 输入命令/提示 CLI->>Main: 解析参数 Main->>REPL: 启动交互界面 REPL->>API: 发送请求 API->>Anthropic: API 调用 Anthropic-->>API: 流式响应 API-->>REPL: 流式响应 alt 需要工具调用 REPL->>ToolSystem: 执行工具 ToolSystem-->>REPL: 工具结果 REPL->>API: 继续对话 end REPL-->>User: 显示结果 ``` ### 工具系统 ```mermaid graph LR subgraph "核心工具" BASH["BashTool
Shell 命令"] EDIT["FileEditTool
文件编辑"] READ["FileReadTool
文件读取"] WRITE["FileWriteTool
文件写入"] GLOB["GlobTool
文件匹配"] GREP["GrepTool
内容搜索"] end subgraph "高级工具" AGENT["AgentTool
多 Agent"] TASK["Task 工具组
任务管理"] WEB["Web 工具组
搜索/抓取"] MCP["MCPTool
MCP 服务器"] end BASE["Tool.ts
工具基类"] --> BASH BASE --> EDIT BASE --> READ BASE --> WRITE BASE --> GLOB BASE --> GREP BASE --> AGENT BASE --> TASK BASE --> WEB BASE --> MCP ``` ### 状态管理 ```mermaid graph TB STORE["AppStateStore.ts
状态定义"] --> PROVIDER["AppStateProvider
状态注入"] PROVIDER --> CONTEXT["AppStoreContext
React Context"] CONTEXT --> HOOKS["useAppState
Hook 消费"] CONTEXT --> SELECTORS["selectors.ts
状态选择器"] ONCHANGE["onChangeAppState
变更监听"] --> PROVIDER ACTIONS["状态 Actions"] --> STORE ``` --- ## 快速开始 ### 1. 安装依赖 需要 [Bun](https://bun.sh) >= 1.1 和 Node.js >= 18。 ```bash # 如果没有安装bun,使用npm install -g bun安装 bun install ``` ### 2. 配置环境变量 复制示例文件并填入你的 API Key: ```bash cp .env.example .env ``` 编辑 `.env`: ```env # API 认证(二选一) ANTHROPIC_API_KEY=sk-xxx # 标准 API Key(x-api-key 头) ANTHROPIC_AUTH_TOKEN=sk-xxx # Bearer Token(Authorization 头) # API 端点(可选,默认 Anthropic 官方) ANTHROPIC_BASE_URL=https://api.minimaxi.com/anthropic # 模型配置 ANTHROPIC_MODEL=MiniMax-M2.7-highspeed ANTHROPIC_DEFAULT_SONNET_MODEL=MiniMax-M2.7-highspeed ANTHROPIC_DEFAULT_HAIKU_MODEL=MiniMax-M2.7-highspeed ANTHROPIC_DEFAULT_OPUS_MODEL=MiniMax-M2.7-highspeed # 超时(毫秒) API_TIMEOUT_MS=3000000 # 禁用遥测和非必要网络请求 DISABLE_TELEMETRY=1 CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ``` ### 3. 启动 ```bash # Windows claude-code.bat # 交互 TUI 模式(完整界面) ./bin/claude-code # 无头模式(单次问答) ./bin/claude-code -p "your prompt here" # 管道输入 echo "explain this code" | ./bin/claude-code -p # 查看所有选项 ./bin/claude-code --help ``` --- ## 环境变量说明 | 变量 | 必填 | 说明 | |------|------|------| | `ANTHROPIC_API_KEY` | 二选一 | API Key,通过 `x-api-key` 头发送 | | `ANTHROPIC_AUTH_TOKEN` | 二选一 | Auth Token,通过 `Authorization: Bearer` 头发送 | | `ANTHROPIC_BASE_URL` | 否 | 自定义 API 端点,默认 Anthropic 官方 | | `ANTHROPIC_MODEL` | 否 | 默认模型 | | `ANTHROPIC_DEFAULT_SONNET_MODEL` | 否 | Sonnet 级别模型映射 | | `ANTHROPIC_DEFAULT_HAIKU_MODEL` | 否 | Haiku 级别模型映射 | | `ANTHROPIC_DEFAULT_OPUS_MODEL` | 否 | Opus 级别模型映射 | | `API_TIMEOUT_MS` | 否 | API 请求超时,默认 600000 (10min) | | `DISABLE_TELEMETRY` | 否 | 设为 `1` 禁用遥测 | | `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` | 否 | 设为 `1` 禁用非必要网络请求 | --- ## 降级模式 如果完整 TUI 出现问题,可以使用简化版 readline 交互模式: ```bash CLAUDE_CODE_FORCE_RECOVERY_CLI=1 ./bin/claude-code ``` --- ## 相对于原始泄露源码的修复 泄露的源码无法直接运行,主要修复了以下问题: | 问题 | 根因 | 修复 | |------|------|------| | TUI 不启动 | 入口脚本把无参数启动路由到了 recovery CLI | 恢复走 `cli.tsx` 完整入口 | | 启动卡死 | `verify` skill 导入缺失的 `.md` 文件,Bun text loader 无限挂起 | 创建 stub `.md` 文件 | | `--print` 卡死 | `filePersistence/types.ts` 缺失 | 创建类型桩文件 | | `--print` 卡死 | `ultraplan/prompt.txt` 缺失 | 创建资源桩文件 | | **Enter 键无响应** | `modifiers-napi` native 包缺失,`isModifierPressed()` 抛异常导致 `handleEnter` 中断,`onSubmit` 永远不执行 | 加 try-catch 容错 | | setup 被跳过 | `preload.ts` 自动设置 `LOCAL_RECOVERY=1` 跳过全部初始化 | 移除默认设置 | | ColorDiff render 未定义 | `color-diff-napi` stub 缺少 render 方法 | 添加 render 方法 stub | --- ## 项目结构 ``` bin/claude-code # 入口脚本 claude-code.bat # Windows 启动脚本 preload.ts # Bun preload(设置 MACRO 全局变量) .env.example # 环境变量模板 src/ ├── entrypoints/ │ └── cli.tsx # CLI 主入口 ├── main.tsx # TUI 主逻辑(Commander.js + React/Ink)4690 行 ├── localRecoveryCli.ts # 降级 Recovery CLI ├── setup.ts # 启动初始化 ├── screens/ │ └── REPL.tsx # 交互 REPL 界面 ├── components/ # 144+ UI 组件 │ ├── App.tsx # 应用根组件 │ ├── Messages.tsx # 消息渲染 │ ├── PromptInput/ # 输入框组件 │ └── ... ├── tools/ # 45 个 Agent 工具 │ ├── BashTool/ # Shell 命令执行 │ ├── FileEditTool/ # 文件编辑 │ ├── FileReadTool/ # 文件读取 │ ├── FileWriteTool/ # 文件写入 │ ├── GlobTool/ # 文件匹配 │ ├── GrepTool/ # 内容搜索 │ ├── AgentTool/ # 多 Agent 协调 │ ├── MCPTool/ # MCP 服务器 │ └── ... ├── commands/ # 101 个斜杠命令 │ ├── commit.ts # /commit │ ├── review/ # /review │ ├── mcp/ # /mcp │ └── ... ├── services/ # 服务层 │ ├── api/ # API 客户端(Anthropic SDK) │ ├── mcp/ # MCP 协议支持 │ ├── oauth/ # OAuth 认证 │ ├── plugins/ # 插件系统 │ └── analytics/ # 遥测分析 ├── skills/ # Skill 系统 │ └── bundled/ # 内置 Skills ├── state/ # 状态管理 │ ├── AppState.tsx # 全局状态提供者 │ ├── AppStateStore.ts # 状态定义 │ └── store.ts # 状态存储 ├── hooks/ # 85 个 React Hooks ├── ink/ # Ink 终端渲染引擎 ├── context/ # React Context ├── types/ # TypeScript 类型定义 └── utils/ # 329 个工具函数 ``` --- ## 技术栈 | 类别 | 技术 | 说明 | |------|------|------| | 运行时 | [Bun](https://bun.sh) | 高性能 JavaScript 运行时 | | 语言 | TypeScript | 类型安全 | | 终端 UI | React + [Ink](https://github.com/vadimdemedes/ink) | 终端渲染框架 | | CLI 解析 | Commander.js | 命令行参数解析 | | API | Anthropic SDK | Claude API 客户端 | | 协议 | MCP, LSP | 模型上下文协议、语言服务器协议 | | 状态管理 | Zustand-like | 轻量级状态管理 | | 包管理 | Bun | 快速依赖安装 | --- ## 核心模块说明 ### 入口层 (`src/entrypoints/`, `src/main.tsx`) - **cli.tsx**: CLI 入口,处理启动流程 - **main.tsx**: 主逻辑,Commander.js 命令解析,4690 行核心代码 ### UI 层 (`src/screens/`, `src/components/`, `src/ink/`) - **REPL.tsx**: 交互式 REPL 界面 - **144+ 组件**: 消息渲染、输入框、对话框等 - **ink/**: Ink 终端渲染引擎封装 ### 工具系统 (`src/tools/`, `src/Tool.ts`) - **45 个工具**: Bash、文件操作、搜索、Web、MCP 等 - **Tool.ts**: 工具基类,定义工具接口 ### 命令系统 (`src/commands/`) - **101 个命令**: /commit、/review、/mcp、/help 等 - 支持斜杠命令自动补全 ### 服务层 (`src/services/`) - **api/**: Anthropic API 客户端 - **mcp/**: MCP 协议实现 - **oauth/**: OAuth 认证流程 - **plugins/**: 插件系统 - **analytics/**: 遥测分析(可禁用) ### 状态管理 (`src/state/`) - **AppState.tsx**: React Context 状态提供者 - **AppStateStore.ts**: 状态定义和类型 - **store.ts**: Zustand-like 状态存储 ### Hooks (`src/hooks/`) - **85 个 Hooks**: 输入处理、快捷键、IDE 集成、语音等 ### 工具函数 (`src/utils/`) - **329 个模块**: Git、文件、路径、认证、配置等 --- ## 常见问题 ### Q: 如何切换模型? 在 `.env` 中设置 `ANTHROPIC_MODEL` 或使用 `--model` 参数: ```bash ./bin/claude-code --model claude-sonnet-4-20250514 ``` ### Q: 如何禁用遥测? 设置环境变量: ```env DISABLE_TELEMETRY=1 CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 ``` ### Q: TUI 无法启动怎么办? 使用降级模式: ```bash CLAUDE_CODE_FORCE_RECOVERY_CLI=1 ./bin/claude-code ``` ### Q: Windows 下如何运行? 使用批处理文件: ```cmd claude-code.bat ``` --- ## Disclaimer 本仓库基于 2026-03-31 从 Anthropic npm registry 泄露的 Claude Code 源码。所有原始源码版权归 [Anthropic](https://www.anthropic.com) 所有。仅供学习和研究用途。