jkt-check/dsh-secret-scrub:DeepSeek Harness 不可逆密文清洗插件

前言

DeepSeek Harness (DSH) 的核心设计理念是「一切皆插件」。在构建智能体应用时,会话日志和发送给模型的请求中常包含敏感信息(如 API Key、私钥、Token 等)。dsh-secret-scrub 是一个针对这一场景的不可逆密文清洗插件,它在文本持久化到日志或发送给模型之前,通过正则匹配将其替换为占位符,防止敏感信息泄露。

它是什么

dsh-secret-scrub 是一个提取自 kaya-ai-terminal 项目的独立插件。它为 DSH 提供了密文清洗能力,通过正则匹配密文形状,将其替换为 [REDACTED:<category>] 占位符。该插件由 jkt-check 维护,遵循 MIT 许可证。

核心功能

  1. 不可逆替换:匹配到的密文会被永久替换,无法恢复原文。
  2. 多层级清洗:
    • minimal:仅运行 Tier 0(核心密文规则)。
    • balanced(默认):运行 Tier 0 + Tier 1(环境变量、云厂商 Key)。
    • aggressive:运行 Tier 0 + Tier 1 + Tier 2(PII 信息、高熵值文本如 SHA256)。
  3. 监听器挂载:插件挂载了三个前置瀑布流监听器,分别拦截:
    • 用户消息(agent/pre-step)。
    • 工具执行结果内容(tools/post-execute)。
    • 工具代码调度的持久化日志(tools/ptc-dispatch-log)。
  4. 自定义规则:支持通过配置文件添加自定义的正则规则。
  5. 引擎导出:提供纯净的清洗引擎 scrubText,不依赖 DSH 即可单独在 Node.js 环境中使用。

安装与启用

使用官方 npm 包安装命令即可激活插件。插件默认使用 balanced 级别,无需额外凭证。

dsh plugin --profile headless add dsh-secret-scrub

若需测试本地修改,可使用 tarball 路径安装:

dsh plugin --profile headless add /path/to/dsh-secret-scrub-0.1.1.tgz

典型用法

安装并重启对应 profile 后,执行包含密文的命令,文本在到达日志和模型前已被清洗。

dsh --profile headless "echo AWS AKIAIOSFODNN7EXAMPLE"

若需调整清洗级别或添加自定义规则,需覆盖默认的 cordis.patch.yml:

- id: secret-scrub
  config:
    level: aggressive
    extra:
      - category: internal-token
        pattern: 'internal-[0-9]{4}'

若不使用 DSH,可直接作为 Cordis 插件使用:

import { Context } from '@deepseek-ai/cordis'
import * as SecretScrub from 'dsh-secret-scrub'

const ctx = new Context()
await ctx.plugin(SecretScrub, {
  level: 'aggressive',
  disabled: ['env-var-secret'],
  extra: [
    { category: 'internal-token', pattern: 'internal-[0-9]{4}' },
  ],
})

注意事项

  • 不可逆性:清洗过程不可逆,被替换的密文无法找回。
  • 正则局限:未加前缀的密钥、跨文本块的密钥以及编码形式(Base64、URL 编码)可能因保守的规则形状而无法被匹配。
  • 误报与漏报:Tier-2 规则匹配的是“形状”而非“已证明的密钥”,因此存在误报(如指令中的邮箱可能被清洗)。高熵值文本(如 git SHA)在 aggressive 模式下会被清洗。
  • 安全依赖:不要仅依赖此插件作为防泄露的唯一控制手段。

总结

该插件为 DSH 用户提供了基础的敏感信息保护能力,通过分级配置和自定义规则适配不同场景。更多细节与源码可参考下方链接。

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

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

小夜