DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

Commander — DSH Plugin for DeepSeek Harness
DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in
← Plugins
C

dsh-commander

Commander

Commander for the DeepSeek Harness Web GUI (harness >= 0.1.6): activate any conversation as the commander, and its model can dispatch tasks to other conversations via <dsh-dispatch> protocol blocks. The plugin parses the blocks, delivers each task to a target (or freshly created) worker session, wat

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add github:qwert702/dsh-commander#e4116163716f1f5b5ff6b4db33ee83dc21a55e20
READMECompatibilityVersions

Description

Commander for the DeepSeek Harness Web GUI (harness >= 0.1.6): activate any conversation as the commander, and its model can dispatch tasks to other conversations via <dsh-dispatch> protocol blocks. The plugin parses the blocks, delivers each task to a target (or freshly created) worker session, watches the workers, and feeds result summaries back into the commander as receipts so it keeps orchestrating.

Compatibility and provenance

Commander is published as dsh-commander and currently resolves to version 2.1.0. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
web
Release source
github
Registry updated
9/19/2026

Versions

2.1.0stable
9/19/2026
2.0.0stable
8/23/2026
0.1.0stable
8/23/2026

Related plugins

Loading related plugins…

Latest
2.1.0
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
Unavailable
Files
Unavailable
Surface
web
License
MIT
Source
github
GitHub
★ 0
Weekly downloads
0
View source ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue

Related plugins

More verified plugins in agents-orchestration.

Headless@deepseek-ai/dsh-headlessThe dsh one-shot bundle: a direct core Agent/Session runner over dsh-base with no Host, HTTP, or browser layerExperimental Agent Team Web Profile@deepseek-ai/dsh-experimental-agent-team-web-profileExperimental Web profile layer for Agent Teams Remote and UI pluginsSubagent Codex@deepseek-ai/dsh-subagent-codexOne-shot Codex subagent provider over the official app-server protocolSubagent Claude Code@deepseek-ai/dsh-subagent-claude-codeOne-shot Claude Code subagent provider over the official Agent SDK

README

dsh-commander v2.1

DeepSeek Harness Web GUI 的指挥官插件:把任意一个对话升级成「指挥官」,它的模型可以在回复里派发任务给其他对话(worker)并行执行;插件自动送达任务、监视 worker、把结果摘要以「回执」注入指挥官会话,形成无人值守的多窗口协作闭环。

v2.1 适配 harness ≥ 0.1.6:host 半区注入 llm 服务(新版沙箱 ctx 只暴露 inject 声明过的服务,此前圆桌讨论会被守卫直接拒绝);<dsh-mail> 协作提示正式接入简报与任务提示(mailHintOnDispatch);新增跨源写保护、配置写回数值钳制、registry/mailbox 写锁、git 超时与 Windows 大小写锁键、确认模式挂起批持久化、放行时并发复查、徽章计数含排队任务、以及审计遗留清单中多项修复。详见 CHANGELOG。

一键安装:

dsh plugin add qwert702/dsh-commander

装完重启 harness(dsh web)、刷新页面即可生效。会话头部会出现「成为指挥官」按钮。

