SeverusZh/dsh-plugin-subagent-director:为 DSH 子代理指定模型与角色分工

前言

在 DeepSeek Harness 中,主代理可以把任务委派给 subagent。如果不同任务适合不同的 LLM 供应商或模型,逐次手工指定会比较重复;如果只继承主代理的设置,又缺少按“翻译”“代码审查”等角色规划分工的手段。

SeverusZh/dsh-plugin-subagent-director 用于为 DSH 的 subagent 指定 LLM 供应商与模型,并用「角色模板」规划主代理与子代理的分工。下面介绍它的定位、安装、配置和常用调用方式。

这是什么

这是由 SeverusZh 维护的 DeepSeek Harness 插件,许可证为 MIT。package.json 中显示的版本为 0.2.1

插件的核心目标有两个:

  1. 让不同 subagent 可以使用不同的 LLM 供应商(route)与模型。
  2. 用角色模板描述子代理的职责、persona 与可选模型绑定,让主代理更容易判断把任务委派给谁。

核心功能

  • 供应商与模型选择:为 subagent 配置默认 LLM 供应商(route)与模型;单次委派也可以由模型显式指定。
  • 默认模型兜底:配置 defaultProvider / defaultModel 后,未显式指定模型的子代理会使用该默认模型;applyDefaultRoute 默认开启,未配置默认模型时为零侵入空操作。
  • 配置热更新settings.yaml 或设置面板的改动即时生效,无需重启。
  • 角色模板:定义角色,包括 displayName、职责描述、persona,以及可选的模型绑定。
  • 角色按显示名引用role 参数未命中 id 时,会按 displayName 精确匹配;多个同名角色取定义顺序第一个并提示。
  • 四级回退链:单次调用参数 > 角色绑定 > 插件默认 > 继承主代理;未配置时零侵入。
  • 主代理指引:系统提示会自动注入角色清单,主代理可以看到可用的委派角色。
  • 设置界面:可在 DSH 设置面板内配置默认模型,并对角色卡片进行增删改。
  • continuable 后台:返回可续聊子代理 id,可配合 send_message 持续委派。
  • 可观测性:打开子代理会话时,composer 下方显示其实际运行的供应商/模型;资料中标注该功能暂不可用,正在开发中。

安装与启用

安装

使用插件命令安装:

dsh plugin --profile <name> add dsh-plugin-subagent-director

本地开发时也可以挂载本地 checkout:

dsh plugin --profile <name> add link:<绝对路径>

注意:不要再用 - insert: 手动添加 subagent-director / subagent-director-bridge 条目,否则启动时可能报 duplicate loader entry id

可选配置

如需覆盖插件默认配置,可以在 cordis.patch.yml 中按 id 覆盖 subagent-director 的 config。示例如下:

- id: subagent-director
  name: dsh-plugin-subagent-director
  config:
    subagentProvider: spawn
    toolName: subagent_role
    enableRunInBackground: true
    backgroundMode: one-shot
    maxDepth: 3
    applyDefaultRoute: true

这里主要涉及三类配置:

  • subagentProvider:传输相关配置。
  • provider:LLM route 相关配置。
  • toolName:模型可见的工具名,例如 subagent_role

subagentProvider(传输)与 provider(LLM route)是两套命名空间,配置时不要混淆。

本地开发注意事项

本地以 link: 方式挂载前,需要先安装依赖并构建:

npm install
npm run build

本地 checkout 需要位于 $DSH_HOME/profiles/ 下,或者仓库自带 node_modules。否则 @deepseek-ai/* peer 依赖可能报 ERR_MODULE_NOT_FOUND

设置页会订阅供应商与设置变更事件。在 Models 页新增供应商或 API key 后,相关下拉列表会自动刷新,无需重启。

典型用法

配置角色模板

角色模板配置在 settings.yamlsubagent-director 命名空间下。示例:

subagent-director:
  defaultProvider: opencode-go
  defaultModel: minimax-m2.7
  defaultReasoningEffort: low
  roles:
    translator:
      displayName: 翻译员
      description: 中英互译技术文档、代码注释与沟通内容,保留术语准确性与语气
      persona: 你是专业翻译。术语统一、句式自然、保留原文意图;专有名词与技术缩写保持原文,拿不准的术语标注出来。

角色可以不绑定 provider/model,继承全局默认模型;也可以按角色单独绑定模型。

委派调用

在对话或模型工具调用中,可以使用 subagent_role 委派任务:

subagent_role({ role: "translator", prompt: "把 README.md 翻译成英文" })
subagent_role({ role: "code-reviewer", model: "deepseek-chat", prompt: "..." })

第二个示例中的 model 字段用于临时覆盖当前调用的模型。

role 参数支持使用角色 id 或 displayName。未命中 id 时,会按 displayName 精确匹配;多个同名角色取定义顺序第一个并提示。建议始终使用 id。

适用场景与注意

  • 适合需要让不同 subagent 使用不同 LLM 供应商或模型的 DSH 使用者。
  • 适合希望把“翻译”“代码审查”“架构设计”等职责拆成角色模板,让主代理按角色委派的任务。
  • 未配置任何角色且未配置默认模型时,行为与未安装本插件一致。
  • 配置了 defaultProvider / defaultModel,且未关闭 applyDefaultRoute 时,所有未显式指定模型的子代理(含内置工具发起的)都会使用该默认模型。
  • subagentProviderprovider 分属不同命名空间,配置时需要区分。
  • 可观测性相关展示能力在资料中标注为暂不可用、正在开发中。
  • 插件以当前 dsh 进程权限运行。安装前应检查源码与许可证。

小结

SeverusZh/dsh-plugin-subagent-director 把“哪个子代理用哪个模型”和“主代理把任务交给哪类角色”整理成可配置项:默认模型、角色模板、设置面板和 subagent_role 调用都围绕这条链路展开。

仓库地址:https://github.com/SeverusZh/dsh-plugin-subagent-director

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

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

小夜