乐于分享
好东西不私藏

Claude Code 源码「意外」公开,有人 48 小时内让它跑起来了——还接上了飞书和钉钉,已经4200 Star、4800 Fork!

Claude Code 源码「意外」公开,有人 48 小时内让它跑起来了——还接上了飞书和钉钉,已经4200 Star、4800 Fork!

🔥 先说一个真实场景:一个低级失误,引爆了 AI 圈

2026 年 3 月 31 日,下午。

一位叫 Chaofan Shou(邵超凡)的 AI 安全研究员在例行检查 npm 仓库时,注意到一个不对劲的地方。

Anthropic 刚发布了 Claude Code v2.1.88。

这个 npm 包里,多了一个 59.8MB 的 cli.js.map 文件。

Source Map。前端开发者都知道这是什么——它是把编译后的混淆代码「还原」成原始源码的调试工具。把这个文件打进公开发行的 npm 包里,就等于把完整源码以明文方式公开发布。

Bun 在构建时会默认生成 Source Map。有人忘记把它排除在外了。

几小时内,消息传遍整个开发者圈。

1,900+ 文件,512,000+ 行 TypeScript 代码,44 个功能特性标志,20+ 个未发布功能——全部公开。Anthropic 紧急撤包,回退到 v2.1.87,并向 GitHub 发出 DMCA 投诉,导致 8,100+ 个仓库被关停。

但互联网记住一切。

截至被 DMCA 之前,这份代码已经被 Fork 41,500 次。

而 Anthropic 也因此迎来了一个极其尴尬的事实——

这已经是 13 个月内,他们在完全相同的坑里摔的第二跤。(第一次:2025 年 2 月,v0.2.8 的 inline-source-map 事故)

一家以「AI Safety」为旗帜的公司,连 .npmignore 都没写好。


📦 这个项目是什么

一句话定位: 基于 Claude Code 泄露源码修复的本地可运行版本,支持接入任意 Anthropic 兼容 API,并在原版基础上扩展了桌面客户端、Computer Use 和国内 IM 机器人接入能力。

  • • GitHub: github.com/NanmiCoder/cc-haha
  • • ⭐ Star: 4,200+
  • • 🍴 Fork: 4,800+(Fork 数高于 Star 数,异常罕见,说明大量人在本地修改使用)
  • • 提交数: 18 commits(持续迭代中)
  • • 语言: TypeScript 100%
  • • 运行时: Bun(必须)
  • • 作者: NanmiCoder,GitHub 活跃开发者

项目核心价值: 泄露的原始源码无法直接运行,有多个启动链路的阻塞 bug。NanmiCoder 修复了这些问题,并在此基础上进行了大量扩展,使其成为一个功能完整、可持续使用的本地 Claude Code 运行时。

法律声明: 仓库 README 明确注明:「本仓库基于 2026-03-31 从 Anthropic npm registry 泄露的 Claude Code 源码。所有原始源码版权归 Anthropic 所有。仅供学习和研究用途。」Anthropic 正在通过 DMCA 追查相关仓库,使用前请自行评估法律风险。


和官方 Claude Code 比,它多了什么?

功能维度
cc-haha
官方 Claude Code
需要 Anthropic 账号
❌ 自填 API Key
✅ 必须登录
支持第三方模型
✅ 任意 Anthropic 兼容 API
有限(官方渠道)
遥测数据收集
✅ 可完全关闭
后台持续收集
桌面 GUI 客户端
✅ Tauri 2(扩展版)
❌ 纯终端
Computer Use 桌面控制
✅ macOS + Windows
有限
国内 IM 接入
✅ 微信 / 飞书 / 钉钉 / Telegram
❌
每小时远程轮询设置
✅ 可禁用
强制开启
代码可审计
✅ 完整 TypeScript 源码
❌ 混淆编译

⚙️ 核心功能,一个个说清楚

1. 🔧 修复了哪六个让源码跑不起来的 Bug

这是这个项目最有工程价值的部分——作者把「一份大家都知道存在但跑不起来的代码」变成了「真正能用的工具」。

原始泄露源码存在以下阻塞问题,均已修复:

问题
根因
修复方案
TUI 界面不启动
入口脚本把无参数启动路由到 recovery CLI
恢复走 cli.tsx 完整入口
启动卡死
verify
 skill 缺失 .md 文件,Bun text loader 无限挂起
创建 stub 占位文件
--print
 模式卡死
filePersistence/types.ts
 和 ultraplan/prompt.txt 缺失
创建类型桩文件
Enter 键无响应
(最致命)
modifiers-napi
 native 包缺失,isModifierPressed() 抛异常,handleEnter 中断,onSubmit 永远不执行
加 try-catch 容错
setup 被跳过
preload.ts
 自动设置 LOCAL_RECOVERY=1,跳过全部初始化
