npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@mseep/claude-code-source

v2.1.152

Published

Claude Code source - local runnable setup for learning

Downloads

169

Readme


本仓库包含 Claude Code(Anthropic 的 AI 编程 CLI)的提取源代码,以及 18 篇原创深度分析文章(中英双语)对其架构进行全面拆解。源代码来自公开渠道,严格仅供学习和研究用途

源代码的所有知识产权完全归 Anthropic, PBC 所有。

跟随官方更新,保持最新版本。 本仓库跟随 Claude Code 官方发布节奏,始终与最新版本保持同步。官方每次发布新版本后,我们都会针对其 changelog 中面向用户、可落地的部分进行对应更新。每个版本的具体变更记录(包括本仓库已应用的改动和仅存在于官方的改动)请见 CHANGELOG.md


免责声明 · 为什么研究 · 架构总览 · 深度分析 · 从源码运行 · 技术栈 · 项目结构 · 版权声明


免责声明

重要:使用前请阅读

本仓库严格仅供学习和研究用途。

  • 来源:本仓库引用的源代码来自公开渠道,包括 instructkr/claw-code。从源码运行的配置基于 JiaranI/start-claude-code。其中包含 Anthropic 公司的 Claude Code 产品的源代码。
  • 知识产权:源代码的所有知识产权完全归 Anthropic, PBC 所有。本仓库不主张对原始代码的任何所有权、著作权或权利。
  • 用途:本仓库作为学习材料提供,用于理解 AI Agent 系统架构和工程设计模式,面向学术研究、技术学习和教育讨论。
  • 禁止用途:本仓库及其内容不得用于:
    • 任何形式的商业用途
    • 构建竞品产品或服务
    • 再分发或重新打包源代码
    • 任何违反 Anthropic 服务条款 或适用法律的行为
  • 分析文章:深度分析文章(claude-code-deep-analysis/)是仓库维护者撰写的原创评论和分析。文章中包含的代码片段用于评论、批评和教育目的,但这些文章不构成法律建议。
  • 侵权处理:如您是 Anthropic 的代表或认为本仓库侵犯了任何知识产权,请联系我们,我们将立即删除相关内容。您也可以通过 GitHub 的 DMCA 流程 提交侵权通知。
  • 免责条款:本仓库按"现状"提供,不附带任何形式的保证。维护者不对因使用本材料而产生的任何后果承担责任。

为什么研究这个代码库?

Claude Code 是目前可公开观察到的最复杂的生产级 AI Agent 系统之一。与玩具框架和演示 Agent 不同,它为真实世界的数小时编程会话而设计,具备企业级可靠性。研究它能揭示任何教程都不会教的实战工程决策:

| 设计决策 | 洞察 | |:---|:---| | 循环优于图 | 用 while(true) 循环取代 DAG 工作流编排——更简单、更灵活、运行时更易推理 | | 递归优于编排 | 子 Agent 递归调用 query(),自动继承压缩、错误恢复和流式处理 | | 模型做决策,框架做执行 | 框架负责安全约束(并发、副作用、权限),所有推理留在模型中 | | 为 4 小时会话而设计 | 四层上下文压缩和三级 413 错误恢复——在演示中看不见,在生产中不可或缺 | | 不可变性即成本优化 | 不可变 API 消息最大化 prompt caching 命中率,长会话成本降低约 80% |


架构总览

                        CLI / VS Code / IDE 扩展
                                    │
                                    ▼
                        ┌───────────────────────┐
                        │   入口 (cli.tsx)        │
                        │   快速路径路由           │
                        └───────────┬───────────┘
                                    │
                        ┌───────────▼───────────┐
                        │     QueryEngine         │
                        │   会话管理               │
                        │   API 客户端封装         │
                        └───────────┬───────────┘
                                    │
                ┌───────────────────▼───────────────────┐
                │        query() — 核心 Agent 循环       │
                │   ┌─────────────────────────────────┐  │
                │   │  while (true) {                 │  │
                │   │    messages = buildPrompt()      │  │
                │   │    response = stream(messages)   │  │
                │   │    tools = extractToolCalls()    │  │
                │   │    if (!tools) break             │  │
                │   │    results = executePar(tools)   │  │
                │   │    messages.push(results)        │  │
                │   │    maybeCompress(messages)       │  │
                │   │  }                              │  │
                │   └─────────────────────────────────┘  │
                └──────┬──────────┬──────────┬──────────┘
                       │          │          │
              ┌────────▼──┐ ┌────▼────┐ ┌───▼────────┐
              │ 45+ 工具   │ │ 权限    │ │ 上下文     │
              │ Bash, Edit │ │ 系统    │ │ 压缩       │
              │ Glob, Grep │ │ 5 种    │ │ 4 层       │
              │ MCP, LSP…  │ │ 模式    │ │ + 413 恢复 │
              └────────────┘ └─────────┘ └────────────┘

