dsh-apply-model-all:一键把当前会话模型同步到全部会话

前言

DeepSeek Harness(DSH)里,每个会话各自保存模型选择;官方「默认模型」只作用于尚未单独选过模型的会话,/model 也只会改当前所在会话。如果你已经在某个会话里试定了合适的 provider 和 model,却要把同一套选择铺到历史里开过的每一个会话,只能逐个打开再选一遍,既慢又容易漏。

社区插件 dsh-apply-model-all(维护者 SYXliuliuliu,分类:客户端)在 Composer 自带的模型选择器旁增加一个紧凑控件,用一次确认把「当前正在用的模型」写入所有能独立持有模型选择的会话。下面介绍它做什么、怎么装、怎么用,以及边界与注意点。

这是什么

dsh-apply-model-all 是 DSH 的客户端插件:不改动官方自带的模型下拉框,只在旁边多一个「Apply to all sessions」类控件。点击后确认目标模型,由宿主批量写入各会话的 per-session 模型选择;运行过程中会显示 live count。

它不 patch 官方 bundle、不改写 session 日志或 projection 缓存,而是调用与内置 /model 对话框相同的公开宿主 API:

sessionController.list({})                       → 列出所有会话及当前模型
sessionController.selectModel({ sessionId, … })  → 设置单个会话的模型

因此会话状态仍落在官方格式里;卸载插件不会留下额外脏数据。批量逻辑在宿主侧执行,关浏览器标签不会中断;客户端只负责发起任务并轮询进度。

界面与操作

安装并重启后,Composer 模型选择器左侧会出现类似布局(官方 picker 保持原样):

[⇉ Apply to all sessions]  [ deepseek-v4.1-flash ▾ ]
                            ^ 官方选择器,未修改

典型用法:

  1. 在任意会话里通过现有 picker 或 /model 选好要统一的 provider / model(控件会以「当前会话正在用的模型」为批量目标)。
  2. 点击 Apply to all sessions,在确认对话框里核对目标模型。
  3. 等待批量完成;界面会随进度更新计数。若部分会话失败,响应里会按原因分组(失败明细最多 50 条)。

重复点击时,插件会先通过 list() 读取各会话当前模型,仅对 provider 与 model 已一致的会话跳过写入(比较 deliberately 不含 reasoning effort:该字段属于设置层,不是会话存储的模型选择的一部分,纳入比较会导致去重失效、每次全量重写)。已在目标模型上的会话不会再次调用昂贵的 selectModel 解析与恢复路径。

安装与启用

安装命令(来自仓库 README):

dsh plugin --profile <your-profile> add dsh-apply-model-all

安装后需要重启 DSH 应用:bundle patch 层与 client bundle 均在启动时加载,运行中安装不会生效。

环境要求(README 与 package.json 可核对部分):

  • DeepSeek Harness 0.1.0-rc.6 或更新版本。
  • 使用 Web UI(控件注入在 Composer 槽位)。
  • Node >= 18(插件包 engines 字段)。

插件无配置项:宿主暴露两条路由,无设置界面:

POST /apply-model-all/start    {provider, model, reasoningEffort?}  → {runId}
GET  /apply-model-all/status                                        → {run: {…}}

同一时刻只允许一次批量任务;再次发起会返回 409 并带上进行中的进度。

作用范围与限制

情况 行为
能独立持有模型的会话 会更新
Subagent 会话 不触碰;跟随父会话路由,宿主对它们拒绝 per-session 选择(owned by subagent routing),改父会话即可
已在目标模型上 跳过,不写
被其他进程锁定的会话 失败,并给出原因

若某会话在另一进程里正被 live write handle 占用,外部无法写入,常见错误为 already owned by an active write handle。在当前正在运行的 DSH 应用内点击控件通常不会遇到此问题,因为锁持有者与宿主一致。

另一点:底层 selectModel 还会在后台把所选模型存为默认,因此新开的会话也会从该模型起步。

适用场景与安装前注意

适合需要把「当前试定的模型」一次性对齐到大量历史会话的 DSH 用户,例如换默认推理模型后希望旧会话跟跑同一套 provider/model,又不想逐个 /model。

DSH 生态强调「一切皆插件」;SkillHub 目录页 是社区收录站点,与 DeepSeek / 幻方无官方从属关系。安装前建议自行查看 GitHub 源码 与 MIT 许可证;插件以当前 DSH 进程权限运行,批量写会话模型等同于你在 UI 里多次改模型,请确认符合你的安全与合规预期。

结尾

dsh-apply-model-all 用官方 sessionController 写路径补上了「全历史会话统一模型」这一缺口:一键确认、宿主批量、可去重、可感知失败。需要细节或 issue 时可到仓库 README(含中文版 README.zh.md)与 GitHub Issues 查阅。

  • 目录页:https://www.skillhub.cn/plugins/SYXliuliuliu/dsh-apply-model-all
  • GitHub:https://github.com/SYXliuliuliu/dsh-apply-model-all
羽毛球分组比赛记分
小程序二维码

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

小夜