前言¶
在開發基於 DeepSeek Harness(DSH)的智能體或工作流時,有時需要統一管理 HTTP 代理,有時又只需在特定子進程或請求中啓用代理。直接在系統環境變量中設置往往缺乏靈活性,且難以在 Web 界面中動態調整。DSH 生態中的 dsh-proxy-env 插件提供了在 DSH 內部統一管理代理環境的能力,支持 Host 側的全局分發與子進程環境注入,以及 Web 側的配置卡片。
安裝與啓用¶
通過官方插件命令安裝,安裝後需重啓對應 Profile 的 Web 進程才能生效。
dsh plugin --profile web add github:localSummer/dsh-proxy-env#main
安裝完成後,使用 --dump-config 檢查配置層,應出現 # == dsh-proxy-env 層且包含 id: proxy-env。
核心功能¶
該插件主要解決代理環境的注入與控制問題,核心能力如下:
-
代理模式
- all 模式:代理 API 調用、子進程、Git、npm 等所有流量,通過設置
HTTP(S)_PROXY/ALL_PROXY/NO_PROXY環境變量實現。 - include 模式:僅代理指定主機清單內的 in-process fetch 請求,子進程環境變量保持不變。
- all 模式:代理 API 調用、子進程、Git、npm 等所有流量,通過設置
-
Host 側控制
- 在 Host 側設置全局 dispatcher 與子進程代理環境。
- 在 Web 設置頁提供「代理環境」配置卡片,支持開關與配置項修改。
-
安全與容錯
- 代理地址支持
http://或https://協議。 - 與機器既有
no_proxy合併,並強制包含localhost和127.0.0.1。 - 代理不可達時啓動降級直連並告警;在
on模式下,若代理不可達,插件拒絕寫入enabled=true。
- 代理地址支持
配置項¶
配置命名空間爲 settings.yaml 的 proxy-env 段,也可在 Web 設置頁中編輯。主要字段包括:
| 字段 | 類型 | 說明 |
|---|---|---|
enabled |
boolean | 是否啓用代理 |
url |
string | 代理地址,默認 http://127.0.0.1:7890 |
mode |
all | include |
代理模式(all 或 include) |
proxyHosts |
string[] | include 模式下的主機清單 |
noProxy |
string | all 模式下的豁免清單 |
命令與工具¶
插件提供命令行工具與 Web 交互接口。
/proxy 命令¶
在 DSH Web 界面或終端中可直接調用以下命令:
/proxy on [代理地址]
/proxy off
/proxy status
proxy_env 工具¶
提供程序化控制接口,支持 on / off / status 動作,以及 url、mode、proxyHosts、noProxy 參數。
依賴與兼容性¶
- 運行時依賴:
schemastery、undici。 - DSH 版本要求:兼容
dsh >= 0.1.2-rc.1。 - 卸載注意:Host 側卸載插件時,會通過
ctx.effect還原 dispatcher 與環境變量,確保系統狀態恢復。
總結¶
dsh-proxy-env 爲 DSH 提供了一套輕量級的代理環境管理方案,適用於需要精細化控制網絡流量的工作流開發場景。開發者可通過設置頁或命令行快速切換代理狀態,無需修改系統環境變量。
- 插件目錄:https://www.skillhub.cn/plugins/localSummer/dsh-proxy-env
- 源碼地址:https://github.com/localSummer/dsh-proxy-env