🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

出站分流 fengyevvv/dsh-egress-router

DeepSeek Harness
fengyevvv13 天前有提交已提供中文文档扫描:含敏感能力

按用途分流模型与网页请求,代理故障自动回落直连

30.7/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/20 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add fengyevvv/dsh-egress-router
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · model
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 13 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令
查看扫描证据(共 1 处,展示前 1 条)
  • 执行外部命令来自配置/变量
    lib/windows-proxy.js:15
    return execFileSync(file, args, options);
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-http-proxy@deepseek-ai/dsh-launch-environment@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DSH 出站流量路由插件:DeepSeek 直连,外网模型与网页抓取走代理 · Egress router for DeepSeek Harness.

README

由 DeepSeek 最新模型翻译生成
dsh-egress-router 给 DeepSeek Harness(DSH) 用的出站分流插件: - 模型请求(DeepSeek)直连,不经过代理; - web_fetch / 子进程走代理(Clash、V2Ray 等); - 代理挂了自动回落直连,恢复后自动切回; - 在 设置 → 通用 → 出站分流 里切换:全部直连 / 跟随系统 / 手动代理。 不依赖 .env,不写任何状态文件,启动路径零 I/O,任何异常都降级为直连。 当前版本:0.1.1 · 平台:Windows(system 模式读 Windows 注册表)· 适配 DSH 0.2.1-rc.2 它解决什么问题 DSH 原生只在启动时读一次代理环境变量,之后没有运行时开关: - 模型请求和网页抓取走同一条路,没法按用途分开; - 代理关掉后 web_fetch 直接失败,不会自动回落; - 切换代理要改 ~/.dsh/.env 并重启。
展开完整文档(README 剩余 1 节)
dsh-egress-router

给 DeepSeek Harness(DSH) 用的出站分流插件:

- 模型请求(DeepSeek)直连,不经过代理;
- web_fetch / 子进程走代理(Clash、V2Ray 等);
- 代理挂了自动回落直连,恢复后自动切回;
- 在 设置 → 通用 → 出站分流 里切换:全部直连 / 跟随系统 / 手动代理。

不依赖 .env,不写任何状态文件,启动路径零 I/O,任何异常都降级为直连。

当前版本:0.1.1 · 平台:Windows(system 模式读 Windows 注册表)· 适配 DSH 0.2.1-rc.2

它解决什么问题

DSH 原生只在启动时读一次代理环境变量,之后没有运行时开关:

- 模型请求和网页抓取走同一条路,没法按用途分开;
- 代理关掉后 web_fetch 直接失败,不会自动回落;
- 切换代理要改 ~/.dsh/.env 并重启。

这个插件把策略装进 @deepseek-ai/dsh-http-proxy 的进程级 active 策略:

- dsh-web-fetch-http 每次请求都会调用 proxyRouteFor(url),所以换策略立刻改变 web_fetch 的走向;
- 普通 fetch() 读全局 undici dispatcher,也一起改变;
- 子进程通过导出的 HTTP(S)_PROXY / NO_PROXY 跟随;
- deepseek.com 始终在 NO_PROXY 里。

三种模式

| 模式 | 行为 |
| direct | 不装任何代理,全部直连 |
| system | 读 Windows 注册表 HKCU\...\Internet Settings 的 ProxyEnable / ProxyServer / ProxyOverride(也就是 Clash 的「系统代理」开关) |
| manual | 用配置里的 proxy 地址 |

健康检查:每 probeIntervalMs 毫秒对代理做一次 TCP 连接探测;失败且 fallbackToDirect: true 时切到直连,恢复后自动切回。

兼容性

| 项 | 要求 |
| DSH | 0.2.1-rc.2(同版本实测) |
| 平台 | Windows 10/11(system 模式依赖注册表) |
| Node | DSH 自带运行时即可(Node 22+) |
| 代理 | HTTP(S) 代理;Clash 的「混合端口」用 http://127.0.0.1:7897 即可 |

非 Windows 上 system 模式只读启动环境变量,不会读系统代理设置。

安装

方式 A:手动安装(已实测,推荐)

1. 从 Releases 下载 dsh-egress-router-0.1.1.zip,解压;或直接 clone 本仓库。
2. 把 lib/ 和 package.json 复制到 profile 的 node_modules 下:

$src = ".\dsh-egress-router" # clone 出来的目录;Release 解压后按实际文件夹名改 $dst = "$env:USERPROFILE\.dsh\profiles\desktop\node_modules\dsh-egress-router" New-Item -ItemType Directory -Force $dst | Out-Null Copy-Item "$src\lib" $dst -Recurse -Force Copy-Item "$src\package.json" $dst -Force

