dsh-egress-audit:DeepSeek Harness 数据外发只读审计面板

前言

在 DeepSeek Harness(DSH)里跑智能体时,宿主进程会加载多个插件,并经由 fetch、模型流、工具调用等路径把数据发到网络。单靠日志或抓包,很难在同一界面里看到「谁发起的、发往哪里、属于哪类目的地、有没有被拦截」,也不便于对照官方域名与第三方出口。

下面介绍社区插件 dsh-egress-audit(维护者 Lqba-dx):在 Harness 内提供只读审计面板,汇总最近约一小时的出网观测,不代替防火墙,也不改写任何请求。

这是什么

dsh-egress-audit 是 DSH 的只读「数据外发」审计面板插件。它回答三类问题:Harness 与已加载插件把数据发往何处、发送的是哪一类内容(含启发式标记)、相关调用是否被拦截。

面板入口在 设置 → 数据外发。数据通过 Harness 的 webServer 以只读 GET /dsh-egress/snapshot.json 提供给前端;纯 CLI、没有 webServer 的环境不会激活该插件。

仓库与说明见 GitHub,社区目录页:skillhub.cn/plugins/Lqba-dx/dsh-egress-audit。DSH 生态以「一切皆插件」为思路;SkillHub 等目录为社区站点,与 DeepSeek / 幻方无官方从属关系。

当前 package 版本为 0.2.0,许可证 MIT。

核心功能

观测范围

插件在宿主进程内挂钩(均为透传,不改变行为),并订阅语义事件,主要包括:

  1. globalThis.fetch:记录 URL、方法、发起方、状态码;原样调用原函数,不读、不改响应体。
  2. net.Socket#connect:兜底覆盖不经过 fetch 的 TCP(例如直接走 undici);需 DSH 自带运行时 Node ≥ 22.3 且能用到 process.getBuiltinModule,否则连接层兜底自动跳过,其余功能仍可用。
  3. 模型流 llm/stream、工具调用 tools/pre-execute / tools/post-execute。

每个目的地会给出分级(官方已知 / 本机 / 外部第三方 / 疑似伪装)和可解释标记,例如形近字域名、夹带官方名、形近官方域名、直接用 IP、局域网、明文传输、非常规端口等。

数据保留与隐私边界

  • 在内存中保留最近 1 小时 的记录,经 /dsh-egress/snapshot.json 只读提供。
  • 不发起插件自身的网络请求;不写磁盘;不读历史、配置或凭证;不保存请求/响应正文,也不保存 Authorization 等头。
  • 不拦截、不改写、不重试、不延迟流量。面板上的「隐藏」仅收起展示行,记录与计数不变。

运行前提

前提 说明
DSH 自带运行时(Node ≥ 22.3) 连接层兜底依赖内置模块 API
webServer 服务 面板数据来源
settings.section 槽位 由 dsh-web-app 提供,桌面端与 Web 端均可

安装与启用

官方 README 给出两种方式,不要自行拼接未在文档出现的 CLI 命令。

  1. 从插件市场安装(具体入口以你使用的 DSH 发行版与市场为准)。
  2. 在本机已有插件源码目录时,对该目录执行插件安装(install_bundle,参数为该目录的绝对路径)。

装好后 profile 会记一条 link:<安装目录>。若用本地目录安装,该目录不能删;移动目录后需要重新安装一次。

卸载:在插件管理里移除 dsh-egress-audit 即可。插件不写持久化审计状态;浏览器 localStorage 里仅保留你点过「隐藏」的行。

典型用法

  1. 按上文方式安装并确保当前环境有 webServer 与设置页槽位。
  2. 打开 DSH 设置 → 数据外发,查看目的地列表、分级与可疑标记,以及被拦截的调用(若有)。
  3. 需要程序化查看快照时,对运行中的 Harness Web 服务发起只读 GET(路径固定为 /dsh-egress/snapshot.json),用于自检或对接你自己的监控脚本——仍须在同一 Harness 实例、且插件已加载的前提下。

安装插件前,建议通读 仓库源码 与 MIT 许可证;插件以当前 DSH 进程权限运行,审计能力依赖对出口 API 的只读包装。

适用场景与已知盲区

适合:在开发或调试 DSH 智能体时,快速核对「这一会话里宿主和插件究竟连了哪些主机」;对照官方/本机/第三方分级,排查疑似伪装域名或非常规端口。

不适合当作:唯一的安全边界或合规审计系统——记录有启发式误差,且覆盖范围有限。

README 列出的盲区包括:

  • MCP 子进程、Web Worker 及其他子进程:钩子在宿主进程内,进不去别的进程。
  • 走 CONNECT 代理时,连接层往往只能看到代理地址,真实目的地依赖上层语义事件。
  • 「是否含对话内容」为启发式(模型调用后约 8 秒窗口 + 请求体大小),可能误标或漏标。
  • 插件归因靠调用栈;栈中无包信息时显示为 unknown 或运行时包名。

实现上仅对上述两处出口做 Symbol.for 幂等包装,卸载时经 ctx.effect 清理还原;除 cordis.patch.yml 外无额外构建脚本(package.json 中无 scripts)。

结尾

dsh-egress-audit 把 Harness 宿主侧的出网行为收进一块只读面板:透传挂钩、不落盘敏感正文、不碰你自己的流量策略。若你正在 DSH 里叠插件并关心「数据发去哪」,可从设置页直接查看,或结合 snapshot.json 做二次集成。

  • 目录页:https://www.skillhub.cn/plugins/Lqba-dx/dsh-egress-audit
  • GitHub:https://github.com/Lqba-dx/dsh-egress-audit
羽毛球分组比赛记分
小程序二维码

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

小夜