前言¶
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 倉庫。