找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

3050

积分

0

好友

412

主题
发表于 1 小时前 | 查看: 2| 回复: 0

2026年3月31日,Anthropic旗下的Claude Code的完整源码意外泄露到了其官方的npm registry中。这份代码的体量相当惊人——总计超过20万行TypeScript,完整覆盖了从终端用户界面到多智能体协作系统的全部实现。然而,当开发者兴致勃勃地将其克隆到本地后,却发现一个尴尬的现实:这份“宝藏”根本跑不起来。

仅仅十天后,一位名为NanmiCoder的开发者提交了一个经过系统修复的版本,并将其命名为 cc-haha。截止目前,这个仓库已经在GitHub上收获了超过 5600个Star6000余次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)协议支持以及复杂的多智能体编排能力。这对于国内开发者探索人工智能应用架构具有很高的参考价值。

五层核心架构深度拆解

cc-haha 五层架构流程图,展示了从Terminal UI到LLM API的完整技术栈

多智能体(Multi-Agent)系统

cc-haha 实现了一套完整的智能体编排框架。系统内置了6种不同专长的智能体类型(如全能型、探索型、规划型、验证型等),并支持4种任务执行路径:

  • Teammate:团队协作模式,每个智能体拥有独立的身份和邮箱系统,可以协同工作。
  • Async Subagent:后台异步执行任务,执行完毕后自动通知主智能体。
  • Fork Subagent:通过保持API请求前缀的字节级一致性来实现提示词(prompt)缓存命中,从而显著降低大模型调用的Token消耗,这是一个非常巧妙的优化。
  • Sync Subagent:标准的同步执行模式。

智能体之间通过一个邮箱(mailbox)系统进行异步通信,支持基于git worktree的工作区隔离,并且权限可以精细控制到每个智能体所能使用的具体工具级别。

Multi-Agent 编排流程图,展示了主代理与各子代理的协作关系

记忆(Memory)系统

项目设计了一个四层记忆模型:User(用户画像)、Feedback(行为纠正反馈)、Project(项目动态上下文)、Reference(外部系统指针)。所有记忆都以Markdown文件的形式持久化存储在 ~/.claude/ 目录下,并通过一个统一的 MEMORY.md 索引文件进行访问和管理。

其中,AutoDream 机制颇为有趣。该系统会在持续运行24小时或累计进行5个会话之后,自动触发一个后台智能体来整理、验证和修剪记忆库,有效防止过时或错误的信息污染后续的会话,实现了记忆系统的“自动保洁”。

Computer Use 桌面控制

这是整个系统中最激进的功能之一。它通过24个基于MCP协议的工具,实现了对计算机桌面环境的全面控制,包括屏幕截图、鼠标操控、键盘模拟、剪贴板读写以及应用窗口切换。原始实现依赖于Swift编写的原生模块,而cc-haha则进行了一项创新性替代:使用仅660行的Python代码(主要借助 pyautoguimsspyobjc 库)实现了全部系统交互逻辑,做到了零二进制依赖,并在首次运行时自动创建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




上一篇:开源实战分析:graphify 如何为 AI 编程助手构建代码知识图谱与长期记忆
下一篇:Go语言中如何使用Keeper库进行安全的密钥与配置管理
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-4-13 04:49 , Processed in 0.922193 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表