前言¶
DeepSeek Harness (DSH) 的核心设计理念是“一切皆插件”。在构建智能体时,如何精细控制模型的委派行为以及底层模型的选择,是开发者常遇到的挑战。传统的直接工具调用方式在处理复杂路由规则和故障转移时往往不够灵活。
下面介绍 @snnh/dsh-role-config 插件,它通过角色预设和模型池,为 DSH 提供了基于能力的委派路由和优先级故障转移机制。
是什么¶
snnh/dsh-role-config 是一个 DSH 插件包,由用户 snnh 维护,采用 MIT 许可证。它不改变 DSH 的核心架构,而是通过提供角色预设和模型池,解决智能体如何根据任务特性路由到不同模型,以及当模型调用失败时如何自动切换的问题。
核心功能¶
该插件提供了以下主要能力:
-
Role Presets(角色预设)
模型可以将任务委派给一个角色(例如role: "premium"),而无需知晓具体由哪个模型提供服务。每个角色携带描述、优先级链以及操作员的规则。 -
Model Pool(模型池)
定义模型列表,模型可以直接命名调用。每个模型都由操作员编写了描述。直接命名的路由使用给定的配置,且不会发生故障转移。 -
Routing Rules(路由规则)
在角色链的头部提供服务之前,会按顺序运行条件判断,包括提示词子串、正则表达式、必需的输入模态、最小上下文窗口或操作员的自定义能力标签。 -
Priority Failover(优先级故障转移)
当一个被委派的孩子请求发生终止性失败时,它会尝试在同一个角色的链中的下一个成员上重试该请求。只有当整个链耗尽后,原始失败才会生效。 -
Function Bindings(函数绑定)
上下文压缩和会话标题可以跟随角色,而不是跟随会话的路由,或者保持 Harness 的默认行为。
安装与启用¶
安装该插件需要使用 npm 包名,无需额外的构建步骤。
dsh plugin --profile <profile> add @snnh/dsh-role-config
通过 Git 安装(github:snnh/dsh-role-config)也是可行的,因为构建产物已提交,不需要构建脚本和 allowBuilds 权限。
安装后,插件默认不注册工具或修改智能体。必须手动开启委托功能。
- id: role-config
config:
exposure:
delegateTool: true
listTool: true
pool:
- provider: deepseek-official
model: deepseek-chat
配置注意事项¶
官方工具兼容¶
当开启 exposure.delegateTool 后,插件会将路由工具注册在官方 subagent 名称下。为了防止命名冲突,官方工具(或 tool-subagent)所在的配置行必须设置 modelSelectionSettings: false。
- id: tool-subagent
config:
provider: spawn
toolName: subagent
modelSelectionSettings: false
局域网访问配置¶
默认情况下,设置文档限制在回环地址。若要通过局域网地址(如 http://<lan-ip>:<port>)配置此插件,需要在连接配置中重写 client-connection 行,将 operatorSurface 设置为 trusted。
- id: connection
config:
trustedHosts: !!js ctx.webRuntime.trustedHosts
operatorSurface: trusted
适用场景与注意¶
该插件适合需要在智能体内部实现复杂路由逻辑、多模型协作或容错机制的 DSH 用户。
使用时需注意以下限制:
1. 直接命名路由:在模型池中直接命名的路由不进行故障转移。
2. Agent-team 继承:Agent-team 的成员继承领导的路线;此插件只能对继承的路线进行故障转移,不能直接选择其模型。
3. 函数绑定:函数绑定只写入目标行的配置,没有自身的故障转移机制。
4. 运行权限:插件以当前 DSH 进程权限运行,安装前应检查源码与许可证。
结语¶
通过角色预设和模型池,开发者可以构建更稳定的智能体路由策略。更多配置细节与目录信息,可参考 GitHub 仓库或插件目录页。