RepoDaily · 2026-08-20 · Security tool

Munder Difflin 解析:把十个终端编码 CLI 变成本地协同蜂巢的开源桌面应用

#5 Security tool TypeScript +797 chaitanyagiri/munder-difflin 打开仓库

免费、MIT 协议的桌面工具,把 Claude Code、Codex 等十个终端 CLI 变成会互发消息、共享长期记忆的本地蜂巢;网络面只留一个本地 Unix domain socket,安全边界白纸黑字写进 SECURITY.md。

项目类型Security tool
最适合已为 Claude Code、Codex 或 Copilot CLI 付费、想让多个智能体在同一台机器上被统一调度的开发者
风险等级中等:官方标注 working prototype,无测试套件,捆绑像素素材仅限非商业使用
评估时间约 1–2 小时:克隆仓库、npm install、npm run dev,再交给 Michael 一个任务

核心问题: 让已有的 CLI 智能体通过一个只监听本地 Unix socket 的蜂巢协同,是否优于在多个终端里手动切换?

92/100

RepoDaily 采用评分

RepoDaily 将该项目的采用分评为 92/100(强):分数来自文章来源、安装路径、生产风险、差异化、许可证清晰度以及 AI/Agent 适配度。

基于 RepoDaily 来源和采用说明的方向性评分,不是基准测试。风险: 中
100证据质量

包含 6 个来源、覆盖 2 类来源;如有 RepoDaily 独有模块,会进一步提高证据分。

100可安装/可试用性

检测到 6 个工作流步骤、5 个下一步动作,以及 3 个命令/安装信号。

66维护可信度

趋势热度为 +797 stars;如内容中有 release、issue 或维护信号,会提高维护可信度。

96生产准备度

采纳风险标记为 medium,并包含 6 条安全说明与 4 条跳过条件。

100差异化

3 个机会视角、4 个替代方案,以及 4 个类型化模块支撑差异化判断。

68许可证清晰度

文章中包含许可证来源或许可证表述。

90Agent / AI 适配度

文章正文和元数据中检测到 8 个 AI/Agent 相关信号。

项目概览

Munder Difflin 是一个免费、MIT 协议的桌面应用,把十个终端编码 CLI——Claude Code、Antigravity(Gemini)、OpenAI Codex、xAI Grok、Kimi Code、Qwen、OpenCode、Crush、pi.dev、GitHub Copilot CLI——接成 README 所说的 hive mind。每个 CLI(以 claude、agy、codex、grok、kimi、qwen、opencode、crush、pi、copilot 命令调用)都以真实进程跑在伪终端里。技术栈是 Electron、React、TypeScript、Pixi.js、xterm.js 和 node-pty,运行在你已付费订阅的小时额度之内,支持自带密钥和本地模型。

卖点是“你的克隆”:一个叫 Michael 的智能体是楼层的老板,你只跟他对话,他负责把活分派给其他智能体。每个智能体拥有长期记忆、一个带 inbox/ 和 outbox/ 目录的 mailbox,以及 2D 办公楼层上的一个工位,头像会以像素画的形式展示工作状态。README 称其记忆层是“世界上最快的”——这一说法无法验证,但记忆、路由和邮箱原语都在源码里有对应文件(src/main/memory.ts、src/main/hive.ts、src/main/hooks.ts)。

从安全工具的角度读它反而最清楚,这在原型项目里很少见。SECURITY.md 写明:只在 PTY 里启动本地进程、只读写你注册的目录;除一个供应用内 hook server 使用的本地 Unix domain socket 外不开任何网络监听,也不设认证或远程面。渲染进程没有直接的 Node 访问(nodeIntegration: false、contextIsolation: true);所有 fs:* 和 git:* IPC 调用在主进程做沙箱与路径校验,根限定在该智能体的工作目录;蜂巢对本地 git 仓库只有主进程这一个提交者,智能体本身只写普通文件。

