dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
HTTP proxy preference for DeepSeek Harness (dsh): direct / follow system / custom, applied live without restarting.
DeepSeek Harness(DSH)插件:在 设置 → 通用设置 增加一行 HTTP 代理,支持 直连 / 跟随系统 / 自定义 三种模式,保存后立即生效,无需重启 Harness。
@local/dsh-network-proxyscutil --proxy)Harness 自带的 @deepseek-ai/dsh-http-proxy 只在启动时读一次 HTTPS_PROXY 等环境变量,且明确不读取操作系统代理设置(见其 README 的 “Known Limitations”)。于是:
本插件补上这一段运行时能力:读取操作系统代理(含 PAC),把它装到进程级 fetch dispatcher 上,并且原地热切换。
HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings 的 ProxyEnable / ProxyServer / ProxyOverride / AutoConfigURL / AutoDetect;http=…;https=… 分协议代理与 PAC 脚本(内置精简 PAC 求值器,在无宿主对象的 vm 上下文中求值、禁用字符串代码生成,单次求值 100ms 超时,脚本死循环或抛错只会退回直连);scutil --proxy(含 ExceptionsList 旁路列表与 PAC);undici 取全局 dispatcher,用 ProxyAgent 按目标 origin 路由;保存时直接替换,下一次请求即生效。策略没变化时不会重复重建 dispatcher,连接池保持不动。模型、MCP HTTP、web 搜索/抓取、各命令工具里的 fetch() 全部覆盖。localhost、127.0.0.0/8、::1、0.0.0.0 永远直连;系统旁路列表(<local>、*.example.com、10.0.0.0/8、127.* 等)一并生效。HTTP_PROXY / HTTPS_PROXY / NO_PROXY / NODE_USE_ENV_PROXY,命令工具里的 curl、git、pnpm 会跟随;PAC 是按域名求值的,无法压成一个代理地址,因此不会发布伪环境变量(子进程沿用启动环境)。$DSH_HOME/network-proxy.json(文件权限 0600,内含代理凭据,请勿分享),下次启动由 Host 半自动应用;插件卸载/停用会恢复启动时的 dispatcher 与环境变量。在 Harness 会话里说:
Agent 会调用 plugin_manager 的 install_bundle,参数为:
git+https://github.com/baizhizzl/dsh-network-proxy.git
plugin_manager install_bundle target: /path/to/dsh-network-proxy
安装后打开 设置 → 通用设置,在“会话显示”下方即可看到 HTTP 代理。
| 模式 | 行为 |
|---|---|
| 直连 | 丢弃代理;进程内 fetch() 与子进程都直连 |
| 跟随系统 | 读操作系统当前代理;系统代理开关关闭时直连,并在界面上显示检测到的代理地址 |
| 自定义 | 使用填写的 http://host:port(可带 user:pass@),保存后立即生效 |
默认是 跟随系统。
fetch() 的出口(模型、MCP HTTP、web fetch/search、插件)。node:http,设计上直连);模型生成的 PTC/workflow 子进程(其环境由 Harness 自己的代理策略管理)。index.js Host 半:系统代理检测、dispatcher 安装与恢复、/api/network-proxy 路由
client.js Client 半:settings.general.item 中的偏好行(中英文文案、状态展示)
cordis.patch.yml 插入 network-proxy 插件行
locale/{zh,en}.json 插件标题与描述(Plugin Manager 展示)
icon.svg 插件图标
test/host.test.mjs Host 半验证脚本
Host 半的验证脚本在真实的 Harness 运行时(Electron as Node)里执行,用本地假代理验证 HTTP 转发、HTTPS CONNECT、loopback 旁路、环境变量发布、持久化与卸载恢复;配置只写临时目录。
$env:ELECTRON_RUN_AS_NODE = '1'
& '<Harness 安装目录>\DeepSeek Harness.exe' '<仓库目录>\test\host.test.mjs'
http:// / https:// 代理;SOCKS 会被识别并在界面上提示“暂不支持”。用户名/密码里含非法百分号转义(如 %zz)的地址会被拒绝,因为 undici 在请求时解码会抛 URIError。shExpMatch / dnsDomainIs / isInNet / isPlainHostName 等辅助函数;dnsResolve 返回空串(避免在同步求值里做 DNS),复杂 PAC 可能退化。单次求值有 100ms 超时,超时或抛错会回退到静态代理(有的话)或直连,并显示 pac-failed。vm 上下文里(禁用字符串代码生成),但 Node 明确说明 vm 不是安全边界,仍不应把不可信 PAC 当作可信输入。PROXY/HTTPS 项,不做多代理故障转移。AutoDetect=1 且没有 PAC URL)暂不支持,会在界面上显示提示,而不是静默直连。ProxyServer 里形如 http://user:pass@host:port 的凭据会被保留,界面与日志只显示去掉凭据的地址。<local>、*.example.com、127.* 与端口;子进程的 NO_PROXY 只能表达主机/域名,无法表达整个 127.0.0.0/8。如果系统旁路列表是 *,所有请求直连,状态会显示 bypass-all 而不是“代理已生效”。persist-failed(重启后会丢失);配置文件是明文 JSON(权限 0600)。