dsh-redact-gateway:出站請求脫敏網關

前言

DeepSeek Harness(DSH)會把提示詞、工具返回和附件原樣發給模型提供方。對必須把內部文檔、代碼或客戶資料交給雲端模型的團隊來說,安全評審裏常會卡在一個問題:敏感數據會不會離開本機?單靠「讓模型記得調用脫敏工具」並不可靠,一旦忘記調用就失效。

下面介紹的 dsh-redact-gateway 在傳輸邊界攔截每一次模型請求:出站前把身份證號、手機號、銀行卡、郵箱、地址、姓名、密鑰等替換爲編號佔位符,模型側只看到脫敏副本;回包再還原,會話裏你讀的仍是原文。維護者爲 luokexiaoguo,在 DSH 社區目錄中歸類爲 admin-security。插件以當前 DSH 進程權限運行,安裝前請自行審閱 GitHub 倉庫 源碼與 MIT 許可證。

這是什麼

dsh-redact-gateway 是面向 DSH 的出站脫敏網關(Egress redaction gateway):在請求離開本機前檢測並替換敏感內容,對響應做流式或塊級還原,並在本機保留加密映射表與可校驗的審計日誌。攔截點在 llm/stream 瀑布流,而非某個可選工具,因此主對話、子智能體、會話標題、壓縮等路徑上的模型調用都會經過它。

社區目錄頁:skillhub.cn/plugins/luokexiaoguo/dsh-redact-gateway。該目錄爲獨立社區站點,與 DeepSeek / 幻方無官方從屬關係;DSH 生態理念是「一切皆插件」,本插件即其中一類安全類擴展。

工作原理簡述

會話日誌保留原文(用戶側閱讀對象)。經 deriveMessages() 凍結請求後,在 llm/stream 攔截鏈路上完成檢測、替換與審計,脫敏後的副本發往模型提供方;返回流再經 rehydration 把佔位符換回原文,助手消息仍以原文提交。

與此相關的三條性質(摘自上游說明):

  1. 模型側難以繞過:攔截在傳輸層,不是「可選工具」。
  2. 用戶側無丟失:佔位符只存在於出站副本,還原不依賴猜測或改寫歷史。
  3. 可審計:每次替換寫入一條記錄(類別、規則、佔位符、部分掩碼、指紋、哈希鏈),篡改或刪行會破壞 verify。

佔位符默認可讀形狀爲 [EMAIL_1](單括號、大寫類別、遞增序號)。還原對多種變體較寬容;模型自行「發明」的佔位符不會瞎猜還原,原樣透傳並計入統計。

法律表述上,這是去標識化(pseudonymisation)而非匿名化:映射可逆且保存在本機,在 PIPL 語境下仍屬個人信息範疇,不能當作免除個人數據義務的萬能方案。

能檢測什麼

類別 佔位符示例 說明要點
secret [SECRET_1] 廠商前綴、熵、關鍵詞鄰近;內置 UUID 等 allowlist 降誤報
idcard [IDCARD_1] GB 11643 校驗等
bankcard [BANKCARD_1] Luhn + 常見 IIN
phone [PHONE_1] 號段與邊界
email [EMAIL_1] 正則與結構檢查
address [ADDR_1] 省市區 + 路門牌等
name [NAME_1] 姓氏表 + 上下文(默認 nameStrict)
org [ORG_1] 統一社會信用代碼 + 名稱後綴等
custom [TERM_1] 自定義詞典,最長匹配

優先級(重疊時):secret > custom > idcard > bankcard > phone > email > org > address > name。自定義詞典 dictionary 對內部項目名、客戶名單等通常比純啓發式更穩;也可通過 redact_dictionary 讓智能體維護詞條。

工作區策略

按會話工作目錄最長前綴匹配,子目錄可在豁免樹內重新強制脫敏:

workspaces:
  - path: 'D:/work/public-docs'
    policy: bypass
  - path: 'D:/work/public-docs/payroll'
    policy: enforce
    dictionary: ['salary bands', 'comp review 2026']
  - path: 'D:/work/legacy-crm'
    policy: audit

policy 取值:enforce(默認,替換並記錄)、audit(只記不替)、bypass(完全跳過,連審計也不寫)。

安裝與啓用

推薦從 npm 已發佈包安裝(dsh-redact-gateway,當前資料中版本 1.0.0)。官方示例命令如下,請按你環境中的 plugin_manager 用法執行,勿憑插件名自行拼接未出現在文檔中的 CLI:

# 已發佈包(推薦)— https://www.npmjs.com/package/dsh-redact-gateway
#   plugin_manager action=install_bundle target=dsh-redact-gateway

# 目錄安裝(開發 / 內部分發)
#   npm install
#   plugin_manager action=install_bundle target=<包目錄的絕對路徑>

運行環境要求(來自 package.json):Node >=20,DSH >=0.2.2-rc.1 <0.4.0-0。

安裝後打開 Settings → Egress redaction gateway 查看狀態、切換模式、按類別開關、導出審計 CSV。插件配置落在 profile 的 cordis.patch.yml 對應段落;設置頁改動會先作用於運行中進程,再寫回配置(寫回會重啓插件,屬預期行爲)。

驗收:發一條含測試數據(例如虛構手機號)的消息,確認設置頁計數器增加;若始終爲 0,說明攔截未生效,應先排查再用於生產。

典型配置

全局配置節選(字段名以 README 爲準):

- id: redact-gateway
  name: dsh-redact-gateway
  config:
    mode: enforce              # enforce | audit | off
    onError: block             # block | pass
    categories:
      name: false
      address: true
    dictionary: []
    allowlist:
      values:
        - 'example.com'
        - '13800000000'
      patterns:
        - '@example\.(com|org)$'
    minCustomLength: 2
    nameStrict: true
    promptHint: true
    streamRehydrate: true
    vaultTtlHours: 168
    workspaces: []
    dir: ''                    # 默認 <DSH_HOME>/redact-gateway
    audit:
      retentionDays: 90
      mask: true
      dedupe: true
      dir: ''

數據落盤目錄(默認 <DSH_HOME>/redact-gateway/)包括:master.key、fingerprint.key、按會話的加密 vault、審計鏈路等;密鑰文件權限爲 0600。

適用場景與注意

適合誰:必須把含 PII、密鑰或內部命名的內容交給雲端大模型、又希望在出站邊界強制脫敏的小團隊;需要可導出、可校驗審計跡線的內控或合規溝通場景。

要注意什麼:

  • 插件與 DSH 同進程權限,能讀寫的範圍取決於你如何配置工作區與 dir;安裝前審閱源碼與 SECURITY.md。
  • 這是傳輸層去標識化,不能替代訪問控制、數據分類、合同與告知等同等義務。
  • name、address、org 等啓發式有誤報可能,可用 allowlist、categories 與 dictionary 調優; rollout 階段可對工作區設 audit 先觀察。
  • 社區目錄星標等元數據會變動;以倉庫 README 與 npm 包爲準。

結尾

若你的痛點是「數據會不會原樣出網」而不是「模型會不會記得脫敏」,dsh-redact-gateway 把策略釘在 llm/stream 上:出站掩碼、入站還原、本地加密映射與審計鏈一併收口。進一步瞭解請訪問 社區目錄頁 與 GitHub:luokexiaoguo/dsh-redact-gateway。

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

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

小夜