DSH Plugins Marketplace

DSH Plugins

Plugins

/

dsh-web-proxy

n

dsh-web-proxy

Manifest valid
UI (client)hasBundlePatch

dsh-plugin-web-socks-proxy

DeepSeek Harness 插件:让 web_fetch 在访问境外网站时自动走本机代理(默认 socks5h://127.0.0.1:7890,即 Clash 默认混合端口),其余站点保持直连。

v1.1.0 起,代理在「设置 → 通用设置 → 网络代理」里随时可改,无需动配置文件:

  • 范围:按域名自动分流(默认)/ 全部走代理 / 直连(停用);
  • 协议:SOCKS5(远程解析域名)(socks5h://,推荐)/ SOCKS5(本地解析域名)(socks5://)/ HTTP CONNECT(http://);
  • 地址与端口:改完按回车或移出输入框即保存,立即生效(写入 profile 补丁层的 volatile 覆盖,热重载)。

bypassDomains(localhost、127.0.0.1、.cn、本机服务端点等)在任何模式下都保持直连。

工作方式

  • 注册一个 id 为 web-socks-router 的 WebFetchProvider 到 ctx.web,并把 web 服务的 fetchProvider 指向它。
  • 每一跳 URL 独立决策路由:
    • mode: auto(默认):仅 proxyDomains 列表中的域名走代理(bypassDomains 优先级更高);
    • mode: always:除 bypassDomains 外全部走代理;
    • mode: never:全部直连(插件仍在位,方便快速关闭)。
    • 以上三项即设置界面「网络代理」行的三个选项;proxy 与 mode 是 volatile 配置字段,界面写入后由 config-editor 持久化进 profile 补丁。
  • 域名规则:裸域名 google.com 匹配自身及全部子域;*.example.com 只匹配子域。
  • socks5h:// 由代理端解析域名(推荐);socks5:// 本地解析后再连代理(会做公网地址校验)。
  • 代理连接失败时报错 WEB_PROXY_UNAVAILABLE(提示检查本地代理客户端),不会静默直连泄露流量。
  • 直连路径复刻了官方 @deepseek-ai/dsh-web-fetch-http 的安全姿态:仅 HTTP(S)、拒绝 URL 内嵌凭据、解析结果全部校验为公网地址并锁定连接、仅跟随同源重定向、字节/字符上限、按 Content-Type/charset 解码。

附带能力

  • 注册一段系统提示(web-socks-proxy,可用 promptSection: false 关闭),让 Agent 知道: web_fetch 会自动走代理;shell 命令需要代理时先设 ALL_PROXY(PowerShell:$env:ALL_PROXY = 'socks5://127.0.0.1:7890';bash:export ALL_PROXY=socks5://127.0.0.1:7890),curl 也可以 -x socks5h://127.0.0.1:7890。

安装

桌面端「设置 → 插件」或插件管理器安装本目录(本地 file 包),安装后自动作为 bundle 加入 desktop profile 的 dsh.profile.bundles。配置位于 bundle 自带的 cordis.patch.yml(插入行 id 为 web-socks-proxy),可在配置编辑器中直接修改。

卸载/回退

在插件管理器中停用或移除本 bundle 即可:随 bundle 注入的 web 行覆盖一并消失,基础层的 fetchProvider: http 自动恢复,行为回到原始直连。

故障诊断

超时/连接错误信息带有 stage 字段,指示停滞的阶段,例如:

  • tcp connect direct … / SOCKS proxy 127.0.0.1:7890 socks-greeting:代理客户端未监听或不可达,确认 Clash 等本地代理在运行;
  • await-connect-reply …:CONNECT 请求已发出但代理未回复(通常是代理端上游节点/规则问题);
  • tls handshake …:隧道已建立但 TLS 失败(一般是代理上游被干扰);
  • http exchange …:TLS 正常,等待 HTTP 响应。

超时错误同时附带 trace(SOCKS 帧读取的事件序列),可用于进一步定位。握手阶段停滞的错误里 …ms since connect 表示从 TCP 连上到超时的耗时。

开发

  • 修改 lib/index.js 后,若 profile 补丁层将本目录加入了 hmr 的 root 监视列表(- id: hmr / config: root: [<本目录>]),改动会自动热重载;否则需重启 DeepSeek Harness 才会重新导入模块(启用/停用开关不会重新导入已缓存的 ESM 模块)。
  • 仓库内另有两个独立诊断脚本(与插件无关,仅辅助排障):../socks-diag.mjs(裸 SOCKS5+TLS 协议探测)与 ../provider-diag.mjs(在宿主外直接运行 provider 代码)。

Comments

Loading…