3. 在 %USERPROFILE%\.dsh\profiles\desktop\cordis.patch.yml 末尾追加:

- insert:
- id: egress-router
name: dsh-egress-router
config:
mode: system
proxy: http://127.0.0.1:7897
keepModelDirect: true

4. 完全退出 DSH(托盘也要退),重新打开。

方式 B:作为 bundle 安装(发布到 npm 后)

dsh plugin --profile web add dsh-egress-router

或在 Web UI:设置 → 插件 → 添加插件,填 dsh-egress-router。

desktop profile 由桌面应用管理,不要用命令行 dsh plugin --profile desktop;桌面上请走 Web UI 的「添加插件」。
上面的 web 只是示例 profile 名,换成你自己的 profile。

本包带有 dsh.bundle.patch,bundle 安装会自己创建 egress-router 行。不要再按方式 A 手写 insert,否则会出现两条同 id 的条目。

方式 B 未在干净 DSH 上实测,建议先用 lab profile 验证。

配置

| 字段 | 默认 | 说明 |
| enabled | true | 总开关;false 时还原启动时的策略 |
| mode | system | direct / system / manual |
| proxy | http://127.0.0.1:7897 | manual 模式的代理地址,只支持 http:// / https:// |
| keepModelDirect | true | 把 deepseek.com 加进 NO_PROXY |
| noProxy | [] | 额外直连主机(可写具体 IP / 主机名,不支持 192.168. 这类网段) |
| fallbackToDirect | true | 代理不可用时回落直连 |
| probeIntervalMs | 5000 | 探测周期;0 关闭探测 |
| probeTimeoutMs | 800 | 单次探测超时 |

环境变量 kill switch:DSH_EGRESS_DISABLE=1 时插件完全不接管。

Web UI

设置 → 通用 → 出站分流:

- 下拉框:全部直连 / 跟随系统 / 手动代理;
- 手动模式显示代理地址输入框;
- 「模型请求直连」复选框。

保存后写入 profile 的 cordis.patch.yml,Host 收到配置更新后立即重新安装策略,无需重启。

验证

- 问模型一句话,能正常回复 → 模型直连正常;
- 让智能体抓 https://en.wikipedia.org/robots.txt → 200 说明网页走了代理;
- 设置页能看到「出站分流」→ client 半边加载正常;
- 关掉 Clash,等 5~10 秒再抓外网 → 应报网络错误而不是卡死;重新打开 Clash 后应自动恢复。

安全设计

1. apply() 不读写文件、不探测网络、不抛异常;
2. 所有探测/换策略都在 setImmediate 之后异步执行;
3. 任何失败(代理 URL 非法、注册表读失败、install 抛错)都回落直连;
4. 不使用 setInterval,定时器由插件生命周期管理并在卸载时清理;
5. 卸载/关闭时把启动时的策略还原,包括环境变量;
6. 不写任何 JSON / 状态文件,重启不会读到半截数据。

回退

1. 完全退出 DSH;
2. 删除 cordis.patch.yml 里本插件的 - insert: 块;
3. 重启;
4. 可选:删除 profiles\<name>\node_modules\dsh-egress-router。

不会影响 profile 里其他插件配置。

已知限制

- 只支持 HTTP(S) 代理;SOCKS 会被 @deepseek-ai/dsh-http-proxy 拒绝并跳过。
- Windows ProxyOverride 里的 192.168.、10.*、CIDR 无法用共享匹配器表达,会被丢弃;web_fetch 本来就拒绝私有地址,所以只影响局域网 MCP / 子进程访问内网设备。需要时用 noProxy 列出具体主机。
- Clash 的 fake-ip 模式(DNS 返回 198.18.0.0/15)不影响走代理的请求;只在“回落直连”时可能被 DSH 的私有地址校验拦住。
- 代理地址不要写带账号密码的 URL(会明文落盘)。
- system 模式只读 Windows 注册表;macOS / Linux 只读启动环境变量。

开发

无构建步骤;lib/client.js 是手写的 window.__ModuleLoader__ bundle。

node test/policy.test.mjs

License

MIT
预览分享卡片长什么样 ↓fengyevvv/dsh-egress-router
分享 · DeepSeek Harness Hub
fengyevvv/dsh-egress-router

按用途分流模型与网页请求,代理故障自动回落直连

回到顶部