前言¶
DeepSeek Harness (DSH) 允许每个聊天会话自主选择模型,后台助手也能请求其他模型。在只能加载一个本地模型的机器上,这些“越界”的请求会导致已加载模型被驱逐,触发 llama.cpp 路由器重新加载。这不仅耗时(几分钟),还会导致 prompt cache 丢失。此外,子代理继承的是创建会话时的模型,而非当前正在使用的模型,这会引发路由错误。dsh-model-pin 插件在 DSH 的解析层(agent/request 流水线)实施允许列表,拦截不符合要求的请求。
插件简介¶
dsh-model-pin 是 DeepSeek Harness 的一个插件,由 d3vmeh 维护。它解决的是“模型轮盘赌”问题:强制每提供者的模型请求必须在允许集合内,将不匹配的请求重定向或拒绝,并在 llama.cpp 路由器重新加载时发出警告。该插件依赖 @deepseek-ai/schemastery。
核心功能¶
- 限制每提供者的模型请求在允许集合内。
- 将不匹配的请求重定向或拒绝。
- 在 llama.cpp 路由器重新加载时发出警告。
- 在 DeepSeek Harness 解析层实施允许列表。
- 防止子代理继承错误的模型。
- 防止 prompt cache 丢失(通过避免模型重新加载)。
安装与启用¶
使用官方命令安装:
dsh plugin --profile web add dsh-model-pin
安装后,需要在配置文件中启用。通常配置文件位于 ~/.dsh/profiles/web/cordis.patch.yml。
典型用法¶
在配置文件中添加 model-pin 插件段。示例配置如下:
- id: model-pin
config:
providers:
llamacpp:
allow: [qwen3.8-q4-long, qwen3.8-fast]
fallback: qwen3.8-q4-long
action: redirect
warnOnSwitch: true
- allow:指定允许的模型列表。如果只保留一个条目,即进入单模型模式。
- fallback:默认模型,通常是
allow列表中的第一个。 - action:处理不匹配请求的方式。
redirect(重定向,默认)或reject(拒绝)。 - warnOnSwitch:当请求可能导致模型切换时是否发出警告。
适用场景与注意¶
- 资源受限环境:当机器只能驻留一个本地模型时,此插件能避免因意外请求导致的模型重新加载和缓存丢失。
- 严格的路由控制:需要确保所有子代理和后台任务始终使用特定模型。
- 观察性质:切换警告仅用于观察,无法阻止重新加载。若要彻底禁止重新加载,需将
allow设置为单模型列表。 - Web 界面差异:网页模型选择器不知道 pin 的存在,可能显示错误的模型。实际运行情况请查看终端日志或
/logs。 - 继承机制:子代理继承的是创建会话时的模型,而非当前会话使用的模型。此插件在会话边界进行拦截。
- 跨提供者:v1 版本不支持跨提供者重定向。
- 优先级:插件在 profile 加载时注册,拥有最后决定权,但其他早于它加载的 root 插件可能覆盖它。
- 许可证:MIT。
总结¶
dsh-model-pin 通过在 DSH 解析层强制实施允许列表,解决了模型频繁切换导致的性能损耗和缓存丢失问题。对于需要稳定模型路由或资源受限的场景,这是一个实用的约束工具。更多细节请参考 GitHub 仓库。