dsh-secret-scrub:DeepSeek Harness 插件

前言

在 DeepSeek Harness (DSH) 的開發中,Agent 需要調用外部工具。如果工具的參數或返回結果中包含密鑰、Token 等敏感信息,直接記錄日誌或傳遞給模型會帶來安全風險。我們需要一種機制,在不丟失上下文的前提下,將這些敏感信息替換爲佔位符,同時記錄發生的事件。

dsh-secret-scrub 旨在解決這一問題。它是一個基於模式的屏蔽插件,在工具執行前屏蔽入參,在模型看到結果前屏蔽出參,並將事件追加到 JSONL 日誌中,但不存儲原始明文。

是什麼

這是一個 DeepSeek Harness 插件,由 jwilson411 維護。

它的核心功能是在工具進出 DSH 流程時,根據已知模式屏蔽敏感信息。它不是檢測模型,不進行分類或啓發式分析,只匹配預定義的形狀。日誌中只包含模式名稱、佔位符和統計信息,不包含原始密文,因此不提供反向映射。

安裝與啓用

使用官方命令安裝:

dsh plugin --profile default add github:jwilson411/dsh-secret-scrub

移除時使用 remove 命令。

核心能力

  1. 進出場屏蔽:工具執行前屏蔽入參,模型看到結果前屏蔽出參。
  2. 模式匹配:支持 GITHUB_PAT、AWS_ACCESS_KEY_ID、SLACK_BOT_TOKEN 等特定模式。
  3. 穩定佔位符:使用 $SECRET_<PATTERN>_<8hex> 格式。同一會話中相同的字節生成相同的佔位符,方便模型推理;不同會話則不同。
  4. 無前像日誌:日誌中不包含原始密文,不提供反向映射。

使用示例

插件導出了 wrapExecute 和 scrub 等函數供直接調用。

  • 包裝工具執行:
    const execute = wrapExecute(tool.execute, state, {
      tool: tool.name,
      incidentLog: '/var/log/dsh/secret-scrub.l',
    });
這會將工具的參數在進入時屏蔽,將工具的返回結果在輸出給模型前屏蔽,並追加事件到日誌文件。
  • 單獨 scrub 值:
    const { value, findings } = scrub(payload, state);
    // findings: [{ pattern: 'AWS_ACCESS_KEY_ID', placeholder: '$SECRET_…', count: 2 }]
`scrub` 函數會遞歸遍歷字符串、數組和對象,包括對象鍵,並返回處理後的值和發現列表。

支持的模式

插件內置了以下模式的正則匹配規則:

  • GITHUB_PAT:匹配 GitHub 經典個人訪問令牌 (ghp_ + 36 字符)。
  • GITHUB_FINE_GRAINED_PAT:匹配 GitHub 細粒度令牌 (github_pat_ + 40 或更多字符)。
  • AWS_ACCESS_KEY_ID:匹配 AWS 長期訪問密鑰 ID (AKIA + 16 字符)。
  • SLACK_BOT_TOKEN:匹配 Slack 機器人令牌 (xoxb- + 數字段 + 密文段)。
  • PEM_PRIVATE_KEY:匹配 PEM 私鑰塊或其頭部。
  • SK_LIVE_TOKEN:匹配通用 sk- 前綴的活體 API Token。

注意事項

  • 非管理器:它不存儲、不輪換、不驗證密鑰。如果密鑰泄露,需要手動輪換。
  • 非檢測器:不使用分類器或熵值啓發式,只匹配預定義正則。
  • 依賴版本:依賴 @deepseek-ai/dsh-tools ^0.1.1-rc.2。
  • 許可證:MIT。
  • 定位:它是側信道記錄,不是 DLP(數據防泄漏)或實時掃描 API。

參考資料

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

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

小夜