为主模型、子代理和规划模式分别指定模型与推理强度
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/13 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add kolawong/dsh-plugin-model-dispatch该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:待复验
是什么
dsh 原生插件 · model
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 19 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件发起外部网络请求
查看扫描证据(共 8 处,展示前 8 条)
- 发起网络请求src/client/session-label-store.ts:53
const response = await fetch(SESSION_LABELS_ROUTE, { credentials: 'same-origin' }) - 发起网络请求src/client/session-overrides-store.ts:81
const response = await fetch(SESSION_OVERRIDES_ROUTE, { - 发起网络请求src/client/session-overrides-store.ts:107
const response = await fetch(SESSION_OVERRIDES_ROUTE, { credentials: 'same-origin' }) - 读取本地文件src/session-overrides.ts:70
text = await readFile(this.path, 'utf8') - 写入本地文件src/session-overrides.ts:85
await mkdir(dirname(this.path), { recursive: true }) - 写入本地文件src/session-overrides.ts:88
await writeFile(tmp, JSON.stringify(value, null, 2)) - 写入本地文件src/session-overrides.ts:89
await rename(tmp, this.path) - 删除本地文件src/session-overrides.ts:91
await rm(tmp, { force: true }).catch(() => {})
扫描于 2026/11/1(0 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-api-gateway@deepseek-ai/dsh-api-remotes@deepseek-ai/dsh-api-session-controller@deepseek-ai/dsh-api-workspace-controller@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-store@deepseek-ai/dsh-client-ui-conversation@deepseek-ai/dsh-client-ui-primitives@deepseek-ai/dsh-client-ui-renderer@deepseek-ai/dsh-client-ui-session给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 指定主会话模型
- 指定子代理模型
- 指定计划模式模型
DSH 插件:为主会话、子代理和计划模式分别挑选模型与推理强度。
README
由 DeepSeek 最新模型翻译生成dsh-plugin-model-dispatch
给主模型、子代理和 plan mode 各自指定模型与推理强度 —— 在聊天栏里,一个菜单搞定。
输入框上方的模型菜单:模型行、推理强度滑块,以及聊天栏里的两个 chip
DeepSeek Harness 自带主模型的模型选择器。这个插件保留原有控制,再补上它没覆盖的两条路线 —— 委派给子代理时用的模型,以及 plan mode 思考时用的模型 —— 然后把三者放进同一个菜单,用起来和原生控件一样。
| 路线 | 从哪里设置 | 作用范围 |
| 主模型 | 聊天栏主 chip · 设置第 1 行 | 当前会话,走 DSH 原生切换 API |
| 子代理模型 | 聊天栏子代理 chip · 设置第 2 行 | 本会话中之后启动的子代理 |
| 规划模型 | 设置第 3 行 | 仅 plan mode;退出后恢复进入 plan 前的主模型 |
目录
- 功能
- 安装
- 用法
- 聊天栏
- 设置
- Plan mode
- 子代理
- 路由规则
- 持久化
- 兼容性
- 开发
- 疑难排查
- 已知限制
- 致谢
- 许可
功能
- 聊天栏里两个 chip,用的是宿主自己的材质。
展开完整文档(README 剩余 1 节)
dsh-plugin-model-dispatch
给主模型、子代理和 plan mode 各自指定模型与推理强度 —— 在聊天栏里,一个菜单搞定。
输入框上方的模型菜单:模型行、推理强度滑块,以及聊天栏里的两个 chip
DeepSeek Harness 自带主模型的模型选择器。这个插件保留原有控制,再补上它没覆盖的两条路线 —— 委派给子代理时用的模型,以及 plan mode 思考时用的模型 —— 然后把三者放进同一个菜单,用起来和原生控件一样。
| 路线 | 从哪里设置 | 作用范围 |
| 主模型 | 聊天栏主 chip · 设置第 1 行 | 当前会话,走 DSH 原生切换 API |
| 子代理模型 | 聊天栏子代理 chip · 设置第 2 行 | 本会话中之后启动的子代理 |
| 规划模型 | 设置第 3 行 | 仅 plan mode;退出后恢复进入 plan 前的主模型 |
目录
- 功能
- 安装
- 用法
- 聊天栏
- 设置
- Plan mode
- 子代理
- 路由规则
- 持久化
- 兼容性
- 开发
- 疑难排查
- 已知限制
- 致谢
- 许可
功能
- 聊天栏里两个 chip,用的是宿主自己的材质。 输入栏带一个主 chip(宿主的模型图标)和一个子代理 chip(分支图标);光看图标就能区分,而 tooltip 和无障碍名称仍保留完整的 Main · model · effort 标签。两个都是无边框的 28px chip,只在悬停时显示底色,和旁边的原生控件一模一样。子代理路线处于继承状态时,它的 chip 显示 Follows main,而不是重复主模型的名字。
聊天栏里的两个 chip
- 所有路线共用一个菜单。 可以搜索模型和服务商,还有服务商分组、收藏、最近使用和推理强度 —— 聊天栏和设置行用的是同一个菜单。它由宿主菜单的材质搭成(半透明模糊卡片、投影阴影、4px 内边距、34px 行高、13px 字号、l2 细线),所以看起来像一方控件,而不是插件浮层。
- 推理强度做成离散滑块。 每个等级一档,最前面再加一档 服务商默认值,让「不指定强度」变成看得见的状态,而不是藏起来的行为。刻度画在滑轨下方(这样不会把已填充的一段切开),当前等级在标题行里标出名字,控件可以拖动,也支持键盘操作。
推理强度滑块
- 即时生效——没有确认行。 选模型、拖滑块、恢复默认,都会立刻写入。拖动滑块时,松手后合并成一次写入;写入按顺序串行执行;写入失败就把这一行回滚,并显示真实错误。菜单保持打开,所以选完模型可以紧接着改强度;按 Esc 或点击菜单外只会关闭菜单,绝不会撤销已经生效的选择。
- 计划模式自动切换。 进入计划模式会切到规划模型;批准计划或执行 /plan off 后,会在发出第一个执行请求之前,恢复进入计划模式前的主模型和强度。审核面板会显示将要恢复哪个模型。
- 按会话覆盖子代理。 在聊天栏里选的子代理会存成该会话的持久覆盖项,绝不改动设置里的默认值;点一下就能恢复设置默认值。
- 目录里的每个模型都能委派。 子代理路由读取宿主的实时模型目录,所以即使 rc.2 记录的是旧的允许列表,显式子模型选择和 list_subagent_models 在已有会话里依然可用。之后新增的模型在下一次委派时就能用;已移除的路由和不支持的强度会提前拒绝。
- 保存前先校验路由。 覆盖项和创建子代理都会通过宿主的 resolveCallConfig 校验具体的 provider/model/effort;组合无效会立刻失败并给出真实原因,而不是等到运行中途才报错。
安装
需要 DeepSeek Harness 0.2.0-rc.2(其他 0.2.x 版本需要做兼容性检查——见兼容性)。
dsh plugin --profile web add git@github.com:kolawong/dsh-plugin-model-dispatch.git
把 web 换成你实际使用的配置档(desktop 等)。然后完全退出并重新打开 DSH:宿主那一半需要重新组合,只刷新页面只会重新加载客户端那一半。
本仓库的 lib/ 里放着预构建好的宿主和客户端 bundle,所以安装不需要本地构建。
手动安装(链接本地检出)
// <DSH_HOME>/profiles/<profile>/package.json
{
"dependencies": { "dsh-plugin-model-dispatch": "link:/path/to/dsh-plugin-model-dispatch" },
"dsh": { "profile": { "bundles": ["…", "dsh-plugin-model-dispatch"] } }
}
创建对应的 node_modules 链接(配置档目录是解析锚点),然后重启 DSH。
用法
聊天栏
输入框右侧、权限和预设控件旁边有两个 chip:
| Chip | 作用 |
| Main(模型图标) | 通过原生 API 切换当前会话的模型。chip 上显示生效的路由,工具提示里显示它的 effort。 |
| Subagent(分支图标) | 为本次会话后续启动的子代理挑选模型,以会话覆盖的形式保存。没有覆盖时显示 Follows main。 |
打开任一 chip 都会看到同一个菜单:搜索、服务商分组、收藏(★,悬停显示,按浏览器记忆)、最近使用、effort 滑块,以及——针对子代理路由——一行 restore to settings default。
深色模式下的同一个菜单
Settings
Web settings → 模型切换 / Model switch 下有三行,每行带一句范围提示:
| 行 | 含义 |
| New-session default model | 写入原生 agent-default-model 条目。在聊天里改模型不会改动它。 |
| Subagent default model | 供任何没有覆盖的会话的子代理使用。 |
| Planning model | 计划模式激活期间使用。 |
计划模式
1. 进入计划模式时,原子地保存会话当前的 provider / model / reasoningEffort,并切换到 planning model。
2. 批准计划(或 /plan off)后,在组装第一个执行请求之前恢复保存的路由。
3. 恢复失败可以重试,绝不会把会话困在 planning model 上;批准面板会写明将要恢复的模型。
子代理
- 带显式模型选项发起的委派会保留这些选项——插件只在原生调用留空的地方补上路由。
- 子代理 chip 和设置默认值只对新启动的子代理生效;正在运行的子代理保持自己的模型。
- 子代理会话本身不参与计划切换,也不参与子代理覆盖。
路由规则
| 决策 | 优先级(从高到低) |
| 子代理模型 | 会话覆盖 → 设置默认值 → 原生父模型继承 → 工具调用里的显式启动选项 |
| 计划模型 | 计划模式激活期间用 planning model → 之后恢复会话路由 |
| 主模型 | 会话选择(原生 API)→ 设置里的新会话默认值 |
默认值和会话彼此独立:设置里的几行存的是新会话默认值,而聊天里的选择和计划切换只影响当前会话。宿主适配器用 AsyncLocalStorage 隔离原生 selectModel 的「save as deployment default」副作用,因此只有那条调用链会被拦截。
持久化
| 数据 | 位置 |
| 设置默认值(子代理默认值、planning model) | DSH profile config(易变字段——可从设置页或配置文件编辑) |
| 新会话主模型默认值 | 原生 agent-default-model 条目 |
| 会话子代理覆盖 | $DSH_HOME/storages/model-switch/session-overrides.json |
| 计划前的主模型(恢复成功后清除) | $DSH_HOME/storages/model-switch/plan-main-models.json |
| 菜单收藏 / 最近使用 | 浏览器 localStorage(按浏览器隔离,不同步) |
兼容性
- 宿主: DSH 0.2.0-rc.2。插件只使用 0.2.x 的扩展接口(易变的 Config + configForms、会话投影、会话模型选择 API、planMode),不改动 DSH 核心,所以上游一键升级始终无痛。
- 更新的宿主需要 ≥1.1.0。 从 1.1.0 起,子代理路由覆盖全部三条原生启动路径 —— start / startContinuable(rc.2)和 startActivation(更新的宿主)。如果宿主只暴露 startActivation,1.0.x 会被静默绕过,退化为直接继承父模型。
- 客户端: 浏览器端以 DSH 客户端 bundle(lib/client.js)形式发布,需要宿主端一并加载;首次安装后只刷新页面不够。
开发
pnpm install
pnpm test # vitest — 69 tests
pnpm build # tsc (host + client projects) + tsdown client bundle
只迭代 UI:
./node_modules/.bin/tsc -p tsconfig.client.json && ./node_modules/.bin/tsdown
测试覆盖:路由合并优先级、会话覆盖的存储与并发写入、计划边界的进入 / 恢复 / 重启 / 拒绝路径、会话选择与默认选择的隔离、路由校验拒绝、客户端保存竞态、陈旧目录适配,以及并发委派隔离。
tsc -p tsconfig.json(宿主项目)按 配置档 解析出的 @deepseek-ai/* peer 做类型检查。如果本包自己的 node_modules 里恰好有这些包的第二份副本,两份副本的品牌类型会不一致,宿主项目就会报不匹配;客户端项目、bundle 构建和测试套件不受影响。
故障排查
| 现象 | 原因 / 修复 |
| 安装后芯片或设置行缺失 | 宿主端没有重新组装 —— 完全退出并重新打开 DSH(刷新页面只会重新加载客户端)。 |
| 子代理始终使用父模型 | 在比 rc.2 更新的宿主上需要 ≥1.1.0(见兼容性);同时确认没有残留只支持 start 的宿主。 |
| 菜单里缺少某个模型 | 服务商加载目录失败 —— 菜单标题会显示目录不完整的警告,服务商响应后模型就会出现。 |
| 保存时报路由无效 | 该组合不在服务商的实时目录里;从它所属的服务商分组中挑选模型再重试。 |
| 改了设置但某个聊天没变 | 符合预期:聊天选择与计划切换按会话生效,设置行只作为新会话的默认值。 |
已知限制
- 与 DSH 0.2.0-rc.2 内部实现紧密耦合(configForms、会话投影、会话控制器、计划模式)—— DSH 升级后请重新跑一遍测试套件。
- 计划边界检测依赖原生 exit_plan_mode 的结果措辞;DSH 改了措辞会延迟恢复(plan/mode 事件是兜底方案)。
- 子代理会话有意不参与方案切换,也不参与子代理覆盖。
- 菜单收藏和最近使用按浏览器保存(localStorage),不属于会话,也不属于配置档。
致谢
- 最初的设计和 0.1.x 实现:lincong1987/dsh-model-switch(MIT)——本插件基于这项工作构建。
- 0.2.x 适配、方案模式切换、会话覆盖、路由校验以及当前 UI,均在本仓库中重写并扩展。
许可证
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
kolawong/dsh-plugin-model-dispatch
为主模型、子代理和规划模式分别指定模型与推理强度
相关插件 · 模型接入
API 中继安全审计toby-bridges/api-relay-audit
面向 AI API 中转与 LLM 代理的本地安全审计。
★ 897已汉化DSH
69.4
免费搜索插件DDDMUC/dsh-free-search
DeepSeek Harness 免费搜索插件 —— 无需 API key,零成本,多引擎可切换。 一个给…
★ 761已汉化DSH
68.7
免费联网搜索liustack/modsearch
在官方 App 里模型能联网,切到 API 就不能了。ModSearch 把联网补回来:网页搜索、X…
★ 863已汉化DSH
68.5
OpenCode 免费模型FishBottle7/opencode2dsh
在 DSHDeepSeek Harness里原生使用 OpenCode Zen 的免费匿名模型。
★ 379已汉化DSH
67.8
AI 模型网关tingly-dev/tingly-box
Tingly Box Web UI 演示
★ 373已汉化DSH
67.4
WorkBuddy 账号池XDTrees/dsh-xdpool
把你能白嫖的模型额度接进 DSH 同一个池:WorkBuddy 多账号自动容错、十三家扫码登录、76…
★ 359已汉化DSH
67.1