Bundle
dsh-proxy-switch
DSH 网络代理开关:直连失败自动回退到 HTTP/SOCKS5 代理,设置面板可配置代理地址
- Source
- sg88
- stars
- 1 stars
- License
- MIT
- Updated
- Updated 13 days ago
Readme
# dsh-proxy-switch DSH(DeepSeek Harness)网络代理开关插件:**直连网络不通时,自动改用配置的 HTTP/SOCKS5 代理重试**,代理地址可在 DSH 设置面板中随时修改。 ## 功能 - 🔌 **直连失败自动回退**:LLM 请求、网络搜索、web_fetch 等所有对外请求(均走 host 全局 `fetch`)直连失败(连接拒绝 / DNS 失败 / 超时 / 连接重置)时,自动用配置的代理重发一次。 - 🎛️ **设置面板分区**:DSH Web 设置弹窗新增「代理」分区,可配置: - 总开关(启用 / 停用代理回退) - HTTP(S) 代理地址(默认 `http://192.168.31.2:7890`) - SOCKS5 代理地址(默认 `socks5://192.168.31.2:7891`) - 代理选择模式(自动 / 始终 HTTP / 始终 SOCKS5) - 💾 **持久化**:设置写入 `~/.dsh/settings.yaml`,修改后**立即生效**,无需重启 DSH。 - 🧹 **零第三方依赖**:CONNECT 隧道与 SOCKS5 握手均自实现,不引入任何外部包。 ## 安装 ```bash dsh plugin --profile web add link:<本目录绝对路径> # 例如: dsh plugin --profile web add link:D:\deepseek\dsh-proxy-switch ``` 安装后 **重启 dsh web** 生效(`dsh web`),然后打开 Web 设置 → 代理。 ## 使用 1. 重启后在设置面板找到「代理」分区。 2. 打开「启用代理回退」开关。 3. 按需修改代理地址(HTTP 与 SOCKS5 可同时保留,模式选「自动」时 https 目标优先 HTTP 代理)。 4. 保存即生效:此后任何对外请求直连不通时会自动走代理。 ## 配置项 | 字段 | 类型 | 默认值 | 说明 | | --- | --- | --- | --- | | `enabled` | boolean | `false` | 总开关,关闭时所有请求保持直连 | | `httpProxy` | string | `http://192.168.31.2:7890` | HTTP(S) 代理地址 | | `socksProxy` | string | `socks5://192.168.31.2:7891` | SOCKS5 代理地址 | | `mode` | string | `auto` | `auto` 自动(https 优先 HTTP)/ `http` 始终 HTTP / `socks5` 始终 SOCKS5 | 对应 `~/.dsh/settings.yaml` 中的 `proxy:` 段。 ## 工作原理 - host 端(`lib/index.js`)注册 `proxy` 设置命名空间,并包装 `globalThis.fetch`。 - 包装逻辑:先直连 → 抛网络层错误且 `enabled=true` 时 → 用配置的代理重发(`lib/proxy-fetch.js`)。 - 代理通道自实现:HTTP 代理走 CONNECT 隧道(RFC 7230),SOCKS5 走 RFC 1928 握手;TLS 由 Node `tls` 处理,响应保持流式(SSE 正常)。 - client 端(`lib/client.js`)通过设置面板 slot(`settings.section`)注册「代理」分区 UI。 ## 开发 ```bash # 本地改动后(host 端 / client 端均无需构建,直接生效) # host 端改动需要重启 dsh web;client 端 bundle 内容变更会被 HMR 热载 ``` ## 许可 MIT
Install
dsh plugin --profile web add github:sg88/dsh-proxy-switch
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-proxy-switch from the hub
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.