前言¶
DeepSeek Harness (DSH) 的核心設計理念是「一切皆插件」。在構建智能體應用時,會話日誌和發送給模型的請求中常包含敏感信息(如 API Key、私鑰、Token 等)。dsh-secret-scrub 是一個針對這一場景的不可逆密文清洗插件,它在文本持久化到日誌或發送給模型之前,通過正則匹配將其替換爲佔位符,防止敏感信息泄露。
它是什麼¶
dsh-secret-scrub 是一個提取自 kaya-ai-terminal 項目的獨立插件。它爲 DSH 提供了密文清洗能力,通過正則匹配密文形狀,將其替換爲 [REDACTED:<category>] 佔位符。該插件由 jkt-check 維護,遵循 MIT 許可證。
核心功能¶
- 不可逆替換:匹配到的密文會被永久替換,無法恢復原文。
- 多層級清洗:
- minimal:僅運行 Tier 0(核心密文規則)。
- balanced(默認):運行 Tier 0 + Tier 1(環境變量、雲廠商 Key)。
- aggressive:運行 Tier 0 + Tier 1 + Tier 2(PII 信息、高熵值文本如 SHA256)。
- 監聽器掛載:插件掛載了三個前置瀑布流監聽器,分別攔截:
- 用戶消息(
agent/pre-step)。 - 工具執行結果內容(
tools/post-execute)。 - 工具代碼調度的持久化日誌(
tools/ptc-dispatch-log)。
- 用戶消息(
- 自定義規則:支持通過配置文件添加自定義的正則規則。
- 引擎導出:提供純淨的清洗引擎
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 用戶提供了基礎的敏感信息保護能力,通過分級配置和自定義規則適配不同場景。更多細節與源碼可參考下方鏈接。