dsh-model-pin:限制模型请求范围以防止 llama.cpp 路由器重新加载

前言

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 仓库。

羽毛球分组比赛记分
小程序二维码

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

小夜