时间点也解释了热度:本期 797 星、2026-08-20 排名第 5,而 v0.4.4(2026-08-18)距趋势日仅两天。该版本修好了 Windows 上从未正常工作的智能体互通——cmd.exe 会在第一个换行处截断约 6.1k 字符的多行蜂巢提示参数,智能体启动后看似健康却谁也联系不上——changelog 称 Windows 约占下载量一半;同时还修掉了 bootstrapHiveServices() 在 harnessHome 为 null 时提前返回、导致全新安装的消息路由、hook server、telemetry 采集与任务调度整个首会话都不启动的问题。

解决什么问题

  • 同时开几个终端编码 CLI 只能人肉切标签页,没有共享记忆,也没有任务路由
  • 订阅都有小时额度:一个智能体闲着,另一个在烧配额,没人做平衡
  • 智能体在会话里学到的东西随进程退出而丢失
  • 想知道智能体做了什么,只能翻终端回滚
  • Windows 上 cmd.exe 参数截断曾让智能体间通信完全失效,直到 v0.4.4 解码 npm shim 并改用 argv 数组启动

工作原理

  1. 每个 CLI 由 node-pty 在 Electron 主进程里作为真实进程跑进伪终端(src/main/pty.ts)
  2. 每个智能体获得长期记忆(src/main/memory.ts)、基于 inbox/ 和 outbox/ 目录的 mailbox,以及 2D 办公楼层上的工位
  3. 消息经蜂巢层(src/main/hive.ts)路由,应用内 hook server 只监听本地 Unix domain socket(src/main/hooks.ts)
  4. Michael 作为“你的克隆”是楼层老板,负责分派工作,你只与他对话
  5. 主进程是本地 git 仓库的唯一提交者,智能体本身只写普通文件
  6. Pixi.js 渲染办公场景(src/renderer/src/scene/office/),xterm.js 渲染各个终端

架构解读:一个进程、一层楼、一个提交者

CONTRIBUTING.md 公布了目录结构。src/main/ 是 Electron 主进程:PTY(pty.ts)、fs/git 桥、蜂巢本体(hive.ts、hooks.ts、memory.ts)和配置。src/preload/ 是 context-bridge IPC 面,向渲染进程暴露类型化的 window.cth API,这就是 React UI(src/renderer/)没有直接 Node 访问的原因。Pixi.js 办公场景位于 src/renderer/src/scene/office/,tools/mapgen/ 里是用 Python 写的 Tiled 办公地图构建与渲染辅助脚本。

最有信息量的设计细节是提示如何送达智能体:蜂巢协议把提示作为单个多行、括号密集的命令行参数传递,约 6.1k 字符。这正是 Windows 崩掉的根源——cmd.exe 在考虑引号之前就把 CR/LF 当作语句分隔符,没有反斜杠转义、也没有换行转义,参数在第一行换行处被切断,丢了命名 inbox/ 和 outbox/ 的代码块。0.4.4 的修复是解码 npm shim 得到解释器和脚本,再用 argv 数组启动,让 node-pty 的 MSDN/CRT 转义把完整提示交给 CreateProcess(上限 32767 字符,而非 cmd.exe 的 8191)。第二个修复针对 opencode-ai:其 bin 是编译出的二进制,npm 会写无解释器的 shim,此前在所有 Windows 安装上都返回 null。

上手路径

  • 前置条件:Node.js 18+ 与 npm、用于构建 node-pty 原生插件的 C/C++ 工具链(macOS 上执行 xcode-select --install)、PATH 上有 Claude Code 作为默认命令——其他 CLI 也可以
  • git clone 仓库后执行 npm install;postinstall 会跑 electron-rebuild,让 node-pty 匹配 Electron 的 ABI
  • 若启动时报 wrong ELF/Mach-O 或 NODE_MODULE_VERSION 错误,确认工具链后重跑 npm install——CONTRIBUTING 称这是最常见的安装失败
  • npm run dev 启动热重载的 Electron 构建;随后安装向导要求选择智能体目录(0.4.4 修复了 ~/HarnessAgents 路径死于 ENOENT: mkdir 的问题)
  • 提 PR 前:npm run typecheck(没有测试套件,这就是事实上的 CI 门槛)和 npm run build

