将已有 AI 编程 CLI(Claude Code、Gemini、Codex 等)整合为自协调的多 Agent 团队,每个 Agent 有长期记忆和独立工作空间,在 2D 办公室可视化界面中协作。
免费、开源、高性能——一个多智能体工具,可与你已订阅服务的小时限额配合使用。它把你已在终端运行的编程 CLI 变成一个你的克隆体,在你离开时继续工作,并在你自己的机器上协调整个智能体办公室。
它封装了 Claude Code、Antigravity(Gemini)、OpenAI Codex、xAI Grok、Kimi Code、Qwen、OpenCode、Crush、pi.dev 和 GitHub Copilot CLI——支持自带密钥和本地 LLM。智能体之间可以发消息、路由和记忆,由你的克隆体(Michael)协调,并在共享办公室 floor 上以头像形式可视化工作。
Electron · React · TypeScript · Pixi.js · xterm.js · node-pty
世界最好的智能体。世界最差的造纸公司。Munder Difflin 把你已在运行的终端智能体 CLI——claude、agy、codex、grok、kimi、qwen、opencode、crush、pi 和 copilot——转变为一个自我协调的团队:每个智能体都有长期记忆、一个邮箱和 2D 办公室 floor 上的一张办公桌——而你的克隆体(Michael)在你观看的同时路由他们之间的工作。他是 floor 上的老板;而你仍然是他之上的老板。
Munder Difflin 是一个桌面应用,它将真正的终端智能体 CLI 封装为完全能力的智能体,将它们接入一个蜂巢思维,并让你的克隆体负责——Michael,这个你与之对话以完成任务的智能体。它在底层运行世界上最快的记忆层,让每个智能体记住它学到的东西并即时回忆。
每个终端都是一个智能体。每个 claude、agy、codex、grok、kimi、qwen、opencode、crush、pi、copilot 或自定义会话都作为一个真实进程运行在伪终端(node-pty)中,逐字节真实地由 xterm.js 渲染。
每个智能体都是一个头像。会话作为角色出现在 Pixi.js 办公室 floor 上——他们在工作时走向各个站点,信封在他们互相发消息时从一张桌子飞到另一张。
蜂巢协调它们。智能体读取它们的记忆并清空邮箱;路由器在收件箱之间移动消息;GOD 智能体仅在需要时才裁决、分配和升级给你。
即时记忆。基于 markdown 的记忆层,带有语义召回索引,意味着智能体跨会话记忆并在毫秒内召回。
you ── talk to ──► ┌─────────────┐
│ GOD agent │ orchestrator / supervisor
│ (Michael's │ roster · routing · adjudication
│ office) │ blackboard · task ledger
└──────┬──────┘
│ assigns · routes · escalates
┌────────────────────────┼────────────────────────┐
▼ ▼ ▼
┌───────────┐ ┌───────────┐ ┌───────────┐
│ agent A │ message │ agent B │ message │ agent C │
│ provider │ ─────────► │ provider │ ─────────► │ provider │
│ + memory │ │ + memory │ │ + memory │
└───────────┘ └───────────┘ └───────────┘
└──────── shared hive: memory · mailbox · blackboard · log ───────┘
你生成智能体——每个都是一个普通终端进程(claude、agy、codex 或自定义),拥有自己的工作目录、身份和特定提供商的生命周期。
智能体通过蜂巢协作——一个纯文件的本地 git 仓库。它们写入自己的 outbox/;工具的路由器投送到收件人的 inbox/。没有任何智能体会触碰 git(单提交者设计避免了 index.lock 损坏)。
GOD 智能体运行 floor——它读取每个请求,自行解决常规请求(保持系统完全自主),仅将关键项目(支出、破坏性操作、范围变更)升级到你操作的审批队列。
一切皆可见——你观看头像移动、信封飞行和实时终端流;你可以回打字到任何会话,浏览其文件,并读取其 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-pty PTY 中,由 xterm.js 渲染。
每个智能体都是一个头像。一个 Pixi.js 办公室 floor,智能体走向工作站,信封 desk 到 desk 飞行,头像状态反映真实工作。
一个你与之对话的 GOD 编排器。它路由任务、裁决流量,仅升级需要人工处理的事项。或者按下 Talk 用语音运行 floor。
每个智能体独立的 git 工作树。可选隔离,让并行智能体永不在分支上冲突。
记忆与协调
蜂巢——每个智能体的记忆、原子文件邮箱、共享黑板、追加写事件日志、单提交者 git。
语义召回——将 markdown 记忆挖掘到共享宫殿中,可从 UI 搜索,带压缩所以不会永远增长。
企业知识图谱——你自己的文档和策略,任何智能体都可查询。
人工门控——支出、范围和破坏性操作升级给你。中途引导或优雅停止。
熔断器——一个 steer → constrain → stop 阶梯,适用于循环、报错风暴或超出预算的智能体。
预算与遥测——每个智能体的 token 预算、来自转录的真实成本、持久账本、OTel spans 和工具瀑布。
看板任务带依赖、计划任务 + 心跳、实时集群监控、记忆搜索、活动日志和 CI 监视器。
技能——每个智能体在 Claude Code、OpenCode 和 Codex 上已能做什么,外加 227 个以上可搜索的技能目录,支持筛选、安装和卸载。
内置 Monaco IDE——文件树、编辑器标签页、保存,加上 CHANGES · HISTORY · COMPARE git 轨道,带提交图 diff、分支比较和受保护的 checkout。所有 fs/git 访问通过 main 代理。
工作输入输出
Slack 和 webhooks——发消息到频道或 POST webhook;Michael 可以生成临时 worker、线程内回复并拆除。
可分享的招聘 + 智能体画廊——从 munderdifflin://hire 链接导入角色;导入仅预填充表单,仍由人类生成。浏览智能体画廊。
自带密钥 + 本地 LLM——提供商密钥写入专用密钥代理,外加 Ollama / LM Studio / vLLM 基础 URL。指南:开放模型 · Mac Mini。
自动更新——新版本在后台下载;你点击重启,版本说明作为设计好的页面到达,而非版本号。
前置条件——一个设置页面,显示你已有哪些支持工具(uv、git、Node、MemPalace、每个智能体 CLI),每个的用途,以及一个让 Michael 安装缺失项的按钮。
Status: v0.4.4 — Windows 智能体终于可以互相通信了。在 Windows 上,智能体之前并不知道它们可以互相发送消息:协议以多行命令行参数的形式到达它们,而 cmd.exe 在第一个换行符处就截断了它。它们启动后看起来很健康,然后永远互相忽略对方。如果你在 Windows 上尝试 Munder Difflin,而你的团队只是坐在那里不动,那就是这个 bug。其它修复:全新安装现在会启动自己的消息路由器,而不是等待重启;安装向导可以完成了;暗黑模式已重新构建以提升可读性。本版本新功能:Skills、Prerequisites 以及拥有独立页面的发布说明。如果你正在使用 0.3.8,请更新:该版本的使用限制护栏从未释放它持有的智能体,现已完全移除。macOS(已签名并公证)、Windows 和 Linux 构建版本均在发布页面。
macOS、Windows 或 Linux。
用于 node-pty 原生插件的 C/C++ 工具链 — 在 macOS 上,安装 Xcode Command Line Tools:
xcode-select --install
PATH 上至少有一个支持的智能体 CLI — Claude Code(claude,默认)、Antigravity(agy)、OpenAI Codex(codex)、xAI Grok(grok)、Kimi Code(kimi)、Qwen(qwen)、OpenCode(opencode)、Crush(crush)、pi.dev(pi)或 GitHub Copilot(copilot)。大多数缺失的 CLI 会自我修复:harness 在终端中运行安装程序,然后继续使用新二进制文件。
可选:在 Settings → AI Engines 中配置你自己的 API 密钥和本地 LLM(Ollama / LM Studio / vLLM)。
可选:用于跨会话即时召回的语义记忆索引 — markdown 记忆无需它也可工作。
git clone https://github.com/chaitanyagiri/munder-difflin.git
cd munder-difflin
npm install # postinstall 重建 node-pty 以适配 Electron ABI
npm run dev # 启动 Electron 应用并启用热重载
首次启动时会进入引导向导,然后到达工作区。使用 Add agent 生成你的第一个会话 — GOD 智能体会自动坐在 Michael 的办公室里。
npm run build # 通过 electron-vite 构建生产版本
npm run preview # 预览生产构建
npm run typecheck # 类型检查 node(main/preload)和 web(renderer)项目
如果 Electron 升级后 node-pty 加载失败,请重新运行 npm install(postinstall hook 会在当前 Electron ABI 上运行 electron-rebuild)。
两个数据层供一个渲染器使用:
┌───────────────────────────────────────────────────────────────┐
│ Electron Renderer (React) │
│ ┌──────────────────┐ ┌──────────────────────────────┐ │
│ │ Office Floor │ │ Terminal + Command Bar │ │
│ │ (Pixi.js) │ │ Files + Git tabs (xterm.js) │ │
│ └─────────▲────────┘ └────────────▲─────────────────┘ │
│ │ avatar state │ pty bytes / fs / git │
└─────────────┼──────────────────────────┼───────────────────────┘
│ IPC (contextBridge: window.cth)
┌──────┴──────────┐ ┌──────┴─────────────┐
│ Event Plane │ │ Terminal Plane │
│ hooks / hive │ │ node-pty PTYs │
│ router + GOD │ │ + fs + git │
└────────▲────────┘ └──────▲─────────────┘
│ hook payloads │ stdin / stdout
└─────────┬──────────────┘
┌──────┴──────────────┐
│ claude / agy / codex│
└─────────────────────┘
Terminal plane。主进程拥有一个 PtyManager,为每个智能体作为 node-pty 进程生成,并通过 per-id IPC(pty:data:<id>)流式传输输出。渲染器仅通过类型化的 window.cth 桥接通信(src/preload/index.ts),它也暴露了沙盒化的文件系统和 git 辅助函数。
Hive / event plane。hive.ts 是磁盘上的多智能体层;hooks.ts 运行 hook 服务器,提供方桥接将生命周期负载 POST 到其中(cth-hook 用于 Claude Code,agy-hook 用于 Antigravity)。memory.ts 包装语义记忆 CLI。路由器传递消息、排空提供方发件箱、GOD 智能体进行裁决,idle/inbox 唤醒使工作进程持续处理邮件。
src/
main/ Electron 主进程 (Node)
index.ts 窗口、IPC 处理器、退出守卫
pty.ts node-pty 管理器(spawn/write/resize/kill/stream)
hive.ts 磁盘上的多智能体层(memory、mailboxes、router)
hooks.ts hook 服务器 + 提供方 hook 垫片(`cth-hook`、`agy-hook`)
memory.ts 语义记忆层(CLI 封装、降级到 noop)
config.ts harness 配置持久化 + home 设置
transcript.ts 读取 ~/.claude/projects/ JSONL 转录本用于真实 token/成本遥测
telemetry.ts 实时 OTel 收集器 + 用于可观测性的使用量/成本反馈
usage.ts / pricing.ts UsageProvider 接缝 + 按模型成本归属
breaker.ts / control.ts 成本/失控熔断器(steer/constrain/stop)+ HITL 门控 / steer / stop
reflect.ts MemoryReflector — 记忆凝聚
db.ts SQLite 持久存储(窗口边界 + 历史)+ 持久成本账本
github.ts 通过 gh CLI 摄入 GitHub issue + CI 运行
shellEnv.ts 解析子进程的 PATH 和 shell 环境
fs.ts / git.ts 沙盒化文件系统 + git 桥接
preload/ contextBridge → 类型化的 window.cth API
renderer/src/
App.tsx 顶层布局 + 接线
design/ tokens.css / tokens.ts / global.css(设计事实来源)
components/ PixelPanel、AgentDetailPanel、CommandBar、ApprovalsPanel、MemoryPanel、…
CommandCenterPanel, Michael 的控制台(Terminal/Floor/Memory/Activity/Tasks/Triggers/Handbook 标签页)
ToolWaterfall, 用于可观测性视图的每个智能体工具跨度瀑布图
TasksKanban, 依赖感知的看板面板(Tasks 标签页)
ThreadsPanel, hive 消息对话查看器(Messages 标签页)
MessageQueueComposer, 为忙碌的智能体存放消息
scene/office/ Pixi 办公室楼层:OfficeFloor、Character、Camera、cast、pathfinding、…
store/ · hooks/ zustand store、事件循环、PTY 解析器、打字机
assets/ 瓦片集、地图、角色表(见 ATTRIBUTION.md)
docs/ `logo.png`、`banner.png`、落地页(GitHub Pages → munderdiffl.in)
docs/media/ `og.png`(社交预览)+ 渲染后的 Remotion 片段
landing-remont/ Remotion 项目,渲染落地页的"工作原理"片段
HIVE.md · SPEC.md · DESIGN.md 多智能体 · 终端/事件 · 视觉设计
docs/message-queue.md 谁可以在什么时候向智能体终端输入内容
审美风格是 Animal Crossing × Earthbound × SNES 菜单界面 — 像素对齐、粗犷、友好。DESIGN.md 是权威文档;每个组件都从其设计 token 派生。Munder Difflin 品牌在 Dunder-Mifflin 栗色(#6E14223)和金色(#F4D35E)上叠加,用于 logo 和边框。15 个头像是《办公室》的演员阵容,通过头发/皮肤/衬衫的组合来区分。
截至 v0.4.3 已交付 — 十个智能体引擎,支持自带密钥和本地 LLM、语音编排、hive(记忆 · 邮箱 · 黑板 · 事件日志)、带有看板和日程表的命令中心、内置 Monaco IDE 及 git 护栏、集成注册表 + 密钥经纪人、Slack 催生的 worker、可分享的高分辨率图像和智能体画廊、可观测性和熔断器、持久化持久化、会话恢复、多窗口楼层以及可用的自动更新。完整历史记录见 CHANGELOG.md。
更多聊天集成 — Telegram 和更丰富的聊天桥接,将频道接入 Michael 的队列并路由回复出去。
更多引擎和集成模板 — 持续扩展引擎阵容和集成注册表。
更完整头像覆盖 — 完全从真实 hook 事件驱动剩余的工作站访问和工具气泡。
持久的布局和命令历史 — 将持久化扩展到智能体布局和每个会话的历史。
欢迎贡献 — 这是一个早期原型,有很多可探索的方向。从 CONTRIBUTING.md 开始。简而言之:fork、npm install && npm run dev、保持 npm run typecheck 绿色,并从 DESIGN.md token 派生任何新 UI。好的入门领域:接入真实 hook 事件、add-agent 流程、配置抽屉和跨平台工作。
官方构建会发送一小套匿名使用事件(应用打开、智能体生成、功能使用)— 绝不包括提示词、代码、文件路径或智能体输出。完整事件列表、匿名保证和三种退出方式(Settings 开关、DO_NOT_TRACK 或从源码构建 — fork 编译时无密钥,不发送任何内容)在 TELEMETRY.md 中有文档说明。
资产许可。捆绑的像素艺术(图块集、地图以及《办公室》角色所基于的底版角色表)来自 LimeZu(经由 shahar061/the-office),采用 LimeZu FREE VERSION 许可协议——仅限非商业用途。重着色后的精灵继承该限制。见 src/renderer/src/assets/ATTRIBUTION.md。如需商业化,请替换这些资产或购买 LimeZu 付费许可。
源代码采用 MIT 许可——见 LICENSE。MIT 授权仅涵盖代码;上述非商业资产限制在 LICENSE 范围说明中已明确排除。Munder Difflin 是一部温馨的恶搞作品,与 NBC 的《The Office》或 Dunder Mifflin 没有关联。
LimeZu — 像素艺术图块集与角色底版表。
shahar061/the-office — 办公室图块集/地图的 vendoring 来源。
Pixi.js · xterm.js · node-pty · electron-vite · CodeMirror — 本项目所基于的依赖库。
Remotion — 着陆页动画"工作原理"演示片段(landing-remotion/)。
The Office (US) — 为 Munder Difflin, Inc. 提供灵感。