DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Role Router — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins

@snowamberx/dsh-role-router

Role Router

按角色路由 DeepSeek Harness 代理请求:计划模式使用规划器模型,否则使用默认模型;子代理使用子代理模型。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add @snowamberx/dsh-role-router@0.3.2
README兼容性版本
主界面与 composer 模型摘要

兼容性与来源证明

Role Router 以 @snowamberx/dsh-role-router 发布,当前版本为 0.3.2。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
npm
Registry 更新时间
2026/9/20

版本

0.3.2stable
2026/9/19
0.3.1stable
2026/9/18
0.3.0stable
2026/8/31
查看其余 5 个版本收起版本
0.2.2stable
2026/8/22
0.2.1stable
2026/8/20
0.2.0stable
2026/8/14
0.1.1stable
2026/8/14
0.1.0stable
2026/8/14

相关插件

正在加载相关插件…

最新版
0.3.2
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
172.4 kB
文件数
22
Surface
web
许可证
BSD-3-Clause
发布源
npm
GitHub
★ 4
周下载
242
安全扫描
✓ v0.3.2 扫描通过
最近提交
2026/9/19
查看源码 ↗项目主页 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 models-usage 分类下经过校验的插件。

Usage@linxin666/dsh-usagedsh Web GUI 的使用统计插件:检测各提供商余额和编码计划配额,并提供实时令牌使用记录,以及当前提供商的专属宠物气泡Whale Widgetdsh-whale-widgetDSH Web 界面右下角的 DeepSeek 余额小鲸鱼挂件:余额/今日已用/峰谷定价、自定义泡泡点击序列(文本/余额/今日/峰谷/图片/随机语句与并列加权选择)、逐行样式与字体、悬浮快捷编辑、音效与每轮消耗、自定义角色/动图/音效、吸附与翻转自定义Usage Stats@ychris12138/dsh-usage-statsdsh Web GUI 的令牌使用热力图、提供商余额和订阅配额Codex Connectdsh-codex-connect用于 DeepSeek Harness 的 ChatGPT OAuth 和 Codex 模型。

README

Role Router Plugin (dsh-role-router)

Tired of manually switching models between planning and execution? dsh-role-router routes every DeepSeek Harness agent request by role: planner model in plan mode, the default model otherwise, and a dedicated model for subagents — no manual intervention needed.

  • Role routing: default, planner and subagent are configured independently; an unconfigured role passes the request through untouched (the official layered selection applies). planner is triggered automatically by plan mode (/plan and friends).
  • Web UI: a "Multi-role model routing" card on the settings page with three model pickers (each with an optional reasoning-effort level, same source as /model — the host's live, provider-grouped catalog), plus a composer summary pill.
  • Two configuration layers: cordis.yml (composition) and the role-router settings namespace (user layer, which takes precedence); saved settings apply to the next request without a restart.

Routing semantics

Every model request is routed by role; the listeners are registered on the root context, so they observe top-level agents and every in-process subagent:

RoleRequestsModel source
defaulttop-level agents outside plan modeConfigured → forced; unset → pass-through (official layered selection)
plannertop-level agents while plan mode is activeConfigured → forced; unset → pass-through (official layered selection)
subagentevery in-process subagent request (any depth)Configured → forced; unset → pass-through (official layered selection)

An unset role leaves the request untouched, so the harness's official per-session selection applies with its usual precedence — in-session switches (composer / /model) > the session's latest logged request > the global default. In-session model switches therefore take effect for unset roles on the next turn (the selection is snapshotted at prompt assembly, so a mid-turn switch never splits the running turn).

Switching models drops an inherited adapter-owned reasoningEffort unless the role configures an explicit one (the routed model may not support the previous model's effort; prepareCall rejects unsupported explicit efforts); pass-through requests keep everything the official layer assembled, including its effort. Plan mode is folded from the durable plan/mode session events; ctx.planMode is consulted first when visible. Auxiliary model calls (compaction, session-title) and out-of-process subagent providers (acp, codex, …) are unaffected.

Known interplay: a forced planner route is persisted into the session's request header, and the official "latest logged request" layer treats that as the session's current model. To keep an unset default (follow-official) from inheriting the planner model after plan mode ends, the plugin snapshots the official route at the plan-entry edge and restores it once at the plan-exit edge, then resumes pure pass-through; a fixed default role wins over the restore, and an unconfigured planner never snapshots.

Installation

dsh plugin --profile web add @snowamberx/dsh-role-router

Restart dsh web for the change to take effect.

A standard DSH community plugin package

This package is a standard DSH community bundle: package.json declares the dsh.bundle manifest ("patch": "./cordis.patch.yml" — the configuration layer dsh plugin add recognizes and stacks into dsh.profile.bundles) and a dsh.client web half (platform: "web" + inject dependency edges), with exports["./client"] shipping the browser bundle at lib/client.js (a standard window.__ModuleLoader__.load({ id, factory }) closure-factory artifact served by client-modules under /plugins/). The build runs tsc (node half + types) and tsdown with the same clientBundle preset the official packages/client/* packages use.

Configuration

cordis.yml (composition layer)

- id: model-router
  name: '@snowamberx/dsh-role-router'
  config:
    default:        # optional; omit the key to keep it unset (pass-through)
      provider: deepseek-official
      model: deepseek-v4-flash
    planner:        # optional
      provider: deepseek-official
      model: deepseek-v4-pro
      reasoningEffort: max    # optional
    subagent:       # optional
      provider: deepseek-official
      model: deepseek-v4-flash

Unknown keys and blank provider/model/reasoningEffort values fail loud at load. All three roles are optional; unconfigured roles pass requests through to the official layered selection.

settings (user layer)

role-router namespace: { default?, planner?, subagent? }, each role being { provider, model, reasoningEffort? }. Settings-document values win over the composition layer.

License

BSD-3-Clause. See LICENSE.