前言¶
DeepSeek Harness(DSH)的代理策略在启动器加载插件之前就通过 .env 一次性设置完毕。如果把 .env 写成 https_proxy=http://127.0.0.1:7897(Clash),那么 Clash 一关,DSH 就会全线断网。插件加载时机晚于 .env,无法中途修改已装好的策略。
dsh-proxy-switch 为 DSH 提供了一个本地路由器,接管出站代理选择。它让 DSH 通过一个固定端口(默认 17897)连接到这个路由器,再由路由器在每次连接时决定是走 Clash 还是直连,并在界面提供一键切换。
这是什么¶
dsh-proxy-switch 是 DeepSeek Harness 的出站代理开关插件,维护者为 tonyAmadeus。它是一个本地 HTTP 代理,根据当前模式在 Clash 与直连之间自动选路,无需重启 DSH。
核心功能:
- 本地路由器监听 HTTP/HTTPS 代理请求
- 在线检测 Clash 状态,决定是否走代理
- 提供「自动」「直连」「走 Clash」三种模式
- 聊天框按钮与设置页同步切换
- 支持 Clash Verge Rev、原版 Clash 等常见客户端
安装与启用¶
安装插件¶
从 npm 安装(推荐):
dsh plugin add dsh-proxy-switch@0.3.1
也可以锁定 git tag:
dsh plugin add "git+https://github.com/tonyAmadeus/dsh-proxy-switch.git#v0.3.1"
启用路由器¶
编辑 ~/.dsh/.env(Windows:C:\Users\<user>\.dsh\.env),加入以下两行:
http_proxy=http://127.0.0.1:17897
https_proxy=http://127.0.0.1:17897
保存后重启 DSH。.env 只在启动时读取,修改后需要重启。
端口
17897必须与插件配置中的routerPort一致,否则路由器无法响应请求。
使用方式¶
插件提供两个入口:
- 设置 → 代理:完整设置页,可查看运行状态、切换模式、显示/隐藏聊天框按钮
- 聊天输入框右下方的 🌐 按钮:快速切换当前模式
| 模式 | 行为 | 适用场景 |
|---|---|---|
| 自动(默认) | 探测 Clash 是否在线:在线走 Clash,离线直连 | 日常使用 |
| 直连 | 一律直连 | 明确不开 Clash 时 |
| 走 Clash | 一律走 Clash,不自动回退 | 必须确保走特定节点时 |
切换即时生效,路由器会在每条连接上重读模式文件。
配置项¶
默认配置在插件的 cordis.patch.yml。如需覆盖,在 profile 的 ~/.dsh/profiles/<名字>/cordis.patch.yml 中添加同 id 的条目:
- id: dsh-proxy-switch
config:
routerPort: 17897
clashPort: 7897
| 字段 | 默认值 | 说明 |
|---|---|---|
routerPort |
17897 |
本地路由器监听端口 |
clashPort |
7897 |
Clash / Mihomo 的混合端口(Clash Verge Rev 默认 7897,原版 Clash 常见 7890) |
modeFile |
$DSH_HOME/proxy-mode.txt |
模式文件(auto / direct / clash) |
logFile |
$DSH_HOME/dsh-proxy-switch.log |
运行日志(超过 512KB 自动截断) |
uiFile |
$DSH_HOME/proxy-ui.json |
界面状态(按钮显示开关) |
$DSH_HOME 默认为 ~/.dsh,可通过环境变量覆盖。
排障¶
检查路由器是否在监听:
Get-NetTCPConnection -LocalPort 17897 -State Listen
查看日志(Windows 默认路径):
Get-Content "$env:USERPROFILE\.dsh\dsh-proxy-switch.log" -Tail 20
手动测试路由器:
curl.exe -sS -x http://127.0.0.1:17897 -o NUL -w "%{http_code}`n" https://example.com
强制切换为直连:
Set-Content -NoNewline "$env:USERPROFILE\.dsh\proxy-mode.txt" direct
常见问题:
- 启动头一两秒报错:正常,路由器启动需要约 1–2 秒
- 日志出现 owner process ... gone, exiting:上一轮 DSH 退出后路由器按约定清理,属正常
- 一直连不上:检查 .env 中的两行是否配置正确,确认模式不是「走 Clash」而 Clash 未运行
- 设置里看不到「代理」这一节:说明插件未加载成功,查看 DSH 插件页错误信息与日志
已知限制¶
- 只支持 HTTP/HTTPS 代理:DSH 不支持 SOCKS,路由器仅处理 HTTP 与 CONNECT
- 启动窗口约 1–2 秒内端口可能未监听,期间请求会失败一次
- Clash 端口因客户端而异:Clash Verge Rev 用 7897,原版 Clash 常见 7890,需按实际情况调整
clashPort - DSH 升级后插件仍会加载,但 DSH 行为变化可能需要更新插件
- 路由器进程由插件以
ELECTRON_RUN_AS_NODE拉起,DSH 退出约 2 秒后自行退出
结尾¶
dsh-proxy-switch 解决了 DSH 代理策略不可动态调整的问题,通过本地路由器在 Clash 与直连之间提供即时切换。如果你使用 DSH 配合 Clash 等代理工具,并希望在不重启的情况下灵活切换出站方式,这个插件可以减少配置复杂度。
插件目录:https://www.skillhub.cn/plugins/tonyAmadeus/dsh-proxy-switch
GitHub:https://github.com/tonyAmadeus/dsh-proxy-switch