命令面

  • 包装了十个 CLI:claude、agy、codex、grok、kimi、qwen、opencode、crush、pi、copilot,另支持自定义会话
  • 支持自带密钥与本地模型;0.4.4 修复了 OpenCode 预选 BYOK 模型、密钥缺失时静默回退却仍上报所请求模型的问题
  • 0.4.4 起可选 Grok 4.6
  • Skills 浏览器按 scope 优先级展示 Claude Code、OpenCode 和 Codex 已装的技能,并可浏览另外 227 个,一键安装或移除
  • Settings 里的 Prerequisites 页面列出你有哪些辅助工具、缺哪些、各有什么用,还有一键让 Michael 补齐缺失项
  • hook server——应用唯一的监听器——只绑定本地 Unix domain socket

维护风险

  • README 徽章标注 working prototype;SECURITY.md 只对 main 分支提供修复,旧标签一律不支持
  • 没有测试套件——CONTRIBUTING 明说 npm run typecheck 是事实上的 CI 门槛
  • 头像行为由 src/renderer/src/store/mockEvents.ts 的模拟事件循环驱动;接入真实 Claude Code hook 事件被列为头号下一个里程碑
  • CONTRIBUTING 称应用 macOS 优先、Windows/Linux 未测试,而 changelog 报告 Windows 约占下载量一半——0.4.4 堵上了最大的 Windows 缺口,但跨平台冒烟测试仍被列为适合新人的贡献方向
  • 捆绑像素素材采用 LimeZu FREE VERSION 许可,仅限非商业使用——这对任何打包再分发都是硬限制
  • 暗色模式对比度在 0.4.4 重做:ink-300 此前对各表面仅 1.73–2.09:1(187 处使用、93 处是 1px 边框),现达 3.4–4.0:1,新增 --cth-on-accent 令牌达 7.0–8.5:1——说明 UI 开始靠测量而非肉眼把关

谁适合关注

适合关注

  • 已有 Claude Code、Codex 或 Copilot 订阅且小时额度有余量的开发者
  • 装有 Node 18+ 和 C/C++ 工具链、愿意从源码构建(npm run dev)的 macOS 用户
  • 想审计一个纯本地的工具的人:除一个本地 Unix domain socket 外零网络监听,IPC 在主进程做路径校验
  • 被旧版本坑过的 Windows 用户——0.4.4 专门修复了智能体互通和首启静默失败

可以先跳过

  • 需要受支持软件的人:徽章写着 working prototype、没有测试套件、安全修复只进 main 分支
  • 想商业再分发捆绑构建的人——LimeZu FREE VERSION 像素素材仅限非商业使用
  • 无法编译原生模块的机器,node-pty 需要 C/C++ 工具链
  • 不允许智能体在你注册的目录里写入的环境——CLI 以你的权限在你交出的目录下运行

风险与注意事项

中

对一个本地工具而言,安全设计有文档且合理;但项目仍处于原型阶段,没有测试,招牌的可视化目前由模拟事件循环驱动。

  • 没有测试套件;npm run typecheck 是明说的事实 CI 门槛
  • 头像行为当前来自 src/renderer/src/store/mockEvents.ts,而非真实 hook 事件
  • 捆绑素材为非商业许可,限制再分发
  • 安全修复只针对 main 分支,旧标签不受支持
  • 0.4.4 不得不修复曾经长期静默损坏的核心路径——Windows 消息互通与首启引导
  • 设计上本地优先:在 PTY 中启动进程、只读写注册目录、除本地 Unix domain socket 上的应用内 hook server 外不开任何网络监听,也无认证或远程面
  • 渲染进程与主进程的 IPC 走类型化 contextBridge(window.cth),nodeIntegration: false、contextIsolation: true
  • 所有 fs:* 与 git:* IPC 调用在主进程中做沙箱与路径校验,根限定在该智能体的工作目录
  • 蜂巢对本地 git 仓库的提交只有一个提交者——主进程;智能体只写普通文件
  • 真正的爆炸半径是你自己的机器和 API 配额:被包装的 CLI 以你的凭据作为真实进程运行
  • 漏洞上报走 GitHub 私有漏洞报告或邮件,官方明确不建议开公开 issue

