前言¶
在 DeepSeek Harness(DSH)里用实验性 Agent Teams 做多工蜂协作时,常见问题很具体:子会话一多就失控、spawn_teammate 没有任务级上限;工蜂上下文顶满后需要人工换人;主会话里的人类指令要等 Lead 转述才能到全体;进度散落在多个窗口里,收尾时还要自己找产出文件。
Mission Control(dsh_mission-control)是社区维护者 Psychologist-jpg 发布的工作流类插件(当前 GitHub 星标为 0),在 Agent Teams 之上补上「任务(Mission)」这一层:人数上限、上下文哨兵自动交接、驾驶舱广播、蜂巢模式 UI,以及按主会话独立的实时进度悬浮窗。宿主侧完成检测与轮询,README 明确说明不消耗各会话的模型 token。
这是什么¶
插件 npm 包名为 @local/mission-control,版本 1.5.2,MIT 许可证。定位一句话:DeepSeek Harness 的 Agent Teams 任务驾驶舱——任务级人数上限、上下文哨兵自动交接、驾驶舱广播与实时进度悬浮窗。
它让一个 Lead 主会话把多名工蜂组织成一场任务:头部可一键开蜂巢模式并锁定人数;运行中测量各工蜂上下文压力并在将满时自动续任;人类在主会话发出的消息可即时扇出给存活工蜂;进度集中在可拖动、可折叠的悬浮窗;结束时可收集结果文件、归档子会话并提示 Lead 汇总。
强依赖 @deepseek-ai/dsh-experimental-agent-team(agentTeams 等服务)与 @deepseek-ai/cordis;采用 profile 本地 link: 安装,不依赖 npm 发包。
七个工具与典型协作流¶
README 列出七个 mission_* 工具,分工如下。
| 工具 | 作用 |
|---|---|
mission_start |
声明任务目标与并发工蜂上限 workers;之后才允许创建工蜂,超限拒绝。 |
mission_scale |
按期望子会话清单「只补差额」开子会话;已存在跳过,一次配平。 |
mission_set_model |
为指定工蜂切换模型,或 revert: true 回到默认。 |
mission_image |
通过配置的图像接口出图并落盘(图像模型不走普通对话)。 |
mission_report |
工蜂自报 current / completed,供驾驶舱显示进度。 |
mission_status |
只读任务与各工蜂状态、上下文占比、当前任务。 |
mission_stop |
结束任务:清除上限并停止上下文哨兵。 |
下面介绍一种与文档一致的协调方式,Lead 侧契约由插件通过 systemPrompt 注入(有任务时才注入):
mission_start写明目标与workers上限(也可用会话头部蜂巢开关:按defaultCap建占位任务,首条人类消息可自动成为真实目标)。- 建好任务板后,用
mission_scale一次把工蜂数配平到min(待认领子任务数, 上限)。 - 工蜂执行子任务并定期
mission_report;需要全貌时 Lead 调mission_status。 - 主会话需要全体同步时直接发消息即可触发驾驶舱广播(暂停蜂巢时不向子会话下发,子会话仍可用工具继续工作)。
- 收尾:悬浮窗「结束任务」或调用结束接口链路,或
mission_stop;完整收尾会中断存活子会话、清理临时文件、归档子会话、收集产出并提示 Lead 汇总。
不必一定先调 mission_start:头部「普通 / 蜂巢 / 已暂停」开关与 2–10 人上限选择、子会话管理弹窗(归档 / 彻底删除等)与工具并行可用。关闭或暂停蜂巢后,插件会在系统提示中标注「蜂巢模式已关闭」,要求不再创建子会话、不再调用 mission_*,避免历史契约误导模型。
支撑机制(宿主侧)¶
人数上限守卫:mission_start 或头部开关设定 workers;在每次 spawn_teammate 前统计 running / provisioning 成员,超限即拒。mission_scale 受同一上限约束。
任务拆解与配平:统计待办、未认领数、现有工蜂与缺口,写入 /mission-dashboard-v2.json 的 scale 字段,悬浮窗标题栏展示工蜂数、待办与建议再开人数,并驱动 Lead / 工蜂侧提示词。
上下文哨兵与自动交接:按 pollIntervalMs 用 tokenMeter 测量占用比(分母优先会话 contextWindow,否则 fallbackContextWindow)。达到 handoffRatio 时中断成员、生成交接摘要,并以 fresh 上下文创建续任者(如 <name>-rN)。
驾驶舱广播:任务进行中,主会话 user/message 包装为 [驾驶舱广播] 扇出给当前任务全部存活工蜂;广播前过滤已归档或已删除成员。
生图策略:图像模型不支持 chat,默认 imageModelSwitch: false,出图走 mission_image;可按关键词或 mission_scale 的 image / provider / model 配置(详见下文配置表)。
实时悬浮窗:dashboard.js 每 2 秒轮询 /mission-dashboard-v2.json,每主会话一个窗口,显示配平统计、工蜂状态、上下文进度条、模型与暂停态等;「结束任务」经 POST /mission-end-v1 做完整收尾。
结束任务时(README 列举的顺序):中断存活子会话 → 按 cleanupGlobs / cleanupDirs 清临时项(不动结果文件)→ 归档存活子会话(可选 deleteSessionLogs 删日志)→ 清理孤儿归档 → 从工具调用与文件改动收集产出 → 向 Lead 投递「【蜂巢任务已结束】」汇总提示。
安装与启用¶
本插件以 profile 本地 link 安装。因 link: 不会自动安装 peer 依赖,需先把聚合包 @deepseek-ai/dsh-experimental-agent-team-profile(内含核心、工具、客户端 UI)加入 profile 的 dependencies 与 bundles。
前置 peer 依赖(package.json):
@deepseek-ai/dsh-experimental-agent-team:0.2.2-rc.1@deepseek-ai/cordis:~4.1.0
步骤:
- 将仓库放到本地(README 给出的获取方式为 clone 到本机,路径自定)。
- 编辑
~/.dsh/profiles/<profile>/package.json,加入依赖与 bundle(路径改为你的本地目录):
{
"dependencies": {
"@deepseek-ai/dsh-experimental-agent-team-profile": "0.2.2-rc.1",
"@local/mission-control": "link:C:/path/to/mission-control"
},
"dsh": {
"profile": {
"bundles": [
"@deepseek-ai/dsh-experimental-agent-team-profile",
"@local/mission-control"
]
}
}
}
- 在 profile 目录执行
pnpm install(或由 DSH 桌面端触发),重载客户端。 - 新建会话后,头部应出现蜂巢模式开关,页面出现「蜂巢任务」悬浮窗,工具列表中出现
mission_start、mission_scale、mission_report、mission_status、mission_stop等(README 列出的启用集)。
若 profile 已由其他 bundle 提供 agentTeams 等同名服务,可省略聚合包,但必须保证 agentTeams 可用。
更短的第一次上手路径见仓库内 docs/QUICKSTART.md(README 称约 5 分钟跑通一次完整蜂巢任务)。
配置¶
通过 bundle patch(cordis.patch.yml)与 index.js 的 DEFAULT_CONFIG 传入。常用项如下(默认值以 README 为准):
| 配置项 | 默认值 | 说明 |
|---|---|---|
pollIntervalMs |
15000 |
哨兵轮询间隔(毫秒,最小 2000)。 |
warnRatio |
0.65 |
预警阈值。 |
handoffRatio |
0.85 |
触发自动交接的上下文占用比。 |
defaultCap |
3 |
头部开关建任务时的默认人数上限。 |
fallbackContextWindow |
131072 |
无法读取真实窗口大小时的回退分母。 |
freshProvider |
"spawn" |
续任者 provider。 |
deleteSessionLogs |
false |
结束/删除时是否物理删除子会话日志。 |
imageModelSwitch |
false |
是否允许按关键词自动切图像模型。 |
imageModel |
"qwen-image-2.1" |
默认图像模型。 |
imageApiKeyRef |
"USTC_API_KEY" |
凭据库或环境变量中的密钥名。 |
patch 示例(节选):
- insert:
- id: mission-control
name: '@local/mission-control'
config:
pollIntervalMs: 15000
handoffRatio: 0.85
defaultCap: 3
imageModelSwitch: false
imageModel: qwen-image-2.1
imageApiKeyRef: USTC_API_KEY
生图相关还有 imageProvider、imageApiBaseUrl、imageApiSize、imageKeywords 等字段,见仓库 README 配置表。
适用场景与注意¶
适合谁:已在 DSH 启用实验性 Agent Teams、需要把「多工蜂并行 + 人类坐在主会话指挥」做成可控工作流的开发者;任务带明确子任务拆分、需要可视化进度与统一收尾时,悬浮窗与结束流水线价值更明显。
权限与安全:插件随当前 DSH profile 与进程权限运行,能读写工作区、管理子会话、调用配置的图像 API。安装前应在本地审阅 GitHub 源码 与 MIT 许可证;图像密钥通过 imageApiKeyRef 指向凭据或环境变量,勿把密钥写进可被同步的明文配置。
生态说明:DSH 主张「一切皆插件」;SkillHub 目录页 为社区收录,与 DeepSeek / 幻方无官方从属关系。本插件分类为工作流,当前目录星标为 0,选型时建议自行试用与跟版 peerDependencies 版本。
结尾¶
Mission Control 把 Agent Teams 从「能开很多子会话」推进到「有上限、有哨兵、有广播、有面板、有收尾」的任务形态;协调逻辑主要在 Host 与 UI 完成,减轻 Lead 会话的 token 负担。进一步细节(HTTP 接口全文、QUICKSTART 逐步操作)以仓库 README 与 cordis.patch.yml 为准。
- 目录页:https://www.skillhub.cn/plugins/Psychologist-jpg/dsh_mission-control
- GitHub:https://github.com/Psychologist-jpg/dsh_mission-control