🔥 先说一个真实场景:一个低级失误,引爆了 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 比,它多了什么?
⚙️ 核心功能,一个个说清楚
1. 🔧 修复了哪六个让源码跑不起来的 Bug
这是这个项目最有工程价值的部分——作者把「一份大家都知道存在但跑不起来的代码」变成了「真正能用的工具」。
原始泄露源码存在以下阻塞问题,均已修复:
cli.tsx 完整入口 | ||
verify.md 文件,Bun text loader 无限挂起 | ||
--print | filePersistence/types.tsultraplan/prompt.txt 缺失 | |
| Enter 键无响应 | modifiers-napiisModifierPressed() 抛异常,handleEnter 中断,onSubmit 永远不执行 | |
preload.tsLOCAL_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 installStep 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=1Step 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-hahaWindows:
# PowerShell 直接调用(推荐)
bun --env-file=.env ./src/entrypoints/cli.tsx
# 无头模式
bun --env-file=.env ./src/entrypoints/cli.tsx -p "你的提示词"[配图:TUI 界面启动后的终端截图示意]
Step 5(可选):连接飞书机器人
1. 在飞书开放平台创建机器人应用,获取 App ID和App Secret2. 安装依赖: bun add @larksuiteoapi/node-sdk3. 在 .env里填入飞书配置(详见docs/feishu-setup.md)4. 启动时指定飞书模式 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. 法律风险是真实的:Anthropic 在积极发 DMCA 投诉,使用和分发泄露源码存在法律风险,请自行评估;仅用于本地学习研究相对风险较低,但对外分发或商业化则风险更高 2. 不是官方维护的:Anthropic 后续更新不会自动同步到 cc-haha,功能会与官方版产生偏差 3. Bun 版本敏感:版本过低会出现 Cannot find package 'bundle'报错,需要保持 Bun 更新4. 第三方模型有能力差异:MiniMax 等模型的编码能力与 Claude 本身有差距,这个差距由模型决定,cc-haha 改变不了 5. 安全研究价值 vs 使用风险:泄露源码中发现了 typosquat 供应链攻击包( audio-capture-napi、url-handler-napi等),在事件发生初期下载安装有潜在风险,当前版本已相对稳定,但仍需注意依赖来源
最后的话:
Anthropic 用
.npmignore的一个失误,意外做了一件整个 AI 开源社区盼了很久的事:让大家真正看清楚,全球最先进的 AI 编码工具的内部长什么样——以及,它在不告诉你的情况下,默默在做什么。
夜雨聆风