前言¶
在使用 DeepSeek Harness (DSH) 進行智能體開發或運行時,如果當前網絡環境存在本地代理(如 Clash、V2Ray 等),但直連海外網站不可達,手動配置環境變量或重啓進程會降低效率。dsh-net-proxy-plugin 作爲一個本地網絡代理兜底插件,旨在自動掃描系統中的代理配置,探測連通性,並在直連失敗時將可用代理接入正在運行的 DSH 進程。
插件簡介¶
本插件由 minatoAI 維護,是一個 MIT 許可的開源工具。它不內置代理服務,而是作爲 DSH 的網絡層補充:檢測系統代理、掃描本地端口,並在直連失敗時自動啓用檢測到的代理,確保 fetch 請求與子進程(如 git、pnpm)的網絡訪問可用。
核心功能¶
-
自動發現候選代理
按優先級掃描:配置文件extraProxies-> 環境變量(HTTPS_PROXY/HTTP_PROXY/ALL_PROXY)-> 系統代理(Windows 註冊表、macOSscutil、Linuxgsettings)-> 常見本地端口(7890, 10809 等,支持 HTTP 與 SOCKS5)。 -
連通性探測
對探測目標(默認爲 Google 204 與 GitHub)進行直連與逐候選代理的連通性測試。返回 HTTP 狀態碼 < 500 視爲可達。 -
自動決策
提供兩種激活模式:
-auto(默認):僅在直連失敗且存在可用代理時激活。
-always:存在可用代理即激活。
探測結果默認每 5 分鐘複檢一次(可通過配置關閉或調整),VPN 斷開或端口變更時可通過命令手動刷新。 -
激活範圍
- 進程內:接管所有 fetch 請求(undici dispatcher),覆蓋 LLM 調用、web_search 等場景。
- 子進程:通過設置HTTPS_PROXY/HTTP_PROXY/NO_PROXY環境變量,確保 git、pnpm 等啓動的子進程也走該代理。 -
WebFetchProvider 兼容
提供語義一致的net-proxyWebFetchProvider,可與 dsh 內置的web_fetch一鍵切換,支持自定義超時、響應大小限制與重定向規則。
安裝與啓用¶
該插件以 bundle 方式分發,安裝命令如下:
dsh plugin --profile web add github:minatoAI/dsh-net-proxy-plugin
安裝完成後,需要重啓 DSH 進程以使配置生效:
dsh --profile web
配置與使用¶
在 profile 的 cordis.patch.yml 中覆蓋 net-proxy 行,可自定義探測目標、超時時間、代理列表及激活策略。
- id: net-proxy
config:
targets: [https://www.google.com/generate_204, https://github.com]
probeTimeoutMs: 5000
reprobeIntervalMs: 300000
bypassHosts: [localhost, 127.0.0.1, ::1, api.deepseek.com, "*.deepseek.com"]
extraProxies: [http://127.0.0.1:7890]
probePorts: [7890, 7897, 10809]
activation: auto
在 Web UI 中,可以通過以下命令管理插件狀態:
- 輸入 /net-proxy 查看當前激活的代理、來源及直連可達性。
- 輸入 /net-proxy refresh 立即重新執行探測與決策。
若需讓 web_fetch 工具也走代理,需切換 fetchProvider:
- id: web
config:
searchProvider: deepseek-official
fetchProvider: net-proxy
注意事項¶
- 兜底方案:插件不強制接管網絡。當沒有可用代理或直連正常時,DSH 的行爲與未安裝該插件完全一致。
- 僅限 dsh 進程:插件僅讀取並影響當前 dsh 進程及其子進程的網絡訪問,不會修改 Windows 系統代理設置。
- 信任代理:插件會使用你係統中的代理服務轉發流量,請確保信任該本地代理。
結語¶
dsh-net-proxy-plugin 通過自動化代理發現與決策,解決了 DSH 環境下直連與代理切換的痛點。開發者無需手動干預,即可在直連失敗時自動利用本地可用代理。更多細節與源碼,可參考 GitHub 倉庫。