前言¶
在 DSH 插件体系中,宿主进程可以通过插件获得新的能力。对于需要把 dsh 发出的 LLM 请求导向指定 HTTP 代理的场景,dsh-llm-proxy 提供了一个比较直接的插件方案。
它主要解决三类问题:让 dsh 的 LLM 请求走配置中的代理地址;在设置变更时即时生效,而不是必须重启;通过本地接口查看当前状态并测试连通性。
下面介绍它的定位、安装方式、配置字段和需要注意的限制。
这是什么¶
dsh-llm-proxy 是 DeepSeek Harness (dsh) 的全局 HTTP 代理插件。它使用 undici 的 setGlobalDispatcher 和 EnvHttpProxyAgent 接管 dsh 的 fetch 代理路由,使 dsh 的 LLM 请求能够走配置的代理。
该项目由 Ye-Yu-Mo 维护,许可证为 MIT。插件以 bundle 包形式安装,会自动加入 dsh.profile.bundles,在下次启动时激活。
核心功能¶
- 全局接管:用 undici
setGlobalDispatcher加EnvHttpProxyAgent接管 dsh 的 fetch 代理路由。 - 代理配置:让 dsh 的 LLM 请求走配置中的代理地址。
- 热切换:设置变更后即时生效,无需重启。
- 可恢复:插件停止或禁用时,会恢复基线 dispatcher,不留进程级残留。
- 状态查看:提供本地接口查看当前生效模式。
- 连通性测试:提供本地接口测试代理到目标端点的连通性。
安装与启用¶
先使用已核实的 GitHub 安装命令,将插件安装到 web profile:
dsh plugin --profile web add github:Ye-Yu-Mo/dsh-llm-proxy
如果是本地调试,也可以先 clone 仓库,再使用 link 安装:
git clone https://github.com/Ye-Yu-Mo/dsh-llm-proxy
dsh plugin --profile web add link:$(pwd)/dsh-llm-proxy
安装后,需要重启 dsh web,使 bundle 补丁生效。随后查看日志文件:
~/.dsh/dsh.log
看到 [llm-proxy] 日志,即说明插件已装载。
配置¶
可以通过 dsh 设置页的「LLM 代理」项配置,也可以直接编辑本地设置文件:
~/.dsh/settings.yaml
下面是一个示例配置:
llm-proxy:
enabled: true
url: http://127.0.0.1:7891
noProxy:
- localhost
- 127.0.0.1
- ::1
配置项含义如下:
llm-proxy.enabled:是否启用代理接管。llm-proxy.url:HTTP(S) 代理地址。llm-proxy.noProxy:不走代理的地址列表。
配置变更后,插件支持即时生效,无需重启 dsh。
状态与测试接口¶
插件提供两个本地 HTTP 接口,且 HTTP API 为 loopback-only,用于降低 LAN 探测风险。
查看当前状态:
GET /api/llm-proxy/status
调用后可以查看当前生效模式,以及 env.httpProxy、env.httpsProxy 字段。
测试代理连通性:
POST /api/llm-proxy/test
调用时需要提交以下字段:
url:待测试的代理地址。probeUrl:目标端点地址。timeoutMs:超时时间。
适用场景与注意¶
适合以下情况:
- 你希望 dsh 的 LLM 请求统一走指定代理。
- 你需要在运行时切换代理配置,而不是每次修改后重启 dsh。
- 你需要一个本地接口确认当前代理状态,并测试目标端点是否可达。
使用前注意:
- 插件以当前 dsh 进程权限运行,安装前应检查源码与许可证。
- 项目要求 Node >=24。
- dsh 设置页的配置命名空间白名单是硬编码的,第三方插件无法自注册;当前需要手动把
llm-proxy加入白名单,设置页表单才可用。 - 插件停止或禁用时,会恢复基线 dispatcher,避免留下进程级残留。
- 安装命令请使用资料中给出的命令,不要凭名称自行拼接。
结尾¶
dsh-llm-proxy 的价值,是把 dsh 的 LLM 请求代理能力做成了可配置、可观察、可回退的插件能力。
项目地址:
https://github.com/Ye-Yu-Mo/dsh-llm-proxy
如果你在使用 DSH 插件目录,可以按项目名 dsh-llm-proxy 或作者 Ye-Yu-Mo 检索。