前言¶
在 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
含义简述:
webTools:参与 pre-execute 校验的 web 类工具名列表。shellTool:要扫描的 Shell 工具;空字符串关闭 Shell 扫描。allow/deny:允许与拒绝的主机规则;deny 优先,非空 allow 即白名单模式。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 对照配置字段后接入。