前言¶
DeepSeek Harness(DSH)在拆分复杂任务时,会为子任务创建子代理并走内置路由选择 LLM Provider 与模型。对同一父会话里的不同子任务,开发者有时希望用更强模型做规划、用更快模型做检索或批量改写,但单靠默认路由不够直观,也不便于在「派活」瞬间做决策。
下面介绍社区维护的标准 DSH bundle dsh-selective-subagent(维护者 Yutai233):在 AI 准备派子代理、触发 agent/created 时插入一步人工选择;选定后再通过公开的 agent.model.select() 写入标准 model/selection。若 60 秒内无操作,则不覆盖路由,继续 DSH 原有子代理策略。
这是什么¶
dsh-selective-subagent 归类为模型推理相关插件,托管于 SkillHub 目录页,源码在 GitHub。当前 bundle 版本 1.0.1,依据 DSH 0.2.2-rc.1 公开契约编写;只使用当前版本公开的 agent/created、agent.model.select() 与 Connection RPC,不是独立网页或第三方 Desktop 安装脚本。
核心功能¶
逐任务选模型,回答前不发请求¶
子代理创建时 Host 在 agent/created(serial)中等待用户确认;在用户回答之前,不会发起该子代理的第一次模型请求。已经开始运行的子代理不会中途换模型。
任务栏、搜索与真实目录¶
弹窗支持多任务排队:行首显示 1 / 3,长条下拉切换待选任务;任务名后以蓝色圆角标签展示已确认模型。模型列表从已配置的 LLM Provider 读取,支持搜索与滚轮滚动。
DSH 默认策略与超时回退¶
选择「使用 DSH 默认策略」表示完全不覆盖原路由,而不是强制跟随父级模型。配置项 idleMs 默认 60000 毫秒;连续无操作时 Host 按各任务原有 DSH 路由继续,且不调用 select。弹窗内的鼠标、键盘、输入、滚轮操作会通过 selective-subagent/activity 续期同一根会话的全部待选任务。
复用与界面扩展¶
弹窗内可勾选复用:某次具体模型选择可应用到同一父会话后续尚待选择的任务和同级子代理;选「默认策略」不会建立复用。Client 占用 shell.overlay(选择弹窗与任务历史浮层)和 conversation.composer.dock(紧凑「子代理模型」入口);浮层锚定在入口上方,不改变输入框高度。界面跟随 DSH 主题 token,支持明暗主题。
实现边界(来自 README)¶
- 仅覆盖本进程创建的子代理(in-process
spawn/fork等);ACP、Claude Code、Codex 等外部子进程执行器不受控。 - 不监听已移除的
agent/request,不在llm/stream中私自换模型,不注册 Tool/命令;选择与续期仅接受principal.kind === 'owner'且interactions === 'answer'的已认证 Peer。
环境要求¶
- Node:
>=18(见package.json的engines)。 - DSH:
>=0.2.2-rc.1;接口签名随 DSH 版本变化的风险需自行评估。 - 无第三方运行时依赖;分发包内已含构建好的
client.js,安装时无需本地构建。
安装与启用¶
只能使用官方插件入口安装。不要手工改写 profile 的 package.json / cordis.patch.yml,也不要执行旧版第三方 junction 安装脚本。
可选路径:
- Agent / 工具:
plugin_manager的install_bundle,target指向本仓库目录或对应 tarball。 - Web GUI:侧栏 Plugins / 插件 页面添加本地包。
- CLI:
dsh plugin --profile <profile> add <本目录或 tarball>
安装会占用 profile 写入锁 <profile>/package.json.lock。若出现 atomic-write: timed out waiting for the writer lock,说明另有安装或更新占用锁:等待结束,必要时重启 DSH 后重试;不要删除仍由活进程持有的锁文件。
安装后建议核验:
Config.listConfigs中出现 bundledsh-selective-subagent;- Client
Slots.listSubTree的shell.overlay与conversation.composer.dock出现本插件条目; - 新建会派子代理的任务时弹窗出现,且子代理在回答前不发起模型请求。
插件以当前 DSH 进程权限运行;安装前请阅读仓库源码与 MIT 许可证。
典型用法¶
- 发起一个需要创建子代理的任务。
- 在弹窗中为当前任务选择 Provider / 模型,或选择「使用 DSH 默认策略」。
- 需要时勾选复用,使该模型应用于同一父会话内后续待选任务与同级子代理。
- 若长时间不操作,约 60 秒后按 DSH 原路由继续;进行中的交互会重置待选任务的超时。
- 点击输入框下方「子代理模型」打开任务历史浮层;按 Escape 或点击空白处收起。
bundle 默认配置如下,可在 DSH 配置中按需调整:
config:
enabled: true # 总开关
idleMs: 60000 # 无操作回退毫秒数(1000–3600000)
askOncePerParent: false # 默认不自动复用;弹窗内可显式复用
维护者在 DSH Desktop、0.2.2-rc.1、插件 1.0.1 环境下做过运行层验证(见仓库 docs/verification.md):手动选择后标准 model/selection 与第一次 request/header 一致;超时路径未发生模型覆盖。该结果不代表所有 DSH 版本、外部子进程 provider 或主题均已覆盖。
适用场景与注意¶
适合:希望在子代理真正开跑前,按任务手动指定模型或显式保留 DSH 默认路由的 DSH 用户;模型目录完全依赖既有 Provider 配置,插件不新增凭据或模型。
注意:
- 首次安装后,已在运行的子代理不会再次被询问;仅安装后新建的子代理会弹窗。
- 已完成任务在 Host 进程内有界缓存(最多 200 条),模型选择仍记录在 DSH 标准会话日志。
- 弹窗按页面会话显示对应根会话任务;切换会话或收起弹窗不会暂停 Host 侧超时计时。
- SkillHub 为社区目录站点,与 DeepSeek / 幻方无官方从属关系;星标等目录元数据以站点为准,安装与行为以 GitHub README 与源码为准。
结尾¶
dsh-selective-subagent 在 DSH 子代理创建链路上增加「人来选模型」一步:可选覆盖、可超时回退、可复用,并通过公开 API 与会话日志对齐路由。目录与文档:SkillHub、GitHub 仓库。