前言¶
在 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 内核¶
三选一:
- 已安装 Clash Verge:插件自动查找
verge-mihomo.exe,一般无需额外操作。 - 手动将
mihomo.exe放入插件目录的bin/。 - 在
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 也能联网」的能力。