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

网络代理设置 johnsonpanq-ctrl/dsh-network-config

DeepSeek 客户端
johnsonpanq-ctrl32 天前有提交已提供中文文档扫描:含敏感能力兼容 / 相关生态

在设置页切换系统代理、直连或自定义路由

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

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

相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/johnsonpanq-ctrl/dsh-network-config.git

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
生态插件
可安装,未声明 dsh 能力
装得上吗
本站已在 dsh 0.2.1-rc.5 下真实安装成功
非静态推断
L5 · 运行时冒烟等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 32 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意

未发布到 npm registry,仅可从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包dsh-network-config(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=20 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/10 21:27:37

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 7 处,展示前 7 条)
  • 发起网络请求
    lib/index.js:280
    const response = await fetch(url, {
  • 发起网络请求
    client/client.js:149
    const response = await fetch(ROUTE + path, {
  • 读取本地文件
    lib/store.js:145
    const parsed = JSON.parse(await readFile(this.#path, 'utf8'))
  • 写入本地文件
    lib/store.js:167
    await mkdir(dirname(this.#path), { recursive: true })
  • 写入本地文件
    lib/store.js:168
    await writeFile(temporary, `${JSON.stringify(config, null, 2)}\n`, 'utf8')
  • 写入本地文件
    lib/store.js:169
    await rename(temporary, this.#path)
  • 执行外部命令来自配置/变量
    lib/system-proxy.js:168
    execFile(file, args, { windowsHide: true, timeout: 5000, maxBuffer: 1 << 20 }, (error, stdout) => {
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

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

功能亮点

  • 切换系统代理
  • 直连模式
  • 自定义路由

DeepSeek Harness 的代理设置——跟随系统代理、直连或自定义。

README

由 DeepSeek 最新模型翻译生成
dsh-network-config 给 DeepSeek Harness 加一个「设置 → 网络」页面 —— 选择整个应用怎么访问外网,保存即生效。 设置 → 网络 ( ) 跟随系统 读取 Windows 系统代理,并跟随它的开关 ( ) 直连 完全不用代理 (•) 自定义 手填 http(s) 代理地址 + 绕过列表 不用重启,不用导出环境变量,不用改 YAML。点保存的那一刻,模型调用、网页搜索、网页抓取、HTTP MCP 就都换成新路由了。 为什么做这个 DeepSeek Harness 只在启动时读一次出站代理策略,来源是 http_proxy / https_proxy / no_proxy / all_proxy 这几个环境变量。于是有两个日常麻烦: 1. 必须先设好环境变量再启动应用,代理一变就得重启。 2. 它根本不支持「跟随系统代理」 —— 上游有意不读操作系统的代理配置,所以你在代理软件里把开关拨了,仍然得自己去导出环境变量(这是上游文档里写明的限制)。 这个插件补上了这块界面。顺便,它还修了一个会悄悄弄坏内网访问的 bug —— 见下。
展开完整文档(README 剩余 1 节)
dsh-network-config

给 DeepSeek Harness 加一个「设置 → 网络」页面 —— 选择整个应用怎么访问外网,保存即生效。

设置 → 网络 ( ) 跟随系统 读取 Windows 系统代理,并跟随它的开关 ( ) 直连 完全不用代理 (•) 自定义 手填 http(s) 代理地址 + 绕过列表

不用重启,不用导出环境变量,不用改 YAML。点保存的那一刻,模型调用、网页搜索、网页抓取、HTTP MCP 就都换成新路由了。

为什么做这个

DeepSeek Harness 只在启动时读一次出站代理策略,来源是 http_proxy / https_proxy / no_proxy / all_proxy 这几个环境变量。于是有两个日常麻烦:

1. 必须先设好环境变量再启动应用,代理一变就得重启。
2. 它根本不支持「跟随系统代理」 —— 上游有意不读操作系统的代理配置,所以你在代理软件里把开关拨了,仍然得自己去导出环境变量(这是上游文档里写明的限制)。

这个插件补上了这块界面。顺便,它还修了一个会悄悄弄坏内网访问的 bug —— 见下。

内建的直连规则(重点)

只要在走代理,下面这些目的地永远直连,不需要你配置任何东西:

| 类别 | 范围 |
| 回环 | localhost、127.0.0.0/8、::1 |
| 私有网段(RFC 1918) | 10.0.0.0/8、172.16.0.0/12、192.168.0.0/16 |
| 链路本地 | 169.254.0.0/16、fe80::/10 |
| 运营商级 NAT | 100.64.0.0/10(Tailscale 也在这里) |

转发代理是在它自己的网络里解析地址的,把内网目的地交给它,结果只会是超时或 502。
而 Harness 单独运行时只豁免回环,别的什么都不管。

操作系统写进绕过列表的条目也全部被尊重 —— 包括 Harness 自己的匹配器表达不了的那些写法:

| Windows 写的条目 | 含义 | 只有 Harness | 加上本插件 |
| 192.168. | 前缀通配 | ❌ 永远匹配不上 | ✅ |
| 10.0.0.0/8 | 网段(CIDR) | ❌ 永远匹配不上 | ✅ |
| <local> | 任何不带点的主机名 | ❌ 永远匹配不上 | ✅ |
| .corp.example | 后缀 | ✅ | ✅ |
| api.test:8443 | 带端口的主机 | ✅ | ✅ |

在真实机器上实测(系统代理已开启,内网地址直连约 20 ms)。
下表里的地址与端口用的是文档保留段,用来代替实际使用的内网地址:

| 目标 | 只有 Harness | 加上本插件 |
| http://100.64.0.10:8080/v1/models (CGNAT 段) | HTTP 502 · 5175 ms | HTTP 401 · 22 ms |
| http://172.20.0.10:8080/v1/models (私有段) | 401 · 8 ms | 401 · 4 ms |
| https://www.deepseek.com/ | 200 | 200 · 253 ms (仍走代理 —— 正确) |

安装

环境要求: DeepSeek Harness 桌面版(「跟随系统」模式需要 Windows;其它系统上插件照常可用,但该模式会退回读环境变量),以及 PowerShell。

1. 从 releases 页面 下载 dsh-network-config-1.0.0.zip —— 或者直接 clone 本仓库。
2. 解压到任意位置,在该文件夹里执行:

powershell -ExecutionPolicy Bypass -File .\install.ps1

3. 完全退出并重新打开 DeepSeek Harness。 模块图是在启动时构建的,正在运行的进程不会加载新装的插件。

4. 验证:

powershell -ExecutionPolicy Bypass -File .\verify.ps1

1. Is the plugin mounted at http://127.0.0.1:19387 ? YES
2. mode: system route: http://127.0.0.1:7890/
bypass entries: 21 private direct: True full matcher: True
3. Reach a public address (must use the proxy) : https://www.deepseek.com/
reachable - HTTP 200 in 163 ms

完整步骤、手动安装做法、迁移到另一台机器、以及排错清单见 INSTALL.md。

卸载

powershell -ExecutionPolicy Bypass -File .\install.ps1 -Uninstall

然后重启应用。插件在 profile 里只占一个目录和 dsh.profile.bundles 里的一行;它唯一的数据文件是 %USERPROFILE%\.dsh\network-config.json。

实现原理

插件不会从零自己造一套代理策略。它把解析好的模式交给 Harness 自己的 @deepseek-ai/dsh-http-proxy,于是 proxyRouteFor()、发布出去的环境变量、以及每个子进程看到的仍然是同一个答案。

然后它把真正承载流量的那个 dispatcher 换成自己的逐 origin agent —— 因为那个包的绕过匹配器只做「主机名相等或后缀相等」。两半都需要:官方包维持进程级的契约,插件的匹配器负责实现那套契约表达不了的条目。

设置 → 网络 (client/client.js) │ GET /dsh-network-config/state │ POST /dsh-network-config/state { mode, custom: { proxy, bypass } } ▼ host 半侧 (lib/index.js) │ validate → store.save → resolvePolicy ├─ installProxyFromEnvironment ← 官方策略:proxyRouteFor()、环境变量、子进程 └─ installRouting(compileBypass) ← 真正承载流量的 dispatcher ▼ undici 全局 dispatcher + http_proxy / https_proxy / no_proxy

源码地图

| 文件 | 职责 |
| lib/index.js | Host 半侧:设置文档、模式解析、安装传输策略、HTTP 路由 |
| lib/bypass.js | 绕过匹配器:通配、CIDR、<local>、后缀、端口,以及内网判定 |
| lib/routing.js | 逐 origin 的 undici dispatcher,每个请求都问 lib/bypass.js 该去哪 |
| lib/system-proxy.js | Windows 系统代理读取(reg query → 代理 URL + 绕过列表) |
| lib/policy.js | 三种模式 → 一份传输策略 |
| lib/store.js | network-config.json 的校验与原子读写 |
| lib/text.js | Host 半侧的中文提示文案 |
| client/client.js | 浏览器半侧:一个打包好的 window.__ModuleLoader__ 模块,把页面注册进 settings.section |
| install.ps1 / verify.ps1 | 安装器 / 重启后验证器 |
| build-package.ps1 | 打可移植 zip |
| test/ | 39 条单元测试 |

插件的 HTTP 路由和 Harness 自己的插件路由用了同一道围栏:Host 头必须是回环地址,浏览器标为 cross-site 的请求一律拒绝。这是防 DNS rebinding,不是身份认证。

已知限制

- 不支持 SOCKS,也不支持 PAC。 传输层只接受 http(s):// 代理 URL。系统配置了 PAC 脚本(AutoConfigURL)时,插件会说明并按直连处理,而不是假装生效。
- proxyRouteFor() 用的是官方包那套较窄的匹配器。 因为官方策略是原样安装的, dsh-web-fetch-http 判断「这次抓取要不要走代理」时用的是它 —— 所以抓取一个内网 URL 仍可能走代理。公开网页抓取不受影响。真正承载流量的一侧(模型、搜索、MCP)走的是本插件的匹配器。
- 子进程只在 Node 22.21+/24+ 跟随策略。 这是 dsh-http-proxy 的行为,由 NODE_USE_ENV_PROXY 决定。在「直连」模式下插件会额外清掉 all_proxy / ALL_PROXY,避免子进程继续使用代理。
- 需要 profile 内可解析到 undici。 取不到时插件会退回官方包的 dispatcher,并在页面上说明 —— 退路可用,但通配条目与内网直连不再生效。
- 和别的代理插件互斥。 谁最后调用 setGlobalDispatcher,谁说了算;不要和 dsh-clash-proxy 之类的插件同时启用。
- 系统代理只在 Windows 上读注册表,其它平台退回环境变量。

开发

npm test # 等价于 node --test test/*.test.mjs

没有构建步骤,没有依赖。浏览器半侧是手写的 window.__ModuleLoader__ bundle,测试完全按客户端的方式装载它,然后断言页面的元素树 —— 所以不需要 DOM,也不需要 React 渲染器。

欢迎贡献 —— 见 CONTRIBUTING.md。

许可

MIT —— 见 LICENSE。

本项目与 DeepSeek 官方无关。「DeepSeek Harness」指被本插件扩展的上游应用。
预览分享卡片长什么样 ↓johnsonpanq-ctrl/dsh-network-config
分享 · DeepSeek Harness Hub
johnsonpanq-ctrl/dsh-network-config

在设置页切换系统代理、直连或自定义路由

这是你的仓库?认领条目

回到顶部