移除这行自动设置

Enter 键无响应那个 bug 最有意思——原来整个 TUI 界面能渲染出来,但你打完字按回车什么都不发生,原因是一个底层 native 包缺失了,抛出异常后整个键盘事件处理链路就中断了,没有任何错误提示。找这个 bug 大概需要很深的 Ink/React 底层调试经验。

2. 🌐 支持任意 Anthropic 兼容 API

这是对中国开发者最直接的价值。

只需要在 .env 文件里配置三行:

ANTHROPIC_AUTH_TOKEN=your-api-key
ANTHROPIC_BASE_URL=https://api.minimaxi.com/anthropic
ANTHROPIC_MODEL=MiniMax-M2.7-highspeed

支持的第三方服务商(需要 Anthropic 协议兼容):

  • • MiniMax(国内,支持 Anthropic 协议,有免费额度)
  • • OpenRouter(base_url 为 https://openrouter.ai/api)
  • • 任意支持 /v1/messages 的代理服务

如果你的服务商只支持 OpenAI 协议,需要先用 LiteLLM 做一层协议转换,详见项目 docs/third-party-models.md。

项目还支持直接在 ~/.claude/settings.json 里配置,与官方 Claude Code 配置格式完全兼容。

3. 🖥️ Tauri 2 桌面客户端(最新版本新增)

当前最新版本(v0.2.x)已有完整的图形化桌面端:

  • • 多标签 + 多会话并行管理
  • • 代码 Diff 可视化内联审查
  • • 项目切换 + 权限确认 GUI
  • • MCP 服务器、插件、Skills 的图形化管理入口
  • • 上下文用量实时显示
  • • 系统通知(权限请求、长任务完成时推送)
  • • 内置真实终端,可在桌面端里直接装依赖

这对于「不想长期停留在终端里」的日常开发工作流是个实质性的提升。

4. 📱 国内 IM 机器人全接入(重磅功能)

这是 cc-haha 在功能上超越官方版本最明显的地方。

支持通过以下平台远程控制本地运行的 cc-haha 实例:

  • • 个人微信:扫码绑定,手机发消息远程驱动电脑上的 Claude Code
  • • 飞书:流式输出卡片、图片/文件回传、多模态输入
  • • 钉钉:Stream 接入、AI Card 流式输出、权限卡片
  • • Telegram:长轮询接入,独立 sidecar 进程

每个 IM 平台以独立 sidecar 进程运行,互不干扰。移动端权限审批支持短回复(allow / always / deny),不需要盯着终端。

5. 🔒 隐私与遥测可控

泄露源码中发现,官方 Claude Code 有双层分析管道——数据同时发往 Anthropic 和 Datadog,且每小时轮询远程设置。

cc-haha 提供了完整的关闭选项:

DISABLE_TELEMETRY=1
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1

设置这两个环境变量后,所有遥测和非必要网络请求均被禁用,代码完全在本地运行。


🚀 怎么装、怎么用

环境准备

  • • Bun(必须,不能用 Node.js 替代)
  • • Git for Windows(Windows 用户必装,项目内部 Shell 执行依赖它)
  • • 一个 Anthropic 兼容的 API Key(MiniMax 有免费额度)

Step 1:安装 Bun

# macOS / Linux
curl -fsSL https://bun.sh/install | bash

# Windows(PowerShell)

powershell -c "irm bun.sh/install.ps1 | iex"

# macOS(Homebrew)

brew install bun

# 精简版 Linux 如果提示 unzip is required

apt update && apt install -y unzip

安装后重开终端,确认:

bun --version  # 需要较新版本,若报 Cannot find package 'bundle' 执行 bun upgrade

[配图:Bun 安装成功的终端截图示意]


Step 2:克隆仓库并安装依赖

git clone https://github.com/NanmiCoder/cc-haha.git
cd
 cc-haha
bun install

Step 3:配置环境变量

cp .env.example .env

编辑 .env,至少填写这三行(以 MiniMax 为例):

# 选一个填:
ANTHROPIC_API_KEY=sk-xxx           # x-api-key 头
ANTHROPIC_AUTH_TOKEN=sk-xxx        # Bearer Token 头(推荐)

# 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

# 关闭遥测(建议打开)
DISABLE_TELEMETRY=1
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1

Step 4:启动

macOS / Linux:

# 完整 TUI 界面(推荐首次体验)
./bin/claude-haha

# 无头模式(脚本/CI 场景)

./bin/claude-haha -p "解释这段代码的功能"

# 管道输入

cat
 myfile.py | ./bin/claude-haha -p

# 降级模式(TUI 有问题时使用)

CLAUDE_CODE_FORCE_RECOVERY_CLI=1 ./bin/claude-haha

Windows:

# PowerShell 直接调用(推荐)
bun --env-file=.env ./src/entrypoints/cli.tsx

# 无头模式

bun --env-file=.env ./src/entrypoints/cli.tsx -p "你的提示词"

[配图:TUI 界面启动后的终端截图示意]


Step 5(可选):连接飞书机器人

  1. 1. 在飞书开放平台创建机器人应用,获取 App ID 和 App Secret
  2. 2. 安装依赖:bun add @larksuiteoapi/node-sdk
  3. 3. 在 .env 里填入飞书配置(详见 docs/feishu-setup.md)
  4. 4. 启动时指定飞书模式
  5. 5. 在飞书里发消息给机器人,就能远程驱动本地的 cc-haha

[配图:手机飞书消息控制 Claude Code 的示意]


常见踩坑

Q:undefined is not an object (evaluating 'usage.input_tokens')

ANTHROPIC_BASE_URL 配错了。SDK 会在 base URL 后拼接 /v1/messages,不要在 URL 里手动加路径。

  • • MiniMax 正确写法:https://api.minimaxi.com/anthropic ✅
  • • OpenRouter 正确写法:https://openrouter.ai/api ✅
  • • OpenRouter 错误写法:https://openrouter.ai/anthropic ❌(返回 HTML 404)

Q:Cannot find package 'bundle'

Bun 版本过低,执行 bun upgrade 升级。


💡 三个真实场景,看它怎么用

场景一:零成本跑完整 Claude Code 功能

背景: 你想用 Claude Code 辅助开发,但 Anthropic 官方账号限速,或者你在中国大陆访问不稳定,或者单纯就是不想花 Claude Pro 订阅费。

操作: 接入 MiniMax API(注册免费,有初始额度),配置好 .env,启动 ./bin/claude-haha。

效果: 完整的 Ink TUI 界面,Bash 工具、文件编辑工具、Grep 工具、MCP 协议全部可用,体验和官方版本高度一致。你得到的是一个没有账号限制、遥测可完全关闭的本地 Claude Code 实例。


场景二:手机飞书远程操控电脑写代码

背景: 你在外出,手上没有电脑,但家里的电脑开着,有一个紧急的小改动需要处理。

操作: 在飞书里打开机器人对话框,发:

打开 ~/projects/my-app,看一下 utils/auth.ts 里 verifyToken 函数的逻辑,
帮我加一个 token 过期时间的检查,过期了返回 false 而不是抛异常

cc-haha 的飞书 adapter 接收消息,在本地执行工具调用,流式输出代码修改结果,并可以发起权限确认卡片(需要你点击审批)。

效果: 你出门在外,通过飞书完成了一次 Claude Code 辅助的代码修改,文件已在本地更新。适合需要飞书生态集成的小团队。


场景三:研究 Claude Code 内部架构

背景: 你是一个对 AI Agent 工程化感兴趣的开发者,想了解商业级 AI 编码工具的内部实现方式。

操作: 克隆仓库,打开 src/ 目录,配合 docs/ 目录下的 8 张架构图,逐模块研读:

  • • src/screens/REPL.tsx — 核心 REPL 交互界面
  • • src/tools/ — 40+ Agent 工具的真实实现(Bash、Edit、Grep、WebFetch 等)
  • • src/services/ — 上下文压缩、记忆提取的服务层
  • • src/utils/ — 权限系统、Bash 安全检查的核心逻辑

泄露的源码里还藏着一些有意思的彩蛋:代号 capybara(为了绕过自己的字符串检查脚本,用十六进制字符码拼出来)、Undercover Mode(Anthropic 员工给开源项目提代码时自动隐藏 Claude Code 归属信息)、双层遥测管道……

效果: 最直接、最完整的 AI Agent 工程化学习材料,没有之一。


🐦 X 上的人怎么说

事件发生后,X 平台和国内技术社区的讨论量非常大。梳理了几条有代表性的声音:


安全研究员 Chaofan Shou(@shoucccc)在 X 上首发消息(2026-03-31):

「Claude Code source code has been leaked via a map file in their npm registry!」

就这一句话,引爆了整个开发者圈。这条推文是这场事件的「零号病人」。

博主点评: 一个 Source Map 文件改变了很多人对 Claude Code 内部架构的认知。这种「意外透明」带来的信息量,比任何技术博客分析都更直接。


博客园技术分析文章(2026-04-01):

「这已经是 Anthropic 在 13 个月内第二次犯完全相同的错误。再先进的 AI 能力,也需要扎实的工程基本功来守护。安全不仅仅是模型对齐,还包括你的 .npmignore 有没有写对。」

博主点评: 这句话道出了整件事最讽刺的地方。「AI Safety」公司连发布管道的基本安全做不好,这是一种很独特的黑色幽默。


知乎深度分析(2026-04-02):

分析文章揭示了几个让人不安的细节:

「源码显示 Claude Code 每小时轮询远程设置,Anthropic 可以通过 GrowthBook feature flag 远程禁用绕过权限、快速模式、语音模式等功能,用户无法获得任何可见性或同意机制。」

博主点评: 这是 cc-haha 提供的「远程轮询可禁用」选项最真实的价值背景。你用的工具在你不知情的情况下可以被远程改变行为,而且没有任何通知。知道这件事,会让你对「我需不需要自己跑一份」这个问题有更清晰的答案。


GitHub Issues 区用户反馈(整理):

  • • 多位用户遇到 ANTHROPIC_BASE_URL 配错的问题(OpenRouter 的路径坑最多)
  • • Windows 用户普遍需要额外安装 Git Bash(文档已有说明)
  • • 有用户问是否可以接 DeepSeek:可以,但 DeepSeek 只支持 OpenAI 协议,需要先用 LiteLLM 做协议转换
  • • 有用户提问桌面版 release 什么时候有(v0.2.x 系列已经有,持续迭代中)

来自 claw-code 作者 Sigrid Jin(韩国开发者)的间接评价:

Sigrid Jin 用 OpenAI Codex 净室重写了一个 Python 版的 claw-code,发布 2 小时获得 50,000 Star,成为 GitHub 历史上增长最快的仓库之一。这种「净室重写」的方式在法律上绕开了 DMCA,但思路是一致的:大家都想要一个「本地运行、数据自控、API 自填」的 Claude Code。

博主点评: cc-haha 和 claw-code 是同一个需求的两种满足方式——一个直接在泄露源码上修复运行,一个从零重写。如果你更在乎法律安全,claw-code 路线更保险;如果你更在乎功能完整性和与官方版本的一致性,cc-haha 更直接。


🎯 值不值得用?我的判断

适合哪类人:

  • • 🔬 对 Claude Code 内部工程化感兴趣的研究者:完整源码 + 架构图,是最好的学习材料
  • • 🇨🇳 在中国大陆使用且有第三方 API 的开发者:接 MiniMax 或 OpenRouter,跳过 Anthropic 账号登录限制
  • • 🔒 对数据隐私有要求的开发者:遥测可完全关闭,数据不离本机
  • • 📱 需要手机远程驱动 Claude Code 的场景:飞书 / 钉钉 / 微信接入是官方版没有的能力
  • • 🏗️ 想基于 Claude Code 架构二次开发的团队:TypeScript 完整源码,Ink TUI 组件全部可改

局限性(必须客观说):

  1. 1. 法律风险是真实的:Anthropic 在积极发 DMCA 投诉,使用和分发泄露源码存在法律风险,请自行评估;仅用于本地学习研究相对风险较低,但对外分发或商业化则风险更高
  2. 2. 不是官方维护的:Anthropic 后续更新不会自动同步到 cc-haha,功能会与官方版产生偏差
  3. 3. Bun 版本敏感:版本过低会出现 Cannot find package 'bundle' 报错,需要保持 Bun 更新
  4. 4. 第三方模型有能力差异:MiniMax 等模型的编码能力与 Claude 本身有差距,这个差距由模型决定,cc-haha 改变不了
  5. 5. 安全研究价值 vs 使用风险:泄露源码中发现了 typosquat 供应链攻击包(audio-capture-napi、url-handler-napi 等),在事件发生初期下载安装有潜在风险,当前版本已相对稳定,但仍需注意依赖来源

最后的话:

Anthropic 用 .npmignore 的一个失误,意外做了一件整个 AI 开源社区盼了很久的事:让大家真正看清楚,全球最先进的 AI 编码工具的内部长什么样——以及,它在不告诉你的情况下,默默在做什么。


📌 快速资源汇总

资源
地址
GitHub 仓库(cc-haha)
github.com/NanmiCoder/cc-haha
第三方模型接入指南
仓库 docs/third-party-models.md
飞书接入配置
仓库 docs/feishu-setup.md
桌面端文档
仓库 docs/ 目录
架构图(8 张)
仓库 docs/ 目录 png 文件
MiniMax(推荐 API)
platform.minimaxi.com
OpenRouter
openrouter.ai
LiteLLM(协议转换)
github.com/BerriAI/litellm
事件复盘(博客园)
搜索「Claude Code 源码泄露 warm3snow」


AI 生成的 UI 丑得睡不着?终于有人要治这个问题了
编程已死,程序员永生,Claude Code 创始人用手机点点点,一天发150个PR
Composio 开源了这份 Codex Skills 精选库,装完直接让 AI 帮你修 CI、整理发票、写会议纪要
Browser Harness:这个 GitHub 项目,正在让 AI Agent 真正“接管浏览器”
Matt Pocock Skills:如何把 AI 变成你的“超级工程师伙伴”

相关学习资料