Munder Difflin 代理框架,用于运行你的克隆体办公室。免费、开源且高性能——一个多代理框架,可与您已付费的订阅配合使用,并遵循其小时限额。它将您已在运行的终端编码 CLI 转变为一个您的克隆体,一个在您离开时持续工作、并在您自己的机器上协调整个代理办公室的克隆体。它封装了 Claude Code、Antigravity (Gemini)、OpenAI Codex、xAI Grok、Kimi Code、Qwen、OpenCode、Crush、pi.dev 和 GitHub Copilot CLI——支持自带密钥和本地 LLM。代理可以发送消息、路由和记忆,由您的克隆体(Michael)协调,并以化身形式在共享的办公楼层中可视化呈现。Electron · React · TypeScript · Pixi.js · xterm.js · node-pty
注意:世界上最优秀的代理。世界上最差劲的造纸公司。
Munder Difflin 将您已经在运行的终端代理 CLI——claude、agy、codex、grok、kimi、qwen、opencode、crush、pi 和 copilot——转变为一个自我协调的团队:每个代理都拥有长期记忆、一个邮箱,以及在 2D 办公楼层中的一张办公桌——而您的克隆体(Michael)会在您观看的同时在它们之间路由工作。他是楼层的老板;您仍然是他的老板。
目录
- 它是什么
- 工作原理
- 功能特性
- 快速开始
- 架构
- 项目结构
- 设计系统
- 路线图
- 贡献
- 遥测
- 许可证
- 致谢
它是什么
Munder Difflin 是一款桌面应用,它将真实的终端代理 CLI 封装为功能完备的代理,将它们连接到集体智能中,并让您的克隆体——Michael——负责管理。Michael 是您为完成任务而与之交谈的唯一代理。在底层,它运行着世界上最快的记忆层,因此每个代理都能记住所学内容并即时回忆。
每个终端都是一个代理。 每个 claude、agy、codex、grok、kimi、qwen、opencode、crush、pi、copilot 或自定义会话都作为伪终端(node-pty)中的真实进程运行,逐字节真实,并使用 xterm.js 渲染。
每个代理都是一个化身。 会话以角色形式出现在 Pixi.js 办公楼层上——它们在工作时走到工作站,当它们互相发送消息时,信封会在办公桌之间飞来飞去。
集体智能协调它们。 代理读取它们的记忆并清空邮箱;路由器在收件箱之间移动消息;GOD 代理仅在需要您时才进行裁决、分配和升级。
即时记忆。 一个以 Markdown 为先的记忆层,带有语义召回索引,意味着代理可以跨会话记忆并在毫秒内回忆。
工作原理
您 ── 交谈 ──► ┌─────────────────┐
│ GOD 代理 │ 编排器 / 监督者
│ (Michael 的 │ 名册 · 路由 · 裁决
│ 办公室) │ 黑板 · 任务账本
└────────┬────────┘
│ 分配 · 路由 · 升级
┌───────────────┼────────────────┐
▼ ▼ ▼
┌────────────┐ ┌────────────┐ ┌────────────┐
│ 代理 A │消息│ 代理 B │消息│ 代理 C │
│ 提供商 │───►│ 提供商 │───►│ 提供商 │
│ + 记忆 │ │ + 记忆 │ │ + 记忆 │
└────────────┘ └────────────┘ └────────────┘
└────────── 共享蜂巢:记忆 · 邮箱 · 黑板 · 日志 ──────────┘
您生成代理——每个代理都是一个普通的终端进程(claude、agy、codex 或自定义),拥有自己的工作目录、身份和特定提供商的生存周期。代理通过蜂巢(一个包含普通文件的本地 git 仓库)进行协作。它们写入自己的 outbox/;框架的路由器将消息投递到接收者的 inbox/。任何代理都不会接触 git(单一提交者设计避免了 index.lock 损坏)。
GOD 代理负责管理整个楼层——它读取每个请求,自行解决常规请求(保持系统完全自主),并且仅将关键事项(支出、破坏性操作、范围变更)升级到您处理的审批队列中。
一切皆可见——您可以观看化身移动、信封飞舞以及实时终端流;您可以向任何会话输入内容、浏览其文件并阅读其 git 历史。
有关完整的多代理设计,请参阅 HIVE.md;有关终端/事件平面,请参阅 SPEC.md;有关视觉系统,请参阅 DESIGN.md。
功能特性
办公楼层
- 每个终端都是一个真实的代理。 Claude Code、Antigravity (Gemini)、OpenAI Codex、xAI Grok、Kimi Code、Qwen、OpenCode、Crush、pi.dev、GitHub Copilot CLI 或自定义命令——每个都在自己的
node-ptyPTY 中运行,并使用 xterm.js 渲染。 - 每个代理都是一个化身。 一个 Pixi.js 办公楼层,代理在其中走向工作站,信封在办公桌间飞舞,化身状态反映真实工作。
- 一个您可以与之交谈的 GOD 编排器。 它路由任务、裁决流量,并且仅升级需要人工处理的事项。或者按下“交谈”按钮,通过语音管理整个楼层。
- 每个代理独立的 git worktree。 可选的隔离机制,确保并行代理永远不会在分支上冲突。
- 蜂巢——每个代理的记忆、原子文件邮箱、共享黑板、仅追加的事件日志、单一提交者 git。
- 语义召回——将 Markdown 记忆挖掘到共享的“记忆宫殿”中,可从 UI 搜索,并具有压缩机制,因此不会无限增长。
- 企业知识图谱——您自己的文档和策略,任何代理都可查询。
- 人工门控——支出、范围和破坏性操作会升级到您处理。
- 运行中转向或优雅停止。
- 断路器——针对循环、错误风暴或超出预算的代理,提供“转向 → 约束 → 停止”的阶梯式机制。
- 预算与遥测——每个代理的令牌预算、来自转录的真实成本、持久化账本、OTel 跨度以及工具瀑布流。
- 看板任务,支持依赖关系。
- 定时任务 + 心跳检测。
- 实时舰队监控。
- 记忆搜索。
- 活动日志。
- CI 监视器。
- 每个代理在 Claude Code、OpenCode 和 Codex 中已经可以执行的操作。
- 另外还有 227 个可浏览的目录,支持搜索、筛选、安装和卸载。
- 文件树、编辑器标签页、保存。
- 以及
CHANGES·HISTORY·COMPAREgit 轨道,包含提交图、差异、分支比较和受保护的检出。 - 所有 fs/git 访问均通过主进程代理。
- Slack 与 Webhooks——向频道发送消息或 POST 一个 webhook;Michael 可以生成一个临时工作代理,在线程中回复,并在完成后将其拆除。