dsh-egress-guard:DeepSeek Harness 模型请求的本地零网络密钥预检

前言

DeepSeek Harness (DSH) 的插件机制允许开发者扩展系统行为。在实际开发中,下游模型适配器通常运行在信任边界内,直接处理完整的用户请求图。如果请求中包含 API 密钥、数据库连接字符串等敏感信息,这些数据会直接暴露给模型进行推理。

dsh-egress-guard 插件位于 llm/stream 边界,在请求被传递给下游适配器之前进行检查。它通过冻结请求图、扫描文本内容,在本地阻止包含已知密钥模式的请求。整个过程不联网、不重写请求值、不将内容发送给外部服务。

插件定位

该插件由 LKRCharon 维护,是一个基于 MIT 许可证的 DSH 安全插件。它专注于“本地、零网络、确定性的密钥预检”。插件在接收到模型请求时,首先验证并冻结请求图,若发现疑似凭证则停止调用下游模型适配器,并返回固定的脱敏错误。匹配结果不会出现在错误信息、报告或插件日志中。

核心功能

插件的核心能力集中在以下几个方面:

  1. 请求扫描范围:扫描系统提示、工具模式、JSON 参数、消息内容以及工具描述等字段。
  2. 密钥检测:内置规则支持检测多种凭证格式,包括 PEM 私钥、GitHub/AWS/Google 等平台的 API 密钥、Bearer 认证、数据库连接 URL 以及常见的 password=、api_key= 等赋值语句。
  3. 默认策略(Fail-Closed):默认情况下,插件会阻断包含已知密钥模式、图片(不支持 OCR 扫描)以及未知内容的请求。
  4. 审计模式:支持切换为审计模式,仅记录发现的信息(规则 ID、结构位置等)而不阻断请求。
  5. 图结构处理:能够处理循环、稀疏或无法冻结的请求图,并会因结构异常而阻断请求。

安装与启用

安装前请确保环境满足依赖要求:Node.js 版本为 22.19.x 或 24,DeepSeek Harness 版本为 0.1.0-rc.6 或兼容版本。

执行以下命令安装插件:

npx --yes @deepseek-ai/dsh@0.1.0-rc.6 plugin --profile web add dsh-egress-guard

安装成功后,dsh 命令的输出中应包含 egress-guard 配置行。注意 DSH rc.6 的配置文件模式禁用了自动 peer 安装,因此命令可能会提示缺少 @deepseek-ai/cordis 等依赖,但这不影响运行,因为宿主环境会提供这些依赖。

配置与使用

配置通过修改 cordis.patch.yml 文件实现,后续的补丁层可以覆盖同名 ID 的配置。

基础配置

在配置文件中添加以下内容:

- id: egress-guard
  name: dsh-egress-guard
  config:
    mode: block
    scanToolSchemas: true
    blockUnscannable: true
    maxScanBytes: 4194304
    maxFindings: 64
    skipProviders: []
    skipPurposes: []
    customRules: []

配置项说明

  • mode:设置为 block 时阻断请求;设置为 audit 时仅记录日志。
  • scanToolSchemas:是否扫描发送给模型工具的描述和 JSON Schema。
  • blockUnscannable:默认为 true,用于阻断图片、格式错误的字段或无法安全扫描的未知内容类型。
  • maxScanBytes:限制扫描的最大文本字节数(默认 4MB,范围 1 KiB - 16 MiB),超过则阻断。
  • maxFindings:最大保留的发现记录数。
  • skipProviders / skipPurposes:通过配置特定路由或对话用途来绕过检查。

自定义规则

插件支持添加自定义规则以匹配特定的密钥前缀。自定义规则不使用正则表达式,而是采用确定性的前缀 + 字母表 + 长度匹配。

customRules:
  - id: acme-production-key
    prefix: 'ACME-PROD-'
    alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
    length: 24

规则定义了前缀、限定字符集以及固定长度。插件会查找前缀,随后从限定字符集中选取指定长度的字符作为后缀。

注意事项

  1. 日志残留:插件阻止了模型请求的外发,但文本可能已经写入本地 DSH 会话日志中,不会自动清理。
  2. 二进制内容:插件不支持对图片进行 OCR 扫描,默认会直接阻断二进制内容。
  3. 边界限制:它是一个运行在 DSH 进程内的插件,仅负责拦截模型请求。它不是机器级的网络防火墙,也无法阻止恶意插件通过非正常路径窃取数据。
  4. 图结构冻结:插件在扫描前会冻结请求图,防止在异步解析期间被直接调用者修改,但运行时全局变量的修改不受影响。
羽毛球分组比赛记分
小程序二维码

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

小夜