dsh-http-proxy
支持设置LLM的代理地址
- Stars
- 0
- Language
- TypeScript
- Created
- Aug 26, 2026
- Updated
- Aug 27, 2026
Introduction
dsh-http-proxy
给 DeepSeek Harness(DSH)加「模型请求走代理、其它请求直连」的能力,不修改任何 DSH 官方代码。
本机访问不到大模型、但代理服务器能访问时,装上本插件并配好代理,DSH 就把所有模型 API 请求走代理发出;web 搜索、网页抓取、MCP 等其它请求仍走本机直连。
原理
插件在运行时把 globalThis.fetch 包一层(DSH 的 DeepSeek 适配器和 pi-ai 的 OpenAI/Anthropic SDK 都调用它),按目标域名决定走哪条路:
- 域名是模型 API 域名 → 走代理(
undici ProxyAgent,支持 HTTP/SOCKS5) - 其它域名 → 本机直连(原来的 fetch)
整个过程不改 DSH 源码;卸载后 globalThis.fetch 恢复原样,不残留任何东西。
安装(一条命令)
dsh plugin --profile web add github:elizax/dsh-http-proxy
web 是 profile 名,换成你自己的 profile 名(如 headless)。仓库里已带构建好的 lib/,安装时无需编译。
重启
dsh --profile web
配置
有两种方式,效果相同:
方式 A:网页 UI(推荐)
安装并重启后,打开 DSH 的 设置 → 插件配置,找到「HTTP 代理」卡片,填入代理地址,点保存。改完下一次请求生效,无需重启。卡片还支持「只代理这些域名」和「排除域名」,用于按需控制代理范围。
方式 B:环境变量(不改文件,适合临时试用)
$env:DSH_HTTP_PROXY = 'socks5://127.0.0.1:7890'
环境变量只提供代理地址,等价于在 UI 里填「代理地址」;域名过滤沿用默认的自动识别。若两者同时设置,以 UI(settings)里的 proxy 为准。环境变量值不合法(如无效 URL 或不支持的协议)时插件不会启动失败,而是保持直连并在日志里提示。
配置字段
UI 卡片与底层配置一一对应:
proxy(代理地址):代理 URL,支持http:、https:、socks4:、socks4a:、socks5:、socks5h:。留空则插件不生效。proxyHosts(只代理这些域名):留空 = 自动代理所有模型域名;填写 = 只代理列出的这些域名。自动识别的模型域名包括:api.deepseek.com(官方 DeepSeek 默认域名)DEEPSEEK_BASE_URL环境变量指向的域名(如果设置了)llm-pi-ai里配置的自定义网关域名(从 settings 自动读取)
excludeHosts(排除域名):永远不走代理的域名,优先级最高(即使被自动识别或列在proxyHosts里,也会被排除)。
卸载
dsh plugin --profile web remove dsh-http-proxy
dsh --profile web # 重启生效
卸载后 DSH 完全恢复直连,不残留任何配置改动。
限制
- 按域名区分「模型请求」和「其它请求」。如果某个非模型操作恰好也访问模型 API 的域名(例如某些网关同时承载搜索和模型),它也会走代理。
transport: websocket的流式传输不经fetch,不受影响(保持直连)。- 不支持代理认证。
给开发者(改源码后重新构建)
改完 src/ 后,重新构建并提交 lib/:
pnpm install
pnpm build # 生成 lib/
git add lib/
git commit -m "build"
License
MIT