dsh-proxy-control
在运行中控制 DeepSeek Harness 的出站代理:三种来源三选一,改完立即生效,不用重启。
English | 中文
「系统代理」只在桌面版提供:它读的是运行 dsh 那台机器的 Windows 设置,Web 端(
dsh web)会禁用这一项。
特性
- 三种来源:内置(启动环境)/ 系统(Windows 代理设置)/ 手动,三选一。
- 立即生效:改地址、改直连名单、切来源,下一次请求就走新配置。
- 如实上报:显示此刻实际会怎么走,而不是"插件装了什么"。
- 覆盖面:走
fetch的(LLM 对话、web 搜索、HTTP MCP)、web_fetch、子进程;回环地址永远直连。 - 自测按真实调用路径发一次请求,直连也算有效结果。
- 分流用直连名单。
安装
需要 DSH 0.2 系列(Desktop 或 Web)与 Node.js 22+。
dsh plugin --profile desktop add "/绝对路径/dsh-proxy-control"
也可以在 设置 → 插件 → 添加插件 里选目录。装完重启一次(bundle 列表只在启动时读),之后所有代理改动都是实时的。
本包带 cordis.patch.yml,条目会自动插入 profile。想直接改配置就编辑 profile 的 cordis.patch.yml:
- id: proxy-control
name: dsh-proxy-control
config:
mode: env # env 内置 / system 系统 / manual 手动
proxy: '' # 仅手动模式使用
noProxy: '' # 直连名单
testUrl: '' # 留空用默认自测地址
早期版本的
enabled与autoDetect已删除;配置里还留着会被忽略,并在下次保存时清掉。
使用
设置页在 设置 → 代理。
- 三行来源常驻,未选中的只是置灰并标「未选中」;切来源会强制重读那一边。
- 标题旁的
?放说明,行内只放结果。 - 三个动作是图标按钮,功能看悬停提示:重新读取(内置行)、重新探测(系统行)、测试(自测地址行)。
- 手打的三个字段失焦即存,回车也行 —— 没有保存按钮。
- 三处结果(内置的来源、生效中的代理、自测结果)都显示在各自那一行的下方。
「测试」按 Harness 自己的调用路径(全局 fetch)发一次请求,所以它回答的是"这份配置生效后会怎样"。测的是你眼前这份配置:点之前若有没落盘的改动,会先写下去。
配置项
| 配置项 | 说明 |
|---|---|
| 代理来源 | 内置 / 系统 / 手动 三选一。默认 内置,是惰性的 —— 装上不会改变任何行为。 |
| 代理地址 | 仅手动模式。例如 http://127.0.0.1:7890,只接受 http:// 与 https://。 |
| 直连名单 | 这里的主机不走代理。仅手动/系统模式;内置模式以环境里的 NO_PROXY 为准。 |
| 自测地址 | 「测试」访问的地址,留空用 https://www.gstatic.com/generate_204。 |
三种来源
| 界面上的名字 | 从哪读 | 什么时候用 |
|---|---|---|
| 手动 | 你填的地址 | 最常见 |
| 系统 | Windows 注册表 Internet Settings(仅桌面版;不解析 PAC) |
代理软件开了系统代理 |
| 内置 | $DSH_HOME/.env 或启动前导出的变量 |
已经在 .env 里配好,想让插件只读不干预 |
内置 = 不插手:插件什么都不装,路由交给 DSH 启动时构建的那一层。所以「生效中的代理」会点名是哪一层:
生效中的代理:http://127.0.0.1:7890(启动环境(.env 或已导出的变量))
括号里是「本插件的配置」就是在走插件的策略;是「启动环境…」就是启动器那层(选内置时的正常样子)。没有代理就写「生效中的代理:直连」。
两点:.env 只在启动时读一次,改它要重启;官方解析器在只设 HTTPS_PROXY 时 http:// 目标仍直连,要两者都走就一起写。
已知限制
- 不支持 SOCKS:策略只接受
http:/https:,填了会被明确拒绝并说明原因。 - 系统代理只在桌面版提供(Web 端禁用),且只在选中它时读取、要手动点「重新探测」才跟上系统里的改动;不解析 PAC。
- 系统 bypass 列表被整份忽略:
127.*、<local>这类通配写法本 Harness 的匹配器不支持;回环地址本来就被强制直连。 - 直连名单不支持 CIDR(
10.0.0.0/8这类会被丢弃并提示)。 - 不做按类别开关:LLM 对话与 web 搜索打的是同一个 URL,传输层分不开;更细的规则交给代理软件。
- 自定义 CA:做 TLS 拦截的代理需要在启动前设
NODE_EXTRA_CA_CERTS。 - Electron 自身流量(自动更新、登录页)在另一个进程的网络栈里,插件管不到。
- 子进程跟随策略;但
.env里也配了代理时,子进程会跟随.env那份值。界面与日志会提示这个分叉。
安全性
设置页接口能改流量走向,所以只接受本机请求(403)、要求 Host 是回环地址(挡 DNS 重绑定,403),并拒绝可免预检跨站发送的请求体形态(415)。DSH 的 Web 服务器自身不带认证或来源策略,第三方路由必须自己设防。
排错
「生效中的代理」那一行是权威读数。想知道子进程拿到了什么:
$env:HTTPS_PROXY; $env:NODE_USE_ENV_PROXY
这两个只在策略安装后才会发布给子进程。日志里:
proxy-control:出站请求经由 http://127.0.0.1:7890(手动指定),直连名单 api.deepseek.com
proxy-control:不干预路由(启动环境里没有代理设置(查过 C:\Users\Joker\.dsh\.env),按直连处理)
proxy-control:不干预路由(启动环境里有 http://127.0.0.1:7890,插件不插手(那就是启动器那层在生效))
proxy-control:无法使用 <地址>(<原因>),出站请求保持直连
用不了的代理不会弄死 agent:记一行警告并保持直连。卸载插件会还原启动器自己的策略。
No comments yet. Be the first to write one.