dsh-egress-gate:在 DSH 里用目标白名单约束网络出站

前言

在 DeepSeek Harness(DSH)里跑智能体时,常见做法是加「读侧」防护:例如内容扫描插件,限制哪些文本能进模型上下文。合规和运维里还有另一类问题:代理可以调 web_fetch、web_search,或在 Shell 里用 curl、wget 拉外网——数据会从 Harness 进程出站到哪些主机,往往才是团队第一个要问清楚的事。

官方文档里有网络代理等配置,社区里也有命令判定、内容规则等不同轴线的插件;按维护者在 README 中的说明,在 2026-10-12 前后检索 GitHub 与 awesome 列表时,专门做「目的地 allowlist、在工具执行前拦截 web 出站」的插件仍较空白。下面介绍社区插件 dsh-egress-gate(维护者 zhengqiuyang),它在 tools/pre-execute 阶段对 web 工具做确定性校验,并对 Shell 中的常见 fetch 动词做可选扫描。

DSH 生态强调「一切皆插件」;插件目录站点 SkillHub 为社区索引,与 DeepSeek / 幻方无官方从属关系。

这是什么

dsh-egress-gate 的定位是:为 DeepSeek Harness 提供确定性的网络出站闸门——在 web_fetch / web_search 真正执行前,用配置中的目的地 allowlist / denylist 做检查;拒绝则不会发出请求。信任路径上不调用 LLM。

与「读侧」内容扫描(README 中以 dsh-read-guard 为例)相对,本插件管的是数据可以流向哪里。在 SkillHub 分类为 admin-security;仓库 github.com/zhengqiuyang/dsh-egress-gate 当前 npm 包版本为 0.1.0,许可证 MIT。

核心功能

Web 工具:执行前拦截

插件在 tools/pre-execute 钩子里处理配置的 web 工具(默认可包含 web_fetch、web_search)。参数里的 URL 可被完整解析,因此 README 称 web 侧为全精度 enforcement:不在 allow 规则内的目的地会在运行前被拒绝。

Shell:观察与可选强制

对配置的 Shell 工具(示例为 bash),会在同一条命令片段里扫描紧跟 curl、wget、Invoke-WebRequest、Invoke-RestMethod、fetch、http 等动词后的 URL。维护者明确说明:无法穿透脚本、变量或代理,因此默认 shellMode: observe(告警);只有显式设为 enforce 时才会拒绝。

策略语义

  • Deny 优先:命中 deny 一律拒绝。
  • 非空 allow:表示「仅允许这些主机」;example.com 可覆盖 api.example.com,通配需写 *.example.com 形式。
  • 全程确定性规则,无 LLM 参与判定。

安装与启用

仓库自带预构建的 lib/,通过 dsh plugin add 安装时无需本地构建,也无需 allowBuilds 授权。维护者在 README 中给出的安装命令如下:

dsh plugin --profile default add github:zhengqiuyang/dsh-egress-gate

兼容性说明(摘自 README):

  • DSH:在 0.2.x 线验证(源码快照 0.2.1-alpha.2);任意 profile 均可 dsh plugin add。
  • Node:>= 20(CI 矩阵含 Node 20/22/24,Ubuntu 与 Windows)。

启动后日志中会出现类似 [dsh-egress-gate] active: … 的提示(维护者 2026-10-19 在 disposable profile 上的记录)。

典型配置

在 profile 的插件配置中增加条目,字段以 README 为准:

- id: dsh-egress-gate
  name: dsh-egress-gate
  config:
    webTools: [web_fetch, web_search]
    shellTool: bash            # '' disables the shell scan
    allow: [docs.deepseek.com, github.com]
    deny: [pastebin.example]
    shellMode: observe         # observe | enforce

含义简述:

  1. webTools:参与 pre-execute 校验的 web 类工具名列表。
  2. shellTool:要扫描的 Shell 工具;空字符串关闭 Shell 扫描。
  3. allow / deny:允许与拒绝的主机规则;deny 优先,非空 allow 即白名单模式。
  4. shellMode:observe 仅观察告警;enforce 对 Shell 中识别到的 URL 同样执行拒绝。

适用场景与注意

适合谁

  • 需要在团队或实验环境里回答「智能体允许访问哪些外网主机」,且希望 web 出站可审计、可复现的团队。
  • 已使用 DSH 0.2.x,并愿意在 profile 里显式维护 allow/deny 列表的场景。

务必知晓

  • 插件与 DSH 进程同一权限运行;安装前应自行审阅 源码与 LICENSE,确认策略符合组织要求。
  • Shell 扫描有已知精度边界;高敏感环境应对 shellMode: enforce 的误报/漏报有预期,或配合更外层网络策略。
  • 维护者声明的「退场条件」:若 DSH 官方内置目的地策略,或代理层插件支持 per-host 规则,本仓库将冻结在最后可用版本并在此留复盘说明——选用时可关注上游动态。

本地开发与测试(维护者文档):

npm install && npm test

结尾

dsh-egress-gate 补的是 DSH 生态里「出站目的地」这一轴:web 工具在执行前按白名单拦截,Shell 侧提供可选的 fetch URL 观察或强制。若你正在给 Harness 智能体划网络边界,可从目录页与仓库 README 对照配置字段后接入。

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

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

小夜