dsh-proxy-embedded:订阅即用,内嵌 mihomo 接管 DSH 出站

前言

在 DeepSeek Harness(DSH)里做智能体或脚本时,模型侧经常要访问外网:web_fetch、插件自己的 HTTP 出站都会走宿主进程的网络栈。若本机没开代理,或只希望 DSH 这一段走代理而不用整机 TUN,常见做法是再装一个「出站路由」类插件——但多数前提是 Clash / 其他客户端已经在跑。

另一类痛点是:开着 TUN + fake-ip 的代理时,web_fetch 可能被 SSRF 防护拦下(fake-ip 不算公网地址)。dsh-outbound-proxy、dsh-web-fetch-proxy 能解决路由,却补不上「谁来起内核、谁导入订阅」这一环。

下面介绍社区插件 dsh-proxy-embedded(维护者 GitHub 账号 mm24trg2gy-star,仓库 README 致谢作者 大肥鱼):把「导入订阅 → 启动 mihomo → 给 DSH 装路由」串成一条链,粘贴订阅链接即可让 DSH 出站(含 web_fetch)走本地混合端口,不必再单独开 Clash 客户端。插件在 SkillHub 分类为 联网工具;仓库许可证 MIT,当前 package.json 版本 0.1.2。

社区插件目录(如 SkillHub 目录页)与 DeepSeek / 幻方无官方从属关系;安装前建议自行查看源码与许可证。插件以当前 DSH 进程权限运行。

这是什么

dsh-proxy-embedded 是 DSH 插件:内置(或复用)mihomo 内核,解析多种订阅/单节点格式,在本地起 HTTP/SOCKS 混合代理,并为宿主安装代理路由,使 DSH 出站流量(包括 web_fetch)经该端口出去。

与 dsh-outbound-proxy、dsh-web-fetch-proxy 的差异(据 README):后两者要求本机已有代理在监听;本插件负责 自己起内核,把缺的半边补上。

核心功能

  • 内核来源:优先使用插件目录 bin/ 下的二进制;否则尝试发现 Clash Verge 的 verge-mihomo.exe(README 示例路径 D:\Clash Verge\verge-mihomo.exe);也可在配置里用 kernelPath 指定绝对路径。仓库 不包含 内核 exe(.gitignore 排除 bin/*.exe)。
  • 订阅与节点:支持 Clash YAML、base64 节点列表(V2Ray / Shadowrocket / Hiddify)、sing-box JSON、Surge INI,以及单链 ss:// vmess:// vless:// trojan:// hysteria2://。
  • 路由:为宿主进程安装代理路由,web_fetch 同样走代理。
  • 本地 HTTP API:仅本机回环,供脚本或 AI 触发启动、停止、查状态、保存配置。
  • 容错:内核启动失败不阻断 DSH 启动(fail-open);deepseek.com 等域名默认直连,降低代理异常对会话的影响。

安装与启用

官方安装命令(来自 README):

dsh plugin --profile desktop add github:mm24trg2gy-star/dsh-proxy-embedded

装完后 重启 DSH。package.json 要求 DSH >=0.1.5-rc.1,Node >=20.18.1。

准备 mihomo 内核

三选一:

  1. 已安装 Clash Verge:插件自动查找 verge-mihomo.exe,一般无需额外操作。
  2. 手动将 mihomo.exe 放入插件目录的 bin/。
  3. 在 config.json 中设置 kernelPath 为 mihomo 可执行文件的绝对路径。

典型用法

当前 README 标注为 第一版:手动 配置,两种方式可并用。

1. 配置文件(随 DSH 启动)

编辑 %USERPROFILE%\.dsh\proxy-embedded\config.json(Linux/macOS 对应为 ~/.dsh/proxy-embedded/config.json):

{
  "link": "https://你的订阅地址",
  "enabled": true,
  "port": 7899,
  "kernelPath": "",
  "noProxy": ""
}

保存后重启 DSH,插件会按配置导入订阅并启动代理。

字段 默认 说明
link 空 订阅链接或单节点链接
enabled true 启动 DSH 时是否自动起代理
port 7899 本地混合端口(占用时自动顺延)
kernelPath 空 自定义 mihomo 路径,空则自动发现
noProxy 空 直连后缀,逗号分隔

2. HTTP 接口(loopback)

将 <DSH端口> 换成你本机 DSH 实际监听端口:

# 导入并启动
curl -X POST http://127.0.0.1:<DSH端口>/proxy-embedded/api \
  -H "content-type: application/json" \
  -d '{"action":"start","link":"https://你的订阅地址"}'

# 状态
curl -X POST http://127.0.0.1:<DSH端口>/proxy-embedded/api -d '{"action":"status"}'

# 停止
curl -X POST http://127.0.0.1:<DSH端口>/proxy-embedded/api -d '{"action":"stop"}'

# 保存配置(下次启动自动用)
curl -X POST http://127.0.0.1:<DSH端口>/proxy-embedded/api \
  -d '{"action":"save","link":"https://...","port":7899}'

适用场景与注意

适合:需要在 DSH 内统一走代理、又不想常驻单独 Clash 窗口;希望一条订阅链覆盖 web_fetch 与普通出站;本机已有 Clash Verge 时可复用其 mihomo。

注意:

  • 代理 API 仅本机回环,设计上拒绝跨站滥用;订阅链接含凭据,保存在本机 ~/.dsh/proxy-embedded/config.json,勿外传。
  • 插件会拉起外部 mihomo 进程并改写出站路由,安装前应阅读 GitHub 仓库 源码与 MIT 许可。
  • 宿主路由思路参考 dsh-web-fetch-proxy(MIT)。

结尾

dsh-proxy-embedded 把订阅导入、mihomo 守护与 DSH 出站路由收成一步,适合在 Harness 里补齐「没有单独 Clash 也能联网」的能力。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye