前言¶
在 DeepSeek Harness (DSH) 中,代理配置通常涉及修改配置文件并重启进程。dsh-proxy 插件解决了这个问题,它接管全局的 fetch 调用,允许通过 Web 设置或配置文件热重载 HTTP(S)/SOCKS5 路由,无需重启 DSH。
插件介绍¶
tr1v3r/dsh-proxy 是一个 DSH 插件,用于路由所有进程内出站请求(LLM 提供商、web_search、streamable-http MCP)。
- 维护者:tr1v3r
- 类别:联网工具
- 许可证:MIT
核心功能¶
- 全局路由:拦截所有进程内出站请求,通过 HTTP(S) CONNECT 或 SOCKS5 代理转发。
- 运行时切换:无需重启,即可切换直连、跟随系统或手动代理模式。
- 协议支持:支持 HTTP(S) 和 SOCKS5。
- Bypass 规则:支持 noProxy 规则(undici 风格匹配器)。
- 子进程环境变量:支持将代理环境变量导出给子进程(
exportEnv: true)。 - 系统代理检测:支持 macOS 系统设置代理检测(系统模式)。
- 回环绕过:默认跳过本地回环地址。
安装与启用¶
插件通过 npm 安装。在目标配置文件目录下执行以下命令:
dsh plugin --profile <name> install --no-frozen-lockfile
配置与使用¶
通过 Web 设置¶
- 打开 DSH Web 界面。
- 进入 Settings → General → Network proxy。
- 从下拉菜单选择模式:Direct、Follow system 或 Manual。
- 在 Manual 模式下输入代理地址和 Bypass 列表。文本字段在失焦时保存。
通过配置文件¶
编辑 ~/.config/dsh/profiles/<name>/cordis.patch.yml。
- id: dsh-proxy
config:
mode: manual # direct | system | manual
proxy: socks5://127.0.0.1:1080 # http://…, https://…, socks5://…
noProxy: # optional bypass list
- localhost
- .internal.example
- registry.corp:443
bypassLoopback: true # true: loopback stays direct
exportEnv: true # set HTTP(S)_PROXY for children
运行时切换¶
- Web 设置:在侧边栏底部(设置上方)使用图标按钮切换模式。
- 热重载:修改
cordis.patch.yml后,配置会自动生效,无需重启。
注意事项¶
- 凭证安全:嵌入用户名/密码的代理 URL 以明文存储在磁盘上,仅受文件权限保护。建议在本地使用无认证代理。
- 环境变量传播:凭证会作为
HTTP(S)_PROXY环境变量传播到 DSH 进程。子进程(如 stdio MCP 服务器)可读取这些变量。 - 请求中断:如果切换代理后,某个请求仍在运行约 30 秒,该请求将被中断。
- 系统模式限制:系统模式目前仅支持 macOS,不支持 Windows 注册表、Linux 桌面或 PAC。
- URL 有效性:无效的 URL 不会被保存。
总结¶
dsh-proxy 提供了 DSH 全局出站流量的代理控制,支持热重载和多种模式。适合需要在开发或运行时动态切换网络环境的场景。