Munder Difflin:把多个 Agent 变成一间可管理的办公室

拆解 Munder Difflin 的终端 Agent、邮箱、记忆、任务账本、审批队列、预算和熔断机制,说明像素办公室背后真正值得学习的多 Agent 协作设计。

内容更新 2026-08-29

先看结论

多 Agent 的难点不是同时打开几个终端,而是让任务有所有者、消息有队列、状态能恢复、高风险动作有人审、失控时能停。

值得借鉴的系统结构

  • 终端层:每个 Claude Code、Codex、Kimi Code、Gemini CLI 或自定义命令运行在独立终端会话中。
  • 协作层:每个 Agent 有自己的 memory、inbox 和 outbox,共享 blackboard、task ledger 与事件日志。
  • 路由层:路由器负责投递消息,GOD Agent 负责分派、裁决和必要时升级给真人。
  • 控制层:预算、成本账本、运行状态、工具调用瀑布和熔断器共同防止循环与失控。
  • 展示层:Pixi.js 像素办公室把终端、消息和状态转成可视化,但不应成为系统真实状态的唯一来源。

不装项目也能先做的最小版本

  1. 建立一个任务表:任务 ID、负责人、输入、允许修改范围、完成条件、当前状态。
  2. 为每个 Agent 建独立工作目录或 worktree,并指定唯一集成者。
  3. 用文件或数据库保存消息和状态,写入必须原子化,重试必须幂等。
  4. 增加审批清单:花费、删除、生产变更、发消息、权限扩大一律等待真人。
  5. 每轮结束保存测试结果和未验证项,下一轮先恢复事实,不把旧会话状态当成当前状态。

成熟度、遥测和许可证

  • 仓库当前支持多种终端 Agent,并持续快速更新;实际支持列表、安装包和依赖以当前 README 与 release 为准。
  • README 说明官方构建会发送少量匿名使用事件,不包含提示词、代码、文件路径或 Agent 输出;仍应先阅读当前遥测说明。
  • 源代码采用 MIT 许可证,但捆绑的 LimeZu 像素素材有单独许可证和署名要求,不能把整套资产简单视为 MIT。
  • 接入 Slack、webhook、语音或真实 Agent CLI 会增加外部副作用;只在明确授权、独立凭据和可审计环境中启用。

参考来源

适合谁看

  • 同时使用 Codex、Claude Code、Kimi Code 或其他终端 Agent
  • 多个 Agent 并行后不知道谁在做什么、谁卡住了
  • 需要给花费、破坏性操作和范围变化增加人工审批

操作步骤

  1. 先画出任务所有权:每个 Agent 负责什么目录、输出和验收,不要只写角色名称
  2. 把 Agent 间消息放进有入箱、出箱和投递状态的队列,不靠不可追踪的临时聊天
  3. 为任务保存状态、依赖和完成证据;并行修改代码时使用隔离 worktree 或等价隔离
  4. 把花费、删除、覆盖、外部消息和范围扩大列为人工审批动作
  5. 设置预算、超时和 steer → constrain → stop 的熔断梯度,再评估是否需要完整图形工作台

需要解决的问题

  • 多个终端窗口同时运行,但任务重复、互相覆盖或没人收尾
  • Agent 之间靠手工复制消息,历史和责任边界说不清
  • 长任务循环报错或持续消耗额度,却没有预算和停止机制

先理解这些

  • Munder Difflin 把每个终端会话视为独立 Agent,并为其增加邮箱、记忆、共享黑板和任务账本
  • GOD Agent 负责接收、分派和裁决;花费、破坏性操作和范围变化进入人工审批队列
  • 像素办公室只是状态展示层,真正的系统价值在路由、持久状态、单一提交者、预算和熔断

遇到困难时

  • 只有两个短任务时,先用任务卡和两个隔离 worktree,不必安装完整多 Agent 桌面应用
  • Agent 经常互相覆盖时,先减少并发并指定单一集成者,而不是继续增加 Agent
  • 成本数据不完整时保持未知,不把缺失用量当作零,也不要自动放行下一轮任务