munder-difflin
HarnessMD/munder-difflin加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
图1:多 agent 共享的「办公室地板」界面
深夜 11 点,代码库里还有一堆待办。你开了三个终端,分别跑着 Claude Code、Codex 和 Gemini CLI,每个都在干不同的活。然后你意识到——你必须同时盯着三个窗口,否则根本不知道谁卡在哪一步、谁在等你的输入。这就是当前 AI 编程工具的现状:每个 agent 都很强,但没有人在管整个房间。
Munder Difflin 就是来解决这个问题的。它把多个 AI 编程 agent 装进同一个桌面应用里,给它们分配工位、邮箱、共享记忆,还有一个叫 Michael 的"老板 agent"统一协调。
项目由 Chaitanya Giri 开发,仓库原名 chaitanyagiri/munder-difflin,后迁移到 HarnessMD/munder-difflin 组织下,目前 9300 余 star、1300 余 fork,采用 MIT 许可。名字致敬了《Howard Works》中那间纸片人办公室 Munder Difflin——一群纸片人在纸上开会、争论、干活;这里换成了 AI agent 在你的机器上开会。
它的核心主张很直接:你已经在付费订阅里养着的那些终端编码 CLI,本身就是最强的 agent,不要再包一层。 Munder Difflin 把它做成可长期驻留、可互相通信的"员工",并让你复用已有的订阅额度,而不是自己再去接一遍模型 API。
Munder Difflin 是一个 Electron 桌面应用,技术栈是 Electron + React 18 + TypeScript + Pixi.js,主进程用 node-pty 拉起真实的 CLI 进程,用 xterm.js 渲染终端,用 better-sqlite3 落盘状态,用 Zustand 管渲染层状态,Monaco / CodeMirror 承担编辑器。渲染层用 Pixi.js 画出一张"办公室地板",每个 agent 是一个有头像、有工位的小人,运行状态实时可见。
架构上是终端平面 + 事件平面双层:终端平面负责 pty 会话与流式输出,事件平面跑 hive(多 agent 协调核心)、hook 服务和路由。主进程 53 个模块,src/shared/ 另有 34 个跨进程共享模块。
接入的 agent 相当杂:Claude Code、Antigravity(Gemini)、OpenAI Codex、xAI Grok、Kimi Code、Gemini CLI、Qwen、OpenCode、Crush、pi.dev、GitHub Copilot CLI、Cursor 都能纳管,既支持自带密钥也支持本地模型。
图2:agent 之间互相派活与路由
MEMORY_GRAPH_SPEC.md)src/main/skills.ts,可给 agent 挂载技能src/main/ 放 Electron 主进程(pty.ts、hive.ts、hooks.ts、memory.ts、db.ts、telemetry.ts、costLifetime.ts 等),src/preload/ 用 contextBridge 暴露 API,src/renderer/src/ 是 React 组件加 Pixi.js 可视化,src/shared/ 是主进程与渲染层共用的类型与目录(模型目录、工具目录、MCP 目录、集成注册表等)。
质量工程相当扎实:test/ 目录下有数百个 .test.cjs 单元测试(node --test),CI 跑 typecheck(主进程与 Web 双 tsconfig)、PR evidence 流程和发布流程;文档体系包含 README、docs/ARCHITECTURE.md、DESIGN.md、HIVE.md、SPEC.md、CHANGELOG.md,还有 12 万字符的 CHANGELOG。
图3:官方 Release 提供多平台预编译安装包
因为是 Electron 桌面应用,部署门槛比 Web 服务低:下载官方 Release 的安装包,双击即用,不需要容器,也不需要 Docker。
前置依赖是 Node.js 20+、npm、Git,以及至少一个你要纳管的 CLI 工具——这一步是真正的门槛:你得先装好 Claude Code 或 Codex 并完成各自的登录授权,应用才能把它们拉起来。源码安装路径是 npm install && npm run dev(注意 postinstall 会执行 electron-rebuild 与 node-pty 的 conpty 补丁,在 Windows 上容易踩坑)。
硬件需求很低:4GB 内存、1GB 磁盘、无需 GPU。官方还提供 Teams 模式与 Pro 版 marketplace(宣称可接入 2300+ MCP 服务器与技能)。
最需要说明的是数据边界。项目自述跨机器通信使用 X25519 + XChaCha20 + Ed25519 的端到端加密,但这一套在仓库里的落点主要是官网展示页(tools/landing-story/body.html)的文案与产品叙事,src/ 目录下并未检索到对应的加密实现(源码中实际出现的是 Electron safeStorage 静态加密,用于存放集成服务的密钥)。也就是说,官网展示的密封消息盒目前更接近产品愿景而非已落地的代码路径,评估跨机协作安全性时应据此打折。
其次,遥测并非零:项目有独立的 TELEMETRY.md 与 src/main/analytics.ts,发送匿名使用事件(app_version、os、arch、首次运行、启动、更新等),虽为硬白名单且提供设置开关与 DO_NOT_TRACK 环境变量可完全关闭,但「local-first」不等于「零外发」。
最后,成熟度上:v0.5.x 仍在快速迭代,open issues 数百条,功能覆盖很宽但每条链路都谈不上收敛;把多个 agent 放进同一个进程树也意味着任何一个 agent 卡死都可能影响整间"办公室"。
图4:v0.5.x 的功能演进方向
Munder Difflin 指向一个正在成型的方向:AI 编码工具从单体助手走向可编排的团队。当每个 CLI agent 都足够强,瓶颈就从"能力"变成了"协调"——谁该做什么、进度到哪、上下文怎么共享、成本花在哪。Munder Difflin 用一个桌面应用把这些问题聚合成一个可视化界面,是 agent harness / agent office 这条赛道的早期代表作品。