前言¶
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 ▾ ]
^ 官方选择器,未修改
典型用法:
- 在任意会话里通过现有 picker 或
/model选好要统一的 provider / model(控件会以「当前会话正在用的模型」为批量目标)。 - 点击 Apply to all sessions,在确认对话框里核对目标模型。
- 等待批量完成;界面会随进度更新计数。若部分会话失败,响应里会按原因分组(失败明细最多 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