前言¶
DSH(DeepSeek Harness)的出站網絡默認走啓動時的網絡策略,通常是直連。當你需要臨時把模型 API、web_search、web_fetch、MCP、插件下載、bash 子進程這幾路流量統一指向代理時,常見做法是改系統代理或改 .env,然後重啓進程。改系統代理的問題是同機其它程序(瀏覽器、NAS 服務)也被帶走;改 .env 需要重啓,無法在運行時按需切換。
dsh-proxy-gate 解決的是這個問題:在插件設置頁或會話裏用 /proxy 命令一鍵切換 DSH 進程的出站代理,不改系統代理、不改 .env、不重啓 DSH,同機其它程序始終直連。
這是什麼¶
dsh-proxy-gate 是 elliotsu1107 維護的 DSH 插件,分類爲聯網工具,在社區目錄 SkillHub 上有目錄頁。它只作用於 DSH 進程自身的流量:開啓時把 undici 全局 dispatcher 換成指向指定代理的 dispatcher,關閉時恢復 DSH 啓動時的網絡策略。
有兩點需要先說清楚:
- 它不是系統代理開關,NAS 上其它程序不受影響。
- 它改的是運行時狀態。地址非法時命令直接報錯,不會靜默回退直連。
安裝與啓用¶
README 給出的安裝命令是:
dsh plugin --profile web add "$PWD" --ignore-scripts
也可以通過 plugin_manager 以本目錄安裝,行 id 爲 include:proxy-gate。裝卸前建議先讀一遍源碼,運行時依賴從 DSH 安裝解析 @deepseek-ai/dsh-http-proxy 和 @deepseek-ai/schemastery,兩者都是 optional peerDependency,沒有第三方運行時依賴。
裝好後打開 設置 → 插件 → 出站代理,面板頂部是狀態膠囊(已開啓 / 已關閉 / 已開啓(未生效)),下面是代理地址輸入框和「啓用代理 / 關閉代理」按鈕,還有「測試連通性」。面板與 /proxy 命令讀寫同一份配置,兩邊操作互相可見,面板每 2.5 秒刷新一次狀態。
卸載命令:
dsh plugin --profile web remove dsh-proxy-gate
卸載時插件 dispose 會調用安裝時拿到的 restore 函數,恢復進程原有 dispatcher 與環境變量。
典型用法¶
下面這條路線不依賴圖形界面,適合腳本化或無頭環境。
1、查看當前狀態。當前出口來自 DSH 自己的路由判定 proxyRouteFor,與真實請求同一套邏輯,不是讀環境變量:
/proxy
# 或
/proxy status
2、設置代理地址並啓用:
/proxy set http://192.168.1.100:7890
/proxy on
/proxy set 可以省略 http://。代理地址可以是局域網內另一臺機器,例如同網段裏跑 Clash 的路由器或虛擬機。
3、做一次連通性測試,走當前通道打一次 HTTP,輸出狀態碼、耗時和響應片段:
/proxy test
# 也可以指定 URL
/proxy test https://www.google.com
4、關閉代理,恢復直連:
/proxy off
代理掛掉時 /proxy off 仍然可用:命令在 Host 側執行,不經過模型,Web UI 又走回環直連。
配置項¶
配置項在插件配置裏可改,也可以只用命令。四個字段都是 volatile,保存後原地生效,不需要重啓插件:
| 字段 | 默認 | 說明 |
|---|---|---|
enabled |
false |
是否啓用代理 |
proxyUrl |
http://127.0.0.1:7890 |
代理地址;只支持 http(s),不支持內嵌賬號密碼 |
noProxy |
空 | 額外直連名單(逗號分隔,不支持 CIDR);迴環地址由核心強制直連 |
testUrl |
https://www.gstatic.com/generate_204 |
/proxy test 默認地址;直連時打不開屬正常,說明沒走代理 |
行爲細節¶
有幾條邊界值得在用之前知道。
- 迴環地址(
localhost/127.0.0.1/::1/[::1])始終直連,Web UI 不會繞進代理。 - 子進程(bash 工具、
curl、git、pnpm)通過proxyEnvironmentForChild()繼承同一策略,HTTP_PROXY/HTTPS_PROXY/NO_PROXY大小寫都會寫入。 - 代理不可達時插件不會自動改配置,需要手動
/proxy off回直連或/proxy set換代理。
README 裏記錄了兩種驗證方式,可以做參考:單元測試 node --test test/*.test.mjs 共 6 項,覆蓋地址校驗、volatile 讀取、開啓/關閉/非法地址/釋放狀態機;實機切換用本機起的臨時代理做對照,開啓後子進程環境出現 HTTP_PROXY/HTTPS_PROXY=http://127.0.0.1:18090、NO_PROXY=localhost,127.0.0.1,::1,[::1],對照代理記錄到模型 API 域名的 CONNECT 與測試請求,關閉後這些變量全部消失、對照代理不再收到新連接。截至當前 README,作者也標註了未驗證的部分:/proxy 在聊天框人工提交後的實際執行結果,以及面板在瀏覽器中的實際渲染與交互。
適用場景與注意¶
適合需要在運行時臨時切換出站通道的場景:模型 API 與工具調用想走代理、又不想影響同機其它程序;或者代理源經常變化,不想改 .env 重啓進程。
有三件事需要注意。第一,插件以當前 DSH 進程的權限運行,能控制進程內全部出站流量,包括 bash 子進程的環境變量,權限面比看起來大,安裝前應檢查源碼與許可證。第二,proxyUrl 只支持 http(s),SOCKS、內嵌賬號密碼、帶路徑的地址都會被拒絕,用之前確認代理類型匹配。第三,社區目錄是獨立站點,與 DeepSeek / 幻方無官方從屬關係,安裝與版本以 GitHub 倉庫爲準。
鏈接與文檔¶
- 目錄頁:https://www.skillhub.cn/plugins/elliotsu1107/dsh-proxy-gate
- GitHub:https://github.com/elliotsu1107/dsh-proxy-gate
- 項目文檔:https://github.com/elliotsu1107/dsh-proxy-gate/blob/main/docs/README.md
- 變更記錄:https://github.com/elliotsu1107/dsh-proxy-gate/blob/main/CHANGELOG.md