2026年3月31日,Anthropic旗下的Claude Code的完整源码意外泄露到了其官方的npm registry中。这份代码的体量相当惊人——总计超过20万行TypeScript,完整覆盖了从终端用户界面到多智能体协作系统的全部实现。然而,当开发者兴致勃勃地将其克隆到本地后,却发现一个尴尬的现实:这份“宝藏”根本跑不起来。
仅仅十天后,一位名为NanmiCoder的开发者提交了一个经过系统修复的版本,并将其命名为 cc-haha。截止目前,这个仓库已经在GitHub上收获了超过 5600个Star 与 6000余次Fork,成为了近期开源社区的一个热点。本文将拆解这个项目究竟做了什么、它的内部架构设计有何精妙之处,以及它为何值得开发者们的关注。
从“无法运行”到“开箱即用”
直接使用泄露的原始源码,执行标准的 bun install && bun run 命令后,你会遇到一连串的阻塞性问题:入口路由错误导致程序意外回退到Recovery CLI、缺失的存根(stub)文件让Bun的模块加载器陷入无限挂起、使用 --print 无头模式时因类型定义缺失而卡死、甚至连键盘的Enter键都因为原生模块缺失而毫无响应。
cc-haha 项目逐一攻克了这些难关:
- 入口修复:恢复了完整的
cli.tsx 启动链路,巧妙地绕过了preload阶段因 LOCAL_RECOVERY=1 环境变量导致的启动陷阱。
- Stub补全:为缺失的技能(skill)
.md 描述文件和 ultraplan/prompt.txt 等关键资源创建了占位文件,有效阻止了Bun加载器的死循环。
- Native容错:对
modifiers-napi 等需要编译的原生模块添加了try-catch容错机制,使得在不编译原生代码的前提下,键盘输入等基础功能依然可用。
- 类型补全:补充了
filePersistence/types.ts 等一系列缺失的TypeScript类型定义,解决了编译和类型检查报错。
完成这些修复后,那个与官方Claude Code保持一致的完整Ink TUI(终端用户界面)终于可以在本地顺畅运行了,无论是交互模式还是无头的 --print 输出模式。
接入任意LLM:突破Anthropic的局限
这或许是cc-haha带来的最实际、也最具差异化的特性。通过简单地设置 ANTHROPIC_BASE_URL 环境变量,用户就可以将其指向任何兼容Anthropic API格式的第三方服务,例如:
- MiniMax(推荐,支持其M2.7系列模型)
- OpenRouter(聚合了多家模型提供商的网关服务)
- OpenAI / DeepSeek / Ollama(可通过LiteLLM等代理服务进行协议转译)
这意味着,即便你没有官方的Anthropic API Key,也同样可以利用DeepSeek、本地部署的Ollama模型或其他国产大模型,来驱动这套原本为Claude设计的、功能完整的AI编程助手——包括其核心的工具调用、MCP(Model Context Protocol)协议支持以及复杂的多智能体编排能力。这对于国内开发者探索人工智能应用架构具有很高的参考价值。
五层核心架构深度拆解

多智能体(Multi-Agent)系统
cc-haha 实现了一套完整的智能体编排框架。系统内置了6种不同专长的智能体类型(如全能型、探索型、规划型、验证型等),并支持4种任务执行路径:
- Teammate:团队协作模式,每个智能体拥有独立的身份和邮箱系统,可以协同工作。
- Async Subagent:后台异步执行任务,执行完毕后自动通知主智能体。
- Fork Subagent:通过保持API请求前缀的字节级一致性来实现提示词(prompt)缓存命中,从而显著降低大模型调用的Token消耗,这是一个非常巧妙的优化。
- Sync Subagent:标准的同步执行模式。
智能体之间通过一个邮箱(mailbox)系统进行异步通信,支持基于git worktree的工作区隔离,并且权限可以精细控制到每个智能体所能使用的具体工具级别。

记忆(Memory)系统
项目设计了一个四层记忆模型:User(用户画像)、Feedback(行为纠正反馈)、Project(项目动态上下文)、Reference(外部系统指针)。所有记忆都以Markdown文件的形式持久化存储在 ~/.claude/ 目录下,并通过一个统一的 MEMORY.md 索引文件进行访问和管理。
其中,AutoDream 机制颇为有趣。该系统会在持续运行24小时或累计进行5个会话之后,自动触发一个后台智能体来整理、验证和修剪记忆库,有效防止过时或错误的信息污染后续的会话,实现了记忆系统的“自动保洁”。
Computer Use 桌面控制
这是整个系统中最激进的功能之一。它通过24个基于MCP协议的工具,实现了对计算机桌面环境的全面控制,包括屏幕截图、鼠标操控、键盘模拟、剪贴板读写以及应用窗口切换。原始实现依赖于Swift编写的原生模块,而cc-haha则进行了一项创新性替代:使用仅660行的Python代码(主要借助 pyautogui、mss、pyobjc 库)实现了全部系统交互逻辑,做到了零二进制依赖,并在首次运行时自动创建Python虚拟环境并安装所需依赖。
Channel 系统
该系统支持通过Telegram、飞书、Discord、Slack等即时通讯平台远程控制智能体。配合一个6层访问控制列表和权限中继系统,它甚至可以将本地弹出的权限确认对话框转发到IM聊天端,让用户远程完成操作审批。
Skills 插件系统
这是一个可扩展的能力插件框架,支持内置技能和用户自定义技能,具备完整的生命周期管理功能,如安装、更新和卸载。
技术栈与工程规模一览
| 维度 |
数据 |
| 代码量 |
20万+ 行 TypeScript |
| 文件数 |
1900+ 个 TS/TSX 文件 |
| UI 框架 |
React 19 + Ink 6(终端渲染) |
| 运行时 |
Bun 1.1.0+ |
| 核心协议 |
MCP、LSP |
| Python 代码 |
660行(用于Computer Use功能) |
| 文档 |
20+页详细中文文档 + 独立文档站 |
此外,项目还实现了完整的Vim快捷键模式(包括motions、operators、text objects)、LSP(语言服务器协议)集成、自动化PR代码审查、语音输入等高级功能,展示了其作为一个成熟开源实战项目的完备性。
为什么值得关注?
cc-haha 的意义远不止于“一份泄露源码的修复版”。它实际上为我们提供了一个完整的、生产级的AI编程助手架构参考实现。其中关于多智能体编排、跨会话持久化记忆、桌面环境控制、即时通讯通道集成等高级功能的实现细节,对于任何正在构建或研究AI辅助工具链的开发者而言,都具有极高的参考价值。
尤其对于国内开发者,它务实性地解决了一个现实问题:在不直接依赖或难以访问原版Anthropic API服务的前提下,如何利用本地化模型或更易获得的第三方模型,来驱动一套成熟、复杂的AI编程工作流。这其中涉及的工程化思路和适配方案,非常值得在云栈社区这样的技术论坛中进行深入探讨和交流。
项目地址:github.com/NanmiCoder/cc-haha