功能

  • 一键激活/停用:会话头部点「成为指挥官」→ 确认后,插件把一份协议简报(指挥官规则 + 从会话列表实时生成的 worker 花名册)静默注入该会话(不触发模型回合、不烧 token);再次点击徽章可打开面板「停止指挥」。

  • 协议派发:指挥官的模型在回复中原样输出任务块,插件解析后自动执行:

    <dsh-dispatch target="#1" title="新会话标题(可选)">
    交给 worker 的完整、自包含的任务描述
    </dsh-dispatch>
    
    • target 填花名册别名(#1)或完整会话 id;省略则自动新建 worker 会话(继承指挥官工作目录,并自动标注 [T3] 任务摘要… 式侧边栏标题;有 title 则以 title 为准)。
    • 广播派发:target="#1,#2" 同一任务发给多个 worker 并行;target="all" 发给花名册全部会话。
    • 上下文继承:fork="commander"(或 fork="<会话id>")配合省略 target 时改走会话分叉——新 worker 天然携带源会话的全部背景,任务文本不必再自包含(代价:继承前缀消耗更多 token)。
    • 依赖编排:块可带 tid="a" 命名自己;另一块 depends="a,b" 会等这些前序任务全部完成后才派发,任一前序失败则连锁取消(fail-fast)。
    • 一次回复可含多个块,逐个送达。
  • 同 worker 串行化:引擎按 worker 加发送锁——同一 worker 上一次任务未结算时后续任务自动排队(面板显示「排队中」),baseline 探针在持锁后才执行,回执归因永不串台;人类正在占用 worker 时同样让位。

  • 负载均衡简报:协议简报自带每个 worker 的实时任务负载(空闲 / 进行中 N 个),并明确要求相互独立的任务分散到不同 worker、优先低负载会话——杜绝「全部压给同一个对话」。

  • 循环防护:派发给另一个激活中的指挥官允许但计入 commanderHops 预算(默认 10),超限拒绝,杜绝 A→B→A 乒乓烧 token。

  • 用量统计:回执自动附带耗时与输出 token 数(聚合自回合 usage),面板每行可见 ⏱12s · ~579 tok。

  • 结果自动回流:worker 完成回合后,插件从 host 事件日志提取其新增输出,截为摘要,以 [指挥官回执 · #N 「标题」] 状态:… 的消息 queue 进指挥官会话——指挥官被唤醒继续汇总或继续派发,无需人工复制粘贴。

  • 产物回收:回执自动附带 worker 的变更文件清单(从 write/edit 工具调用投影,去重保序),面板任务行显示 📄N 徽标、路径点击即复制——产出不再只是一段话。

  • 全文结果:面板「全文」按钮拉取该任务的完整输出(200KB 上限内不截断),摘要之外随时可查原文。

  • 中断自动续跑:worker 回合被截断(token 上限)或异常中止(aborted/error)时,插件自动向该 worker 发送续跑指令("从中断处继续执行原始任务"),最多 maxContinuations 次;最终回执聚合中断前后全部输出并标注续跑次数。手动取消与人工接管永不触发续跑。

  • 延迟派发:<dsh-dispatch delay="10m" ...> 支持 30s / 10m / 1h 或纯秒数;任务进入「定时中」,到点自动走完整派发管线(含锁/排队/回执),重启后未到点的任务照常计时。

  • 失败自动换人(failover):续跑仍救不回来的失败任务,自动改派给负载最低的空闲 worker 重跑同一任务(maxFailovers 预算沿链继承,杜绝无限换人);面板标注「已换人」,回执注明改派去向。

  • 审批一键操作:worker 卡在权限确认时,任务行出现 ✓批 / ✗拒 按钮——在指挥官面板里直接应答,不用跳进 worker 窗口。

  • 开池模板:面板「开池」表单输入角色 + 数量 + 热身指令模板(支持 {role} {i} {n} 占位符),一键批量创建同角色 worker 并预派热身任务。

  • 派发前确认模式:confirmDispatch: true 时每批任务先挂起,面板点「全部放行」才真正发送——给自动化加一道总闸。

  • 批次汇总回执:一次派发的多个任务全部结算后,额外注入一条 [指挥官批次汇总 · N 项已全部结算],逐项带状态与结果预览,指挥官一眼消化整波结果。

  • 任务面板:头部徽章显示进行中任务数,点击下拉面板:

    • 任务列表:状态点(排队/等依赖/运行/完成/失败/已接管)/ 目标 / 摘要 / 耗时与 token / 打开会话;
    • 手动直派:选 worker + 输任务直接发送,绕过模型协议的逃生门(仍受并发上限、worker 锁、回执闭环约束);
    • 停止:运行中任务随时取消;重试:失败/阻塞任务一键重发;排队任务可 立即发 强制投递;
    • 徽标:「待确认」(worker 在等权限确认)/「超时」(超过 stuckTimeoutMs)/「排队久」(目标长时间未空闲,提示用立即发);
    • 花名册区:各会话运行状态点 + 刷新花名册。
  • 设置面板:「设置」展开即可调轮询间隔/并发上限/回执开关/通知等,保存即写回 ~/.dsh/settings.yaml 的命名空间并即时生效,无需手动改文件重启。

  • 原生设置页:dsh 侧边栏「设置」面板新增**「指挥官」导航页**——轮询间隔、并发上限、一次最多开几个对话、续跑/换人次数、确认模式、回执与通知等全部字段就地编辑,保存写回 ~/.dsh/settings.yaml 并即时生效;手动改 yaml 也会实时同步到界面。

  • 任务统计(按项目 / 总计):同一设置页顶部实时汇总各项目(按 worker 工作目录)的任务数、成功率、平均耗时与变更文件数,底部固定「总计」行。

  • 报告导出:一键把全部任务+结果复制为 Markdown 归档。

  • 人工在场不打断(默认):worker 会话里出现真人消息(非插件注入)时,任务不会被终止——仅标注「人工在场」徽章,插件照常跟进、照常结算回执;如需旧版「插话即接管」,开启 takeoverOnHuman:任务转终态「已接管」、依赖连锁取消,且 takeoverFollow 开启时附带只读观察——人工操作的每回合新进展以 [指挥官观察 · #N] 注入指挥官(含新增变更文件),面板显示「已接管 · 观察中」并可一键「停止观察」。

  • 重复任务纠错(默认开):dedupDispatch 拦截同一任务文本的重复派发——本回复内跨块重复、或与已派发过的任务(进行中/已完成)重复时只保留一个,并向指挥官注入「[指挥官提示]」说明缘由;单块多目标(target="#1,#2")的有意广播不受影响。续跑机制同步收紧为白名单判定:仅 token 截断(max-tokens)触发自动续跑;人为停止(aborted)与报错(error)按失败结算,由面板重试/failover 接管,正常完工(含 completed)绝不再误触发。

  • 全局悬浮指示器:任何会话右下角都有小挂件列出各激活指挥官及其进行中任务数,点击直达对应会话——人在别处干活也不漏进度。

  • 后台桌面通知:标签页在后台时,批次结算/任务失败/worker 卡住会发系统通知(首次激活时请求权限)。

  • 负载均衡简报:花名册注入时附带每个 worker 的实时任务数(空闲/进行中 N),并明确要求模型"独立任务必须派给不同 worker、优先选空闲会话"——杜绝把所有任务压给同一个对话。

  • 重启不丢指挥官:激活状态双写持久——浏览器 localStorage(页面刷新恢复)+ host 端 <dsh-home>/dsh-commander/registry.json(harness 重启、换端口、换浏览器都照常恢复)。引擎启动时合并两个来源,会话仍存在的指挥官自动重新上岗(游标钉在最新尾部,历史输出绝不重复执行)。

  • 任务历史持久化:任务表实时镜像到 localStorage(保留最近 100 条),页面刷新后自动恢复;未完成任务由监视器重新结算补发回执。

  • 后台运行:引擎挂在模块层而不是组件层——轮询走 host 事件日志路由,不依赖当前浏览器停留在哪个对话。

安全护栏

  • 仅当指挥官空闲时才解析新输出;同一批输出只处理一次(游标推进,at-most-once)。
  • 游标探测失败即拒绝上岗:恢复/激活时若无法确认会话尾部锚点(重试 3 次仍失败),该指挥官跳过恢复或激活中止——绝不回退到 cursor 0,从根上杜绝"重启后历史任务被当新指令重放"。
  • 上限:并发任务 5 / 单条消息块数 8 / 单任务字数 4000 / 单次激活累计派发 50(防失控循环),批次间隔 ≥1s。
  • 拒绝自指(target=指挥官自己);prompt 被拒标记为「已阻塞」并在面板可见,不做重试风暴。
  • 简报注入在 host 端 fail-closed:会话不存在 / 回合进行中 / 超长文本一律拒绝。

工作原理

  1. host 半区(lib/index.js):设置命名空间 dsh-commander + 五条路由:
    • GET /api/dsh-commander/config — 解析后的配置(POST 为设置面板白名单写回);
    • POST /api/dsh-commander/inject {sessionId,text} — 把简报作为一条 plugin 来源的 user 消息静默追加进会话(context-compressor 同款 checkpoint 手法,不开回合);
    • GET /api/dsh-commander/events?sessionId&cursor&limit — 只读投影:cursor 之后已定型的 assistant 文本 + 最后一个 turn/end 原因 + 真人消息计数(接管信号)+ 变更文件与工具统计 + 全日志尾部锚点;
    • GET /api/dsh-commander/fullresult?sessionId&baseline — 任务完整输出(面板「全文」数据源);
    • GET|POST /api/dsh-commander/registry — 持久指挥官注册表(~/.dsh/dsh-commander/registry.json),重启存活的关键。
  2. 浏览器半区(lib/client.js):模块级引擎单例以 ~2s 轮询每个激活指挥官的 events 尾部 → 正则解析 <dsh-dispatch> 块 → 广播展开(#1,#2 / all)→ 纯函数策略闸门(并发/条数/累计上限)→ 经客户端 sessions 运行时 binding(target).prompt(task,'queue') 送达(或 create({cwd}) 新建)→ 订阅 sessions.list 快照监视 worker 的 running 标志与 pendingInteraction(侧边栏同源信号)→ 结算后把回执 prompt 回指挥官;整批结算再补一条批次汇总。
  3. UI:两个增量坐席——conversation.session.header.actions(徽章+面板,与家族其他插件同款)与 shell.overlay(全局悬浮指示器),不替换任何原厂组合。

设置(可选)

在 ~/.dsh/settings.yaml 添加命名空间 dsh-commander:

dsh-commander:
  enabled: true           # 总开关
  maxOutstanding: 5       # 并发进行中任务上限
  maxPerMessage: 8        # 单条回复最多解析的任务块数
  maxTaskChars: 4000      # 单个任务文本截断长度
  summaryMaxChars: 800    # 回执摘要截断长度
  pollIntervalMs: 2000    # 引擎轮询间隔(毫秒)
  autoReport: true        # 是否把结果回执/批次汇总注入指挥官会话
  stuckTimeoutMs: 600000  # 运行多久后标记「超时」(毫秒)
  autoLabelWorkers: true  # 自动新建的 worker 是否标注 [T#n] 标题
  maxCommanderHops: 10    # 跨指挥官派发预算(防循环)
  notify: true            # 后台桌面通知
  maxContinuations: 2     # 回合中断后自动续跑次数上限(0=关闭)
  maxFailovers: 1         # 失败后自动换人重试次数(0=关闭)
  maxNewWorkersPerBatch: 3  # 单条回复最多自动新建几个对话(0=禁止自动新建)
  confirmDispatch: false   # 派发前需人工在面板「放行」

不配置即用以上默认值;也可在 dsh 原生设置面板的「指挥官」页或任务面板「设置」区修改(写回此文件并即时生效)。

使用建议

  • 给指挥官下达的总目标请说清「可以拆分派发给多个 worker」;模型自己决定拆几个任务、要不要开新窗口。
  • 任务文本务必自包含——worker 看不到指挥官的任何上下文(简报里已反复提醒模型)。
  • 面板出现「待确认」徽标时,说明 worker 在等权限确认,点「打开」去处理即可。
  • 不想让它继续跑的任务随时「停止」;跑挂了的点「重试」。
  • 多个会话可各自激活为指挥官互派任务,但请注意这会真的互相烧 token。

仓库布局

  • lib/index.js — 插件 host 半区:设置命名空间 + 注入/事件/全文/注册表/邮箱/git/圆桌八条路由。
  • lib/client.js — 浏览器半区:协议解析、广播展开、策略闸门、花名册、引擎(激活/轮询/派发/监视/回执/批次汇总/取消重试)、头部徽章面板、全局指示器(手写 bundle,与家族其他插件同技术路线)。
  • test/smoke.cjs — node test/smoke.cjs:语法检查 + host 四路由全分支(校验矩阵/checkpoint 追加/尾投影锚点/真人消息计数/设置写回白名单/持久注册表)+ client 纯函数与完整编排回路(激活→派发→结算回执→自动新建→广播+批次汇总→同 worker 串行化归因→跳数防护→fork 继承→tid/depends 依赖链→用量聚合→人工接管→中断续跑→取消重试→强发→直派→报告→通知节流→持久化)+ SSR 断言。无 harness 安装时(CI)自动降级为语法+结构标记检查。
  • .github/workflows/smoke.yml — push/PR 自动跑冒烟(windows-latest,无私有依赖也能过)。

已知限制

  • 浏览器在线才有调度:轮询和派发都发生在网页端;关掉标签页任务不会派发(已在跑的回合在 host 侧不受影响)。harness 重启同理。
  • worker 需要人工确认时不代答:权限请求会让任务停在「待确认」,需要你手动处理——这是有意设计,插件绝不代替人做决定。
  • 任务历史保留最近 100 条:更早的记录会被裁剪掉(回合本身照常进行)。
  • 摘要来自文本块:worker 若只产出工具调用没有最终文字,回执摘要是「(该回合没有产生文本输出)」。
  • 同名目标按精确匹配:target 写会话标题时必须与侧边栏显示名完全一致,推荐用别名或 id。
  • 配置读取一次:浏览器半区页面加载时读一次配置,改设置需刷新。
  • 人工接管的判定是启发式:只要 baseline 后出现过真人消息就算接管;若那只是巧合插话而模型仍期望回执,可在指挥官里手动让它询问 worker 进度。

License

MIT