burns1028/moa-plus:给 DSH 加一个常驻的 Agent 协调者

前言

DSH 的理念是「一切皆插件」,但多 Agent 协作这件事,原生没有现成的协调层。通常的做法是自己开几个子会话,靠人去盯每个会话的输出、再手动汇总到项目记录里。时间一长,谁做了什么、下一步是什么、哪些结论可以复用,都散落在对话里。

moa-plus 把这件事收敛成一个插件:在主会话里放一个常驻的 Coordinator,由它派工给 Workers、跟进进度、审阅结果、维护项目知识。插件名在 GitHub 上写作 “MoA+ — Make agents work better together. Persistent Coordinator, reusable Workers and shared context for DeepSeek Harness. Unofficial rc.3 preview.”,仓库内的 README 标题则是 “Project Mode for DeepSeek Harness”,两者是同一个项目。

维护者是 Burns1028,分类为工作流。下面介绍它的能力、安装方式和使用流程。

定位与维护情况

仓库地址 https://github.com/Burns1028/moa-plus,目录页 https://www.skillhub.cn/plugins/Burns1028/moa-plus。仓库描述为非官方开发预览,当前标记版本 v0.1.23,许可证 MIT,主要语言 JavaScript,GitHub 星标 5。

插件的前提是 DSH 0.2.1-rc.3 加上仓库内列出的三个兼容扩展:

  1. Agent 本地的 tools.suppress({ deny }),含该 Agent 上注册的工具,可逆销毁。
  2. 按会话的 conversation.submission.register(sessionId, "steer"),不改动全局偏好。
  3. sidebar.workspaces.session.branch,用于原生父子行渲染,不替换工作区浏览器。

原版 rc.3 不能直接启用插件,这三个扩展是本地兼容补丁,不代表上游已接受。补丁文件与改动前后的 SHA-256 记录在 compat/rc3/manifest.json。

核心能力

官方能力表列出六项:

能力 说明
持续协调 同一个 Coordinator 会话持有项目的工作记录和下一步。
完整的 Worker 控制 派生或复用 Worker、引导当前工作、排队下发后续指令、查看状态与历史、打断或删除。
共享项目知识 Coordinator 与 Workers 共同维护索引,按需渐进加载上下文。
自动返回结果 Worker 每轮结束后自动返回完整的最终 AI 消息,交给 Coordinator 审阅。
用户直接参与 可以打开某个 Worker,自己引导它,再回到 Coordinator。
DSH 原生执行 Session、Agent Loop、工具、权限、消息投递和 Stop 都由 DSH 承担。

涉及到的分工边界:用户负责提出目标、做决定、与 Coordinator 沟通;Coordinator 负责选择和引导 Workers、供给上下文、审阅结果、维护工作记录、整理共享知识,澄清和汇总这类小事也可以由它自己完成;Worker 负责把分配的调查或执行做到底,补充可复用的发现,并以一条自包含的最终 AI 消息返回。

工具层面,Coordinator 通过 control_workers 提供 spawn、list、get、send、history、interrupt 和 delete;其中 send 区分引导当前工作的 steer 和留到当前 turn 结束后处理的 queue。

项目记忆的落盘方式

项目记录写在 .dsh/project-mode/<project-id>/ 下:

.dsh/project-mode/<project-id>/
├── notes.md                 待办、分工、进度、阻塞和下一步
├── archived.md              完成或告一段落的工作及其结果
└── context/
    ├── context.md           共享索引:文件路径和简短介绍
    ├── decisions.md         可复用的决定与依据,按需创建
    └── ...                  其他可复用的项目知识

notes.md 和 archived.md 由 Coordinator 维护。上下文是双方共同维护的:Agent 先读 context/context.md,再按当前任务读取具体文件;Workers 负责补充有复用价值的发现并更新索引,Coordinator 负责整理、合并、清理过时或重复内容。这些文件随项目积累,采用渐进式加载,不会在每次请求里全量展开。

安装与启用

首次试用推荐走独立的兼容 DSH Web 环境。需要 Node 24.9+、npm 和 Git:

git clone --branch v0.1.23 https://github.com/Burns1028/dsh-plugin-project-mode.git
cd dsh-plugin-project-mode
node scripts/project-mode.mjs setup
node scripts/project-mode.mjs start

这套命令对应仓库 README 的快速开始章节,克隆地址在 README 中即指向 dsh-plugin-project-mode,与当前仓库名 moa-plus 不一致,按原文保留,安装前建议先确认。setup 会安装锁定版本的 rc.3 运行时,并且只在 ~/.dsh-project-mode/rc3 内应用那三个扩展;不使用日常的 Desktop 应用、~/.dsh、全局 Agent 配置和工作区。启动后本地打开原生 Web 界面,配置模型、新建会话,在发送第一条消息之前把会话选为 Project。

