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 倉庫。

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

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

小夜