Skip to main content
F

dsh-force-collab

felixjiashengfu/dsh-force-collab

Forced collaboration: a composer picker sets 0–6 sub-agents, and while it is on every hands-on task must be split across exactly that many child agents through a collab_fanout tool that has no count parameter, then merged by the main agent.

Install

dsh plugin --profile web add github:felixjiashengfu/dsh-force-collab

README

dsh-force-collab · 强制协作

在输入框左侧直接选 1 / 2 / 3 / 4 / 5 / 6,这一轮任务就被强行拆给这么多个子 Agent 并行做,再由主 Agent 汇总成一份答案。

和自带的 subagent 工具的区别只有一个,但很关键:数量由用户决定,模型改不了。

安装

在 DeepSeek Harness 里打开 插件 → 添加插件,在输入框里填包名,点 安装,装好后点 立即启用:

dsh-force-collab

也可以填 GitHub 仓库地址 https://github.com/FelixJiashengFu/dsh-force-collab。连不上 npm 官方源时,在 安装源 里选中国大陆镜像源再填包名。

输入框左侧随即出现「协作」。升级:在插件页卸载后,用同样的方式重新安装。

它由哪几块组成

部分文件作用
宽度选择器(浏览器)lib/client.js输入框左侧的「协作」按钮 + 0-6 弹层,读写 profile 级宽度
状态路由(Host)lib/index.jsGET/POST /plugins/dsh-force-collab/state,仅本机回环可访问
宽度持久化lib/state.js~/.dsh/force-collab.json,原子写入,profile 级生效
强制派工工具lib/tools.js唯一的模型工具 collab_fanout,没有数量参数
强制指令lib/prompt.js动态系统提示词段落,宽度 ≥1 时要求先派工

为什么这算「强行」

  1. 模型拿不到数量参数 —— collab_fanout 的 schema 里只有 brief / angles / model。宽度从用户设置里读,模型既看不到可改的入参,也没有别的入口。
  2. 系统提示词每轮动态生效 —— text 是回调,改宽度后下一次请求立即反映,不需要重载插件。
  3. 子 Agent 不会无限套娃 —— 本插件记录的 child session 再调用 collab_fanout 会被拒绝;提示词段落也不会出现在 child session 里。
  4. 失败有明确出口 —— 宽度为 0、没有可用 provider、超出单会话派工上限时,工具返回可读的错误,并明确要求主 Agent 自己完成,而不是改派自带工具。

宽度语义

值行为
0(关)不注入任何强制指令,工具调用会被拒绝
1-6注入强制指令;collab_fanout 一次派出正好该数量

默认分工(angles 不填时)按宽度固定分配,例如 3 → 调研与现有实现 / 方案与实现改动 / 验证、风险与反例;模型可以通过 angles 覆盖文字,但不能覆盖数量。

寒暄、单步确认这类一句话任务允许不派工 —— 这条写在提示词里,避免用户说「你好」也被拆成六份。

本地开发

克隆本仓库后,在 添加插件 里填本地目录的绝对路径即可,DSH 会以 link: 方式安装,改代码后重载插件(或重启 DSH)生效。

自检

# 在仓库根目录运行;用 Harness 自带的 Node,本机没有独立 node 也能跑
$env:ELECTRON_RUN_AS_NODE="1"
& "$env:LOCALAPPDATA\Programs\DeepSeek Harness\DeepSeek Harness.exe" test\smoke.mjs

覆盖:挂载数量、提示词随宽度变化、child session 不被注入、精确派工数量、聚合内容、关闭/嵌套/无 provider 三种拒绝路径、路由读写与越界校验、浏览器半边的加载与占位注册。

已知边界

  • 宽度是 profile 级的,和「电脑操作」开关同类:选定后一直生效,直到再改。
  • 子 Agent 的进度不会实时流进主对话;主 Agent 在全部返回后一次性拿到报告。长任务期间界面看起来是「在等」。
  • 单会话累计派工上限 36 个(防止模型在循环里无限派工)。并发调用在启动前原子预留整批名额;启动失败只释放未用名额,已启动的子 Agent 仍计入累计数量。
  • 不阻止自带 subagent 工具的注册,只在提示词里明确禁用;真正兜底的是数量参数缺失与本工具的子会话拒绝。

Related plugins