关键指标

| 指标 | 数量 | |:---|:---| | 核心 Agent 循环 (query.ts) | 1,729 行 | | 主 UI 组件 (main.tsx) | 4,683 行 | | 工具实现 | 45+ | | Slash 命令 | 87+ | | React UI 组件 | 146+ | | 工具函数 | 564+ | | React Hooks | 85+ | | 服务模块 | 38 | | Feature Flag | 89 | | System Prompt 组装 (prompts.ts) | 54.3 KB |


深度分析系列

我们撰写了 18 篇原创文章,对每个核心子系统进行源码级深度拆解。每篇文章均提供中文英文版本。

进入分析系列 (中文) →Enter the analysis series (EN) →

Part 1:核心 Agent 引擎

| # | 主题 | 中文 | English | |:--|:------|:-----|:--------| | 00 | 核心结论 | 中文 | EN | | 01 | 入口流程 | 中文 | EN | | 02 | 主循环 | 中文 | EN | | 03 | 流式处理 | 中文 | EN | | 04 | 工具编排 | 中文 | EN | | 05 | 权限系统 | 中文 | EN | | 06 | 子Agent | 中文 | EN | | 07 | 上下文窗口 | 中文 | EN | | 08 | 消息类型 | 中文 | EN | | 09 | 不可变消息 | 中文 | EN | | 10 | 架构图 | 中文 | EN | | 11 | 设计哲学 | 中文 | EN |

Part 2:外围子系统

| # | 主题 | 中文 | English | |:--|:------|:-----|:--------| | 12 | MCP 集成 | 中文 | EN | | 13 | Memory 系统 | 中文 | EN | | 14 | System Prompt | 中文 | EN | | 15 | Session 与 Bridge | 中文 | EN | | 16 | 工具实现 | 中文 | EN | | 17 | Hook 系统 | 中文 | EN |


从源码运行

本仓库支持从源码本地启动 Claude Code(功能有所缩减)。持续跟随上游发布,当前已对齐 2.1.123(详见 CHANGELOG.md)。

环境要求

| 依赖 | 说明 | |:---|:---| | Node.js >= 18 | 运行 setup 脚本 | | Bun >= 1.0 | 运行 Claude Code(setup 脚本会自动安装) | | 认证方式 | Claude Pro/Max/Team 订阅(OAuth)、API Key(sk-ant-xxx)、ChatGPT 订阅、或 OpenAI API Key |

快速开始

# 1. 安装依赖并设置 shim
node scripts/setup.mjs

# 2. 使用 Claude 订阅账号登录(会打开浏览器)
./start.sh login

# 3. 启动
./start.sh
export ANTHROPIC_API_KEY="sk-ant-xxx"
./start.sh

如果你有 ChatGPT Plus/Pro/Business/Enterprise 订阅,可以直接使用 GPT-5.5 作为 Agent 模型,无需 API Key:

# 1. 使用 ChatGPT 账号登录(会打开浏览器)
./start.sh chatgpt-login

# 2. 使用 GPT-5.5 启动
./start.sh --model gpt5.5

可用的 GPT 模型别名:

| 别名 | 解析为 | 所需订阅 | |:---|:---|:---| | gpt5.5 | chatgpt:gpt-5.5 | Plus / Pro / Business / Enterprise | | gpt5.5-pro | chatgpt:gpt-5.5-pro | Pro / Business / Enterprise | | gpt5.4 | chatgpt:gpt-5.4 | Plus / Pro / Business / Enterprise(旧版) | | gpt5.4-mini | chatgpt:gpt-5.4-mini | 任意付费订阅 | | gpt5.4-nano | chatgpt:gpt-5.4-nano | 任意付费订阅 |

也可以使用完整格式:--model chatgpt:gpt-5.5

export OPENAI_API_KEY="sk-xxx"
./start.sh --model openai:gpt-5.5

同样支持其他 OpenAI 兼容 Provider:

export DEEPSEEK_API_KEY="sk-xxx"
./start.sh --model deepseek:deepseek-chat

export MISTRAL_API_KEY="xxx"
./start.sh --model mistral:mistral-large-latest

完全在本地 Ollama 模型上运行 Claude Code —— 无需 API Key,不向 Anthropic 或 OpenAI 发起任何请求。启动器会拉起内置的 Anthropic→Ollama 代理(scripts/ollama-proxy.mjs),把 CLI 指向它。

# 1. 安装并启动 Ollama (https://ollama.com)
ollama serve

# 2. 拉取一个支持工具调用的模型
ollama pull qwen2.5-coder:7b