替代方案比较

方案适用场景代价
AutoGen
想在 Python 代码里以编程方式编排多智能体,而不是用桌面壳包住手动运行的 CLI免费,MIT 协议;模型与 API 费用自理
CrewAI
想用代码定义角色化的智能体小队,快速上手 Python 编排开源;自备模型密钥
OpenHands
想要一个开源的自主软件智能体,而不是已有 CLI 的协调器开源;自备模型密钥
裸终端或 tmux
不想装任何新软件,也不需要智能体间的共享记忆与消息路由免费;现有 CLI 订阅照旧

这个趋势说明了什么

用真实 hook 事件替换模拟事件循环

头像行为目前来自 src/renderer/src/store/mockEvents.ts,CONTRIBUTING 把接入真实 Claude Code hook 事件列为头号下一个里程碑。主进程已经在一个本地 Unix domain socket 上跑了 hook server,管道其实已经有一半。

在办公楼层上跑一个 claude 会话,检查头像是响应真实工具调用,还是只跟着模拟循环走。

跨平台冒烟测试

CONTRIBUTING 称 Windows/Linux 未测试,而 changelog 说 Windows 约占下载量一半。仅 0.4.4 就修了 PTY 启动解码、返回 null 的 opencode-ai 无解释器 shim,以及让全新安装整个会话服务全灭的 bootstrapHiveServices() 提前返回。

在一台干净的 Windows 机器上装 0.4.4,不重启地完成安装向导,确认两个智能体之间消息能走通。

给启动路径补上第一批测试

项目没有测试套件,typecheck 是事实门槛。Windows 上的 bug——cmd.exe 换行截断和无法解码的编译型 shim——正是一小组覆盖 shim 解码与蜂巢提示 argv 构造的测试就能拦下的回归。

贡献一套覆盖 npm-shim 解码与 argv 构造的 vitest 测试,并写进 CONTRIBUTING.md 的 PR 清单。

下一步建议

花一个晚上,让两个 CLI 上楼层跑一次

判断 Munder Difflin 最快的方式是本地构建它,然后交给 Michael 一个需要两个智能体接力完成的真实任务。

  1. 安装 Node.js 18+、C/C++ 工具链(macOS 上 xcode-select --install),并确保 PATH 上至少有一个 CLI(如 Claude Code)
  2. git clone 仓库,执行 npm install(postinstall 会按 Electron ABI 重建 node-pty),然后 npm run dev
  3. 完成安装向导,注册一个工作目录,再添加第二个智能体(如 codex 或 grok)
  4. 交给 Michael 一个需要接力的任务,观察办公楼层,并检查每个智能体的 inbox/ 与 outbox/ 目录
  5. 在注册任何敏感目录之前,先读 SECURITY.md 的评审者说明,并检查蜂巢提交到的那个本地 git 仓库

RepoDaily 判断

这是对多智能体混乱的一次真正本地的回答:十个 CLI 的包装、只监听 Unix socket 的 hook server、沙箱化的 fs/git IPC 和单一提交者的 git 设计都真实存在且有文档。但它仍是原型——没有测试、招牌可视化背后是模拟事件循环、捆绑素材仅限非商业使用。请在你能掌控的机器上、在你本来就敢让 CLI 碰的目录里运行它。

信息来源