在 DSH 環境中使用模型時,有時會遇到特定模型端點受網絡區域限制,需要通過代理訪問,而同一提供者的其他模型直連正常的情況。若通過全局環境變量配置代理,會影響所有請求;若直接修改 baseURL,則可能隱藏真實上游。dsh-plugin-model-proxy 解決了這一問題,它允許在傳輸層對特定的提供者/模型對進行代理路由,其他請求保持直連,且不會修改配置中的 baseURL。
這是一個社區 DSH 插件,由 biyuhao 維護。它提供了一套規則系統,用於將特定的模型請求路由到指定的代理服務器,並內置了設置界面以支持批量與分組管理。
核心功能¶
插件支持基於規則的精細化路由,匹配優先級爲:精確模型 > 前綴匹配 > 通配符。
- 路由規則:支持
{provider, model, proxyUrl, enabled}格式配置,精確模型匹配優先級最高。 - 目的過濾:支持在規則中添加
purpose字段,例如compaction,讓特定類型的請求走代理,而對話等請求保持直連。 - 憑據集成:支持通過
credentialRef引用 DSH 憑據服務中的user:password條目,將代理密碼與配置解耦。 - 連通性測試:新增代理規則後會自動進行探測,檢查 CONNECT 或 SOCKS 握手是否成功,結果記錄在主機日誌中。
- 協議支持:支持
http://、https://、socks5://和socks5h://。 - 實時生效:修改規則後,下一次
llm/stream調用即可生效,無需重啓進程。 - 設置界面:通過
Settings → Plugins → Model Proxy訪問,提供提供者選擇器(下拉菜單或自定義文本)和批量管理功能。
安裝¶
推薦使用 DSH 的 profile 管理方式安裝,該方式會自動處理依賴並注入加載條目。
dsh plugin --profile <name> add dsh-plugin-model-proxy
配置¶
通過 UI 配置¶
進入 Settings → Plugins → Model Proxy 頁面,通過界面選擇提供者、模型、代理地址並啓用規則。
通過文件配置¶
在 ~/.dsh/settings.yaml 中添加 model-proxy 配置段。配置項 proxyUrl: "" 表示直連(免代理)。
model-proxy:
enabled: true
debug: false
defaultProxy: ""
rules:
- provider: opencode
model: muse-spark-1.2-contributor
proxyUrl: socks5://127.0.0.1:1080
enabled: true
- provider: opencode
model: "*"
proxyUrl: ""
enabled: true
注意事項與手動安裝¶
插件以當前 dsh 進程的權限運行,安裝前應檢查源碼與許可證。
- 手動安裝:如果需要手動管理配置,需先在 profile 目錄安裝依賴,然後創建或修改
~/.dsh/cordis.patch.yml,插入一行 loader 條目。
# ~/.dsh/cordis.patch.yml
- insert:
- id: model-proxy/host
name: dsh-plugin-model-proxy
config: {}
- 字段名與嵌套:loader-entry 的標識字段爲
name:,而非module:。新插入的行必須嵌套在insert:下。注意,僅主機半部分是 loader entry,瀏覽器半部分由dsh.client自動發現。 - 避免衝突:不要手動添加
model-proxy/client行,這會導致瀏覽器代碼在 Node 進程中運行。此外,不要將手動配置路徑與上述推薦的 profile 管理安裝方式混合使用,否則會在啓動時產生衝突。
該插件通過劫持 fetch 並監聽 llm/stream 事件實現路由,不修改 baseURL,保持了配置的原貌。完整源碼與目錄可查看 GitHub。