dsh-clashVerge:DSH 出口模式与流量看板

前言

在 DSH 里做调研或调工具时,出网路径往往要靠手工设置 http_proxy / https_proxy,流量去了哪台主机、这次任务搬了多少字节,也很难事后核对。系统级代理会接管整台机器,又容易和「只想管 DSH 自己请求」的需求错位。下面介绍社区插件 dsh-clashVerge(维护者 dawnsss,分类:联网工具):它在 DSH 与外部网络之间插入本机统计代理,提供四种出口预设和按字节的流量报表,只作用于 DSH 进程及其子进程,不改系统代理、不开 TUN。

这是什么

dsh-clashVerge 是 DeepSeek Harness(DSH)的 Web 侧插件(platform: web),当前版本 0.1.0,MIT 许可证,源码托管于 GitHub。它解决两类问题:一是为 web_fetch、web_search、bash 中的 curl / nmap 以及走 Node fetch 的插件统一选路;二是从字节流累加计量,按目标主机聚合,回答「这次调研吃了多少流量、都去了哪些主机」。

插件目录页:https://www.skillhub.cn/plugins/dawnsss/dsh-clashVerge(社区独立站点,与 DeepSeek / 幻方无官方从属关系)。

核心功能

四种出口模式

模式 标识 含义 典型场景
不接管 off 不插策略,出网与启动环境一致;不统计 排查问题、不想让代理介入
直连 direct 全部直连,仍经本地代理,照常统计 只要报表、不走上游
外网 external 公网走上游,内网/回环按目标分流直连 拉 GitHub、查外网资料
全局 global 除回环外全部走上游 需要内网目标也经代理链出的场景

模式持久化在 ~/.dsh/storages/clash-verge/state.json,DSH 重启后自动恢复。切换即时生效,只影响之后的请求;正在进行的下载保持原路由。

工作方式

DSH 进程 ──fetch/子进程──▶ 127.0.0.1:<临时端口> 本地统计代理 ──┬─▶ 直连目标
                                                              └─▶ 上游代理 ──▶ 节点

本地代理随插件启动,端口随机、仅监听回环。策略通过 @deepseek-ai/dsh-http-proxy 安装:进程内 fetch 替换 undici 全局 dispatcher,子进程在 spawn 时读取 http_proxy / https_proxy。

上游默认从本机 verge.yaml 的 verge_mixed_port 探测(常见 7897),读不到则用 7897;面板可改为任意 host:port 或 http(s)://host:port。仅支持 HTTP/HTTPS 上游,socks5:// 会被拒绝。

流量报表

面板提供:最近 5 秒均值的上行/下行速率;累计上下行、请求数、活动连接;最近 120 秒吞吐折线;流量去向(上游 vs 直连)与模式分布;目标主机 Top 20(字节、请求数、实际路由、最近访问时间)。统计的是真正搬动的字节,含失败重试与中断的传输。

Agent 可调用的工具

模型可调用 egress_mode 切换模式,返回当前上游、可达性、代理地址与累计流量,便于写成「先切全局 → 打内网 → 切回外网」的流程,无需人手在面板前点选。

上游故障行为

每 15 秒探活:external 在上游不可达时可降级直连并记账;global 默认失败关闭(拒绝发送、记 blocked),可用配置项 globalFailClosed: false 改为降级。行为可在面板与配置中调整。

安装与启用

安装前请自行查看仓库源码与 MIT 许可证;插件以当前 DSH 进程权限运行,会改写出网路径与本地状态文件。

官方命令(Web profile):

dsh plugin --profile web add github:dawnsss/dsh-clashVerge

亦可在 GUI 插件页用「本地目录」安装。装完后刷新页面,左侧栏出现「出口模式」。

环境要求:package.json 中 engines.node 为 >=22.15。

HTTP 接口与配置

前缀 /clash-verge/api:

方法 路径 作用
GET /state 当前模式、上游、代理状态、完整报表
POST /mode { "mode": "off" \| "direct" \| "external" \| "global" }
POST /config { upstream?, bypass?, intranetSuffixes?, globalFailClosed? }
POST /probe 立即探测上游
POST /reset 清零统计

写操作需 application/json 与本进程当次启动的 x-clash-verge-token(由 GET /state 下发)。仅接受同源请求;经反向代理访问时,可将对外 Host 加入环境变量 CLASH_VERGE_TRUSTED_HOSTS(逗号分隔)。

典型用法

  1. 日常外网调研:切到 external,公网走 Clash Verge 等本机混合端口,内网仍直连。
  2. 只要看清 DSH 去了哪些主机:切到 direct,不走上游,报表照常累计。
  3. 自动化流程:在对话中让 agent 调用 egress_mode,按步骤切换后再执行 web_fetch 或 shell 里的 curl。
  4. 排查代理本身:切到 off,恢复与启动环境一致的出网,且不统计。

本地开发与改代码时,README 也给出克隆后本地目录安装的方式;host 半改 lib/index.js / lib/proxy.js 需重启 dsh web,客户端改 lib/client.js 可由 DSH 按 mtime 热更新面板。

适用场景与注意

适合谁:在 DSH 内频繁拉外网、做安全调研或需要可审计流量账单的开发者;已在本机运行 Clash Verge(或其它 HTTP 上游)且希望 DSH 单独走代理、不动整机系统代理的用户。

边界与注意:

  • 作用域仅限 DSH 及其子进程;不修改系统代理、不操作 TUN 或第三方 profile。
  • external 按主机名判内网,不做 DNS 后再判;公网域名若解析到内网地址仍会走上游(刻意设计,避免每次多一次 DNS)。
  • 需要内网也走代理时使用 global,并将 bypass 留空。
  • 仓库提供 node tests/smoke.mjs、host.mjs、client.mjs、bench.mjs 等自测脚本;smoke 与 bench 不依赖外网。

本地代理额外开销约为回环一跳与 HTTP 头解析;README 中记载小请求回环基准(如经代理直连约 0.96 ms 中位往返),真实上游延迟取决于本机代理进程与节点,不在插件账上。

结尾

dsh-clashVerge 把 DSH 出网从环境变量手工维护,收敛为侧栏上的模式开关和按主机聚合的字节账单,并与 agent 的 egress_mode 衔接。进一步了解可访问 SkillHub 目录页 与 GitHub 仓库。

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

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

小夜