Back to home@elizax

dsh-http-proxy

支持设置LLM的代理地址

Stars
0
Language
TypeScript
Created
Aug 26, 2026
Updated
Aug 27, 2026
GitHub repo

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