# 3. 在本地模型上启动 Claude Code
./start-ollama.sh qwen2.5-coder:7b

如果模型没有原生工具调用能力,设置 PROMPTED_TOOLS=1

PROMPTED_TOOLS=1 ./start-ollama.sh phi3:mini
rem Windows 下使用 API Key(OAuth 登录需要 macOS/Linux 的 start.sh)
set ANTHROPIC_API_KEY=sk-ant-xxx
bun src/entrypoints/cli.tsx
  • ripgrep:setup 脚本中的 tar 解压在 Windows 上可能失败。请手动安装 ripgrep 并确保 rg 在 PATH 中。
  • Bun 路径:安装 Bun 后需要重启终端,或手动将 %USERPROFILE%\.bun\bin 添加到 PATH。
  • OAuth 登录./start.sh login 仅适用于 macOS/Linux。Windows 下运行 bun src/entrypoints/cli.tsx auth login --claudeai

创建的 Shim 文件

以下文件是为了让源码可运行而创建的,不属于原始源码

| 文件 | 作用 | |:---|:---| | package.json | 从 import 语句逆向工程出的 100+ 依赖声明 | | tsconfig.json | TypeScript 配置,含 baseUrl.js → .ts/.tsx 路径解析 | | bunfig.toml | Bun 配置,指定 preload 插件 | | preload.ts | 核心 shim:bun:bundle 模拟(feature() 返回 false)、MACRO.* 全局变量注入 | | scripts/setup.mjs | 一键安装:依赖安装、私有包 stub、缺失文件生成、ripgrep 下载 | | start.sh | macOS/Linux 启动脚本,支持 OAuth 登录(./start.sh login)、多种凭证检测(Keychain/文件/环境变量)、第三方代理自动检测、Bun 编译缓存自动清理 |

工作原理