准备完成后可以用诊断命令检查:

node scripts/project-mode.mjs doctor

如果环境已经是准备好的兼容 Desktop 或运行时,也可以走原生 CLI 安装:

dsh plugin --profile desktop add "git+https://github.com/Burns1028/dsh-plugin-project-mode.git#v0.1.23"

README 同时写明:setup 是显式执行的脚本,不是 npm 安装钩子,也不会修改已有的 Desktop 应用。手工方式打补丁时,需要显式指定备份目录:

node scripts/apply-native-compat.mjs --dry-run
node scripts/apply-native-compat.mjs --backup /absolute/path/to/native-backup

补丁脚本会拒绝未知版本、未知字节和混合状态,变更前做预检,要求显式备份,失败时回滚。没有安装或准备类的生命周期钩子,DSH 更新后需要重新做兼容性审查,不要把 rc.3 补丁盲目套到其他版本上。

典型用法

在 DSH 里完整走一遍协作流程,按 README 的使用指南:

  1. 把目标交给 Coordinator,它查看 Workers 状态和相关项目记忆,其中也包含用户在子会话里的直接操作。
  2. 它判断复用已有 Worker 还是派生新的,下发目标和上下文,然后更新 notes.md。
  3. 工作变化时,用 steer 引导当前工作,用 queue 把指令留到当前 turn 之后;打断和删除是另外的操作。
  4. Worker 每轮结束时返回最后一条完整 AI 消息;没有 AI 消息的轮次,也会报告 Worker 身份、轮次和结果状态,并返回空的 AI 结果。
  5. Coordinator 审阅结果后继续下发工作或收尾,更新工作记录和可复用上下文。正常情况下相关工作和结果接收完成后,在同一个原生 Coordinator turn 内收口。

界面侧的操作:在原生工作区侧栏展开 Coordinator 可以看到它的 Workers;点击主会话里的 Worker 胶囊进入子会话,输入框里有返回 Coordinator 的 Back,沿用原生派生权限,没有独立的权限选择器。右侧默认同时打开 Workers 和 notes.md 两个标签,Workers 标签按时间倒序展示每轮的原始输入、最终 AI 输出和记录的产物,正文默认最多显示两行,点击可展开完整 Markdown;两个标签都可以关闭。Stop 保持可用,不会自动停住所有 Workers。

README 另附了一个可复现的 CLI 示例任务:Exporter 实现标题排序并补测试,Docs 维护使用说明,Coordinator 审阅两边结果;用户进入 Exporter 会话更改排序要求后,由 Coordinator 接回变化,下一轮复用同样的 Workers 和共享上下文。文档称该示例最终通过了 9 项真实测试,等待过程经过剪辑并做了标注,不构成「60 秒完成」的表述。

适用场景与注意

适合想把一个中等规模项目的多 Agent 协作固定下来的人:用一个常驻协调者管派工、跟进、记录和知识沉淀,而不是每次都手动开子会话再人工汇总。也适合想在自己的 DSH 环境上验证多 Agent 协调模型、能接受预览版状态的开发者。

几个前提需要一并接受:

  • 插件以当前 DSH 进程的权限运行。Worker 的派生沿用 DSH 原生派生权限,凭据与工具权限范围与宿主进程一致,安装前请先审阅源码与许可证(MIT)以及 compat/rc3/ 下的补丁清单,确认自己能接受运行时被改动。
  • 它是非官方的开发者预览版,只面向 DSH 0.2.1-rc.3,依赖本仓库内的三个本地兼容扩展;原版 rc.3 无法直接启用,DSH 一旦升级,插件兼容性需要重新确认。
  • 分工由模型判断,预览版不保证每次都作出理想选择,也不会用任务关键词、命令次数或时间阈值强迫派发。
  • 用法和产物(notes.md、archived.md、context/ 里的索引)是项目内约定,团队使用前要先把这套记录格式对齐。
  • 生态背景:目录站是独立的社区站点,与 DeepSeek / 幻方没有官方从属关系,这个插件也不是官方应用。

结尾

这个插件的价值在于把多 Agent 项目里分散的协调工作收敛到一个常驻的 Coordinator 上,配上 Worker 控制、共享上下文和落盘的项目记忆,让「一个项目、一支持续工作的团队」成立。若只是想先试效果,按上面的独立 Web 环境流程走一遍 setup + start 成本最低。

目录页:https://www.skillhub.cn/plugins/Burns1028/moa-plus
仓库:https://github.com/Burns1028/moa-plus

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