dsh-system-proxy:讓 DeepSeek Harness 複用 Windows 系統代理的插件

前言

在 Windows 上跑 DeepSeek Harness(下稱 DSH),如果需要走代理,常見做法有兩種:給代理軟件打開 TUN 模式,讓它接管整臺機器的路由;或者在啓動 DSH 之前手動設置 HTTP_PROXY / HTTPS_PROXY 環境變量。前者要建虛擬網卡改路由,後者容易漏掉子進程,而且要在每個終端裏重複配置。

下面介紹的 bozheng-li/dsh-system-proxy 走的是第三條路:讀取 Windows 當前用戶已經配置好的 WinINET 系統代理,讓 DSH 內部的模型請求、插件安裝和開發工具共用這條網絡路徑,不需要 TUN,也不需要手工填 IP 和端口。

這是什麼

dsh-system-proxy 是一個 DSH 插件,維護者是 Bozheng-Li。它解決的問題很單一:讓運行在 Electron 中的 DSH 直接複用 Windows 系統代理,同時保持系統網絡不被接管。

插件當前版本是 0.1.1,GitHub 星標 1,許可證爲 MIT,目錄下有對應的 npm 包 dsh-system-proxy。它的運行鏈路可以概括爲:

Windows WinINET ──> System Proxy ──> DSH / undici / child processes
                             │
                             └── TUN: not required

也就是說,插件在 DSH 啓動時讀取當前用戶的 WinINET 設置,把代理規則注入 Node.js/undici 的請求路徑以及 DSH 派生的子進程。

核心能力

README 裏列出的能力有三項,這裏按原文記錄:

  1. 自動讀取當前用戶的 Windows HTTP 代理,不需要提前填寫地址和端口。
  2. 不改路由、不創建虛擬網卡、不開放監聽端口,等於不接管系統網絡。
  3. 模型請求、Web Search、HTTP MCP、pnpm 與 git 共用同一條代理路徑,安裝工具同樣生效。

覆蓋範圍有邊界,README 寫得很明確:插件覆蓋 Node.js/undici 請求及 DSH 派生的子進程;Electron 自身負責的登錄與更新流量不保證覆蓋。

安裝與啓用

插件對宿主版本和操作系統有要求:DSH 0.2.1-rc.2 至 0.3.0 之前的版本,Windows 10/11,Node.js 要求 >=22.19.0。

最簡安裝方式是在 DSH 的「插件 → 添加插件」中輸入包名:

dsh-system-proxy@0.1.1

安裝完成後需要完全退出並重新打開 DSH,否則插件不會在下一次啓動時接管請求。

如果習慣用命令行,可以用下面的方式。前提是 dsh 已經在 PATH 中:

dsh plugin --profile desktop add dsh-system-proxy

桌面版自帶的 CLI 不在 PATH 時,可以直接調用它的完整路徑:

& "D:\deepseek-harness\resources\runtime\cli\bin\dsh.cmd" `
  plugin --profile desktop add dsh-system-proxy

也可以從 GitHub 直接安裝:

dsh plugin --profile desktop add "github:Bozheng-Li/dsh-system-proxy"

啓用步驟按順序是三步:

  1. 打開代理軟件的系統代理。
  2. 保持 TUN 關閉。
  3. 重啓 DSH。

插件啓動時讀取 Windows 當前用戶的 WinINET 設置,默認不需要填寫 IP 或端口。

典型用法

大部分場景下不需要額外配置,插件默認值已經夠用:

mode: auto
useWindowsBypass: true

mode: auto 表示跟隨 Windows 系統代理,useWindowsBypass 爲 true 表示合併 Windows 的繞過列表。

如果希望固定使用某個代理地址,在 %USERPROFILE%\.dsh\profiles\desktop\cordis.patch.yml 中加入:

- id: system-proxy
  config:
    mode: manual
    proxyUrl: http://127.0.0.1:7897

配置項與優先級按 README 的記錄如下:

配置 說明
mode: auto 跟隨 Windows 系統代理,默認
mode: manual 始終使用 proxyUrl
mode: off 不應用插件代理
useWindowsBypass 合併 Windows 繞過列表,默認 true

優先級從高到低是:顯式 HTTP_PROXY / HTTPS_PROXY 環境變量 → 插件配置 → Windows 系統代理。

兩個限制需要注意:PAC/WPAD 不支持;SOCKS 代理需要填寫代理軟件提供的 HTTP 或 mixed 端口。

驗證與排查

插件接管後,啓動日誌中會出現這一行:

dsh-system-proxy: using http://127.0.0.1:7897 from Windows system proxy

想確認 Windows 側設置和代理端口是否正常,可以執行:

Get-ItemProperty `
  'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings' |
  Select-Object ProxyEnable, ProxyServer

Test-NetConnection 127.0.0.1 -Port 7897

如果插件沒有生效,README 建議依次檢查:系統代理已開啓、端口正在監聽、DSH 已完全退出並重啓、當前 profile 是 desktop、沒有被顯式代理環境變量覆蓋。

卸載命令:

dsh plugin --profile desktop remove dsh-system-proxy

執行後同樣需要重啓 DSH。

適用場景與注意

適合的場景比較明確:已經在 Windows 上配置了系統代理,希望 DSH 內部所有出網請求(模型調用、Web Search、HTTP MCP、pnpm、git)走同一條鏈路,同時不想開啓 TUN 模式的用戶。

需要留意的幾點:

  1. 插件覆蓋的是 Node.js/undici 請求和 DSH 派生的子進程,Electron 自身的登錄與更新流量不保證覆蓋。
  2. 插件以當前 DSH 進程的權限運行,安裝前建議先檢查源碼與許可證。插件是 MIT 許可證,倉庫公開。
  3. 條件覆蓋範圍有限:只支持 Windows 10/11,且要求 DSH 版本在 0.2.1-rc.2 到 0.3.0 之前。
  4. 項目當前星標爲 1,屬於很新的插件,後續兼容性變化需要自己跟蹤。

結尾

dsh-system-proxy 的價值在於把「讓 DSH 走代理」這件事簡化成一次安裝加三步啓用,代價是不接管系統網絡、只覆蓋 DSH 內部的請求路徑。如果你只想複用現有的 Windows 系統代理,不想動路由,這個插件是目前比較直接的做法。

目錄頁:https://www.skillhub.cn/plugins/Bozheng-Li/dsh-system-proxy

倉庫:https://github.com/Bozheng-Li/dsh-system-proxy

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

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

小夜