| 问题 | 解决方案 | |:---|:---| | bun:bundle 编译时 API | preload.ts 提供运行时 shim,feature() 全部返回 false | | 89 个 Feature Flag | 全部禁用(所有 feature-gated 代码路径不执行) | | MACRO.* 编译时宏 | preload.ts 中定义为 globalThis.MACRO 全局变量 | | from 'src/...' 导入 | 源码放在 src/ 目录下,tsconfig.jsonbaseUrl: "." 使路径自然解析 | | 无 package.json | 已从 import 语句逆向工程出 100+ 依赖 | | @ant/* 内部包 | scripts/setup.mjs 创建空实现 stub |

不可用的功能(缺失私有包)

| 功能 | 缺失的包 | 说明 | |:---|:---|:---| | Computer Use(电脑操控) | @ant/computer-use-mcp | 截屏、鼠标点击、键盘输入等 | | 原生键鼠输入 | @ant/computer-use-input | Rust/enigo 原生绑定 | | macOS 截屏/窗口管理 | @ant/computer-use-swift | Swift 原生绑定,仅 macOS | | Chrome 浏览器集成 | @ant/claude-for-chrome-mcp | Chrome 扩展 MCP server | | 沙箱运行时 | @anthropic-ai/sandbox-runtime | 命令执行沙箱 | | MCP Bridge | @anthropic-ai/mcpb | MCP 协议桥接 |

由于 feature() 在运行时返回 false,以下功能全部被禁用:

ABLATION_BASELINE AGENT_MEMORY_SNAPSHOT AGENT_TRIGGERS BRIDGE_MODE BUDDY BUILDING_CLAUDE_APPS CCR_AUTO_CONNECT COORDINATOR_MODE DAEMON DIRECT_CONNECT DUMP_SYSTEM_PROMPT FORK_SUBAGENT HISTORY_PICKER KAIROS MCP_SKILLS MONITOR_TOOL NATIVE_CLIPBOARD_IMAGE PERFETTO_TRACING QUICK_SEARCH SSH_REMOTE STREAMLINED_OUTPUT TEAMMEM TEMPLATES TERMINAL_PANEL TORCH ULTRAPLAN ULTRATHINK VOICE_MODE WEB_BROWSER_TOOL WORKFLOW_SCRIPTS 等共 89 个。

构建流程推断

TypeScript 源码
  │
  ├─ Bun bundler (bun build)
  │   ├─ 注入 MACRO.* 常量 (--define)
  │   ├─ 解析 feature() 调用 → 设置 89 个 feature flag 的 true/false
  │   ├─ Dead Code Elimination → 移除未启用 feature 的代码分支
  │   └─ 打包为单文件 JS bundle
  │
  ├─ 可选:Bun compile → 编译为单文件可执行二进制
  │
  └─ 发布到 npm (@anthropic-ai/claude-code)

故障排查

| 错误 | 解决方案 | |:---|:---| | Cannot find module 'src/...' | 确认源码在 src/ 目录下,且 bunfig.toml 存在 | | Missing 'default' export in module '*.md' | 运行 node scripts/setup.mjs 重新生成缺失的 stub 文件 | | Cannot find package '@ant/...' | 运行 node scripts/setup.mjs 重新创建 stub | | bun: command not found | 安装 Bun:curl -fsSL https://bun.sh/install \| bash(或重启终端) | | No authentication found | 运行 ./start.sh login 使用 OAuth 登录,或 export ANTHROPIC_API_KEY="sk-ant-xxx" 使用 API Key | | 使用非 Anthropic 代理 | start.sh 会自动检测并设置;手动启动时需设置 DISABLE_PROMPT_CACHING=1DISABLE_INTERLEAVED_THINKING=1 | | 只能在一个目录启动 / 移动源码后卡死 | Bun 按绝对路径缓存编译结果。start.sh 会自动清理缓存。手动启动时需先清理:rm -rf ~/Library/Caches/bun(macOS)或 rm -rf ~/.cache/bun(Linux) |

如果你想运行官方版本

npm install -g @anthropic-ai/claude-code

技术栈

| 层次 | 技术 | |:---|:---| | 运行时 | Node.js >= 18, Bun >= 1.0 | | 语言 | TypeScript + React JSX | | UI | React 19,自定义终端渲染器,146+ 组件 | | CLI | Commander.js 12 | | AI/LLM | Anthropic SDK, Claude Agent SDK, OpenAI SDK, AWS Bedrock, Azure Identity | | 协议 | Model Context Protocol (MCP, 6 种传输), LSP, OAuth/XAA | | 可观测性 | OpenTelemetry (traces, metrics, logs) + OTLP 导出器 | | 代码工具 | ripgrep, Sharp (图片处理), Marked, Turndown, Diff |


项目结构

claude-code-source/
├── README.md                         # English documentation
├── README.zh.md                      # 本文档(中文)
├── assets/                           # 图片资源
│   ├── anthropic-claude-code.webp
│   └── screenshot.png
├── package.json                      # 依赖声明(逆向工程)
├── tsconfig.json                     # TypeScript 配置
├── bunfig.toml                       # Bun preload 配置
├── preload.ts                        # 运行时 shim(feature flag、宏)
├── start.sh                          # 启动脚本
├── scripts/setup.mjs                 # 一键安装脚本
│
├── claude-code-deep-analysis/        # 18 篇原创分析文章(中文 + EN)
│   ├── README.md                     #   系列索引(中文)
│   ├── README.en.md                  #   系列索引(English)
│   ├── 00-core-conclusion.md         #   每篇文章有 .md + .en.md
│   ├── 00-core-conclusion.en.md
│   ├── ...
│   └── 17-hook-system.en.md
│
└── src/                              # Claude Code 源码(Anthropic)
    ├── query.ts                      # 核心 Agent 循环(1,729 行)
    ├── QueryEngine.ts                # 会话管理(46.6 KB)
    ├── Tool.ts                       # 工具接口与注册(29.5 KB)
    ├── main.tsx                      # 主 React 组件(4,683 行)
    │
    ├── entrypoints/                  # 入口文件(CLI、MCP、SDK 类型)
    ├── commands/                     # 87+ slash 命令
    ├── tools/                        # 45+ 工具实现
    │   ├── BashTool/                 #   Shell 执行(430 KB 安全代码)
    │   ├── AgentTool/                #   子 Agent 执行
    │   ├── FileEditTool/             #   文件编辑与 diff 匹配
    │   ├── MCPTool/                  #   Model Context Protocol
    │   └── ...                       #   30+ 更多工具
    │
    ├── services/                     # 38 个服务模块
    │   ├── api/                      #   Anthropic API 集成
    │   ├── mcp/                      #   MCP 协议(25 个子目录)
    │   ├── compact/                  #   上下文压缩
    │   ├── SessionMemory/            #   跨会话记忆
    │   └── ...
    │
    ├── components/                   # 146+ React UI 组件
    ├── hooks/                        # 85+ React Hooks
    ├── utils/                        # 564+ 工具函数
    ├── permissions/                  # 权限系统(5 种模式)
    ├── bridge/                       # CLI ↔ VS Code 集成
    ├── constants/                    # System Prompt 组装与配置
    ├── memdir/                       # 跨会话记忆系统
    ├── skills/                       # Skill/插件系统
    ├── voice/                        # 语音输入处理
    └── ...

版权声明

  • 源代码:所有权利归 Anthropic, PBC 所有。不授予任何许可。
  • 分析文章claude-code-deep-analysis/):仓库维护者的原创评论和分析。代码片段仅用于教育目的。

联系方式:如有任何问题,请通过 GitHub Issues 联系。