Qiushi DSH Evidence Audit:爲 DeepSeek Harness 留下可本地校驗的哈希鏈證據回執

前言

在 DeepSeek Harness(DSH)使用場景中,一個常見需求是:希望把一次運行裏的關鍵觀察點留下來,方便之後在本地核對,但不想把 prompt、工具參數、工具結果或 session ID 明文寫進日誌。

Qiushi DSH Evidence Audit 提供的是一個 observe-only 的 DSH Profile Bundle。它監聽官方 tools/resultsession/event 擴展點,並把觀察結果整理成確定性、哈希鏈的 JSONL 證據回執。

這是什麼

下面先交代項目邊界。

  • 項目名:qiushi-dsh-evidence-audit
  • 維護者:030611
  • 許可證:MIT
  • 定位:DeepSeek Harness 的 observe-only evidence audit bundle
  • 來源性質:社區維護,不是 DeepSeek 官方項目

它只作爲觀察者工作。它不註冊模型可見工具,不修改 prompt,不轉換 tool result,也不向 session 追加內容。

核心功能

這個插件主要做一件事:把 DSH 發佈出來的觀察事件,整理成一條本地可校驗的 JSONL 證據鏈。

  1. 監聽官方 tools/resultsession/event 擴展點。
  2. 追加確定性、哈希鏈的 JSONL evidence receipts。
  3. 不保存 prompt、工具參數、工具結果或 session ID 的明文。
  4. 對保留記錄被修改、未觸及前綴被刪除、鏈接斷裂、最後一行不完整等情況,在驗證現有文件時可能使其可被檢測。
  5. 可以展示這個 observer 在某個本地序列中看到了哪些事件類別和哈希。

默認回執路徑是:

$DSH_HOME/evidence-audit/evidence-receipts.jsonl

如果 DSH_HOME 未設置,則默認是:

~/.dsh/evidence-audit/evidence-receipts.jsonl

每一行包含:

schemaVersion
sequence
collectedAt
previousRecordHash
recordHash

其中 recordHash 是對除自身之外所有字段做 canonical JSON 後的 SHA-256。下一行通過 previousRecordHash 指向前一行的 recordHash;第一行的 previousRecordHash 使用 null

插件啓動時會校驗完整現有文件。如果某一行、sequence、record hash 或 previous-hash link 無效,它會拒絕繼續追加。

安裝與啓用

前置條件是:

Node.js: ^22.19.0 || >=24.0.0
DSH installation: built from the tested commit

先執行安裝。以 web profile 爲例:

dsh plugin --profile web add qiushi-dsh-evidence-audit

如果你使用的是其他 profile,可以使用通用形式:

dsh plugin --profile <profile> add qiushi-dsh-evidence-audit

安裝後,下面這條命令用於檢查插件是否已經進入當前 profile 的配置:

dsh --profile <profile> --dump-config

配置輸出中應能看到一行 id 爲 qiushi-evidence-audit、name 爲 qiushi-dsh-evidence-audit 的記錄。

默認回執會寫入:

$DSH_HOME/evidence-audit/evidence-receipts.jsonl

如果 DSH_HOME 未設置,則寫入:

~/.dsh/evidence-audit/evidence-receipts.jsonl

如果要從當前 profile 移除這個 bundle,可以執行:

dsh plugin --profile <profile> remove qiushi-dsh-evidence-audit

如果你是從 DSH 源碼 checkout 運行,按照該 checkout 的文檔把 dsh 替換爲對應的啓動器,例如文檔中的 pnpm dsh 啓動方式。

回執裏記錄了什麼

session-event receipt 保存的是經過哈希或可審計類別的字段,包括:

  • 經過哈希的 session ID
  • event type
  • event sequence
  • event time
  • event data hash
  • 可選的 ignorable 標記

tool-result receipt 保存的是:

  • tool name
  • 經過哈希的 call ID、root-call ID、session ID
  • argument hash
  • final outcome hash
  • error flag
  • parent-presence flag
  • 可選 error code

這裏需要強調:eventDataHashargumentsHashoutcomeHash 不是脫敏、加密、數字簽名,也不是外部信任錨。JSONL 文件不保存觀察到的明文,但接收文件本身仍應作爲敏感僞匿名數據處理。

它不能證明什麼

這個插件的能力邊界很清楚。

它可以讓你看到 observer 在本地序列中記錄了哪些事件類別和哈希,也可以讓現有證據鏈中的部分異常在驗證時顯現。但它不能證明:

  • 某個命令是否正確運行
  • 某個結果是否真實
  • 文件由誰產生
  • 一個合法後綴是否曾經被刪除

另外,事件類型和工具名仍然是可讀的,因爲它們是穩定的審計類別。

tools/resultsession/event 這兩個 feed 不做去重。DSH 可能先通過 tools/result 發佈一次邏輯工具結果,之後又通過 session/event 作爲 tool/result 事件持久化。這種情況下,這個插件會分別寫入兩條 receipt,描述兩次觀察。不要把這些 receipt 直接相加爲獨立的工具執行次數。

兼容性

這個版本的兼容性聲明比較窄:它針對 deepseek-ai/deepseek-harness 的 commit 47f943859bef60e4160492346772ded9b24f765a,測試日期爲 2026-08-13。

這是一個 commit-pinned 聲明,不是對 npm release 0.0.1-rc.1、未來 DSH commits 或某個 semver range 的承諾。

輸出覆蓋

如果你需要覆蓋默認輸出位置,覆蓋路徑必須使用絕對路徑。

後續 profile patch 會替換完整行配置。因此如果要修改輸出配置,需要保留原 row name,並提供完整配置,而不是隻提供單個字段。

適用場景與注意

它適合希望在 DSH 本地運行中保留一條可校驗觀察鏈,同時避免把 prompt、工具參數、工具結果和 session ID 明文落盤的使用者。

使用前注意以下幾點:

  1. 它是社區維護項目,不是 DeepSeek 官方項目。
  2. 插件以當前 dsh 進程權限運行。安裝前應檢查源碼和 MIT 許可證。
  3. 回執文件應作爲敏感僞匿名數據保護。
  4. 不要把哈希當作脫敏、加密、數字簽名或外部信任錨。
  5. 兩個事件 feed 不去重,回執數量不能直接當作獨立工具執行次數。
  6. 插件啓動時會驗證完整現有文件。若啓動階段發現路徑問題或已有鏈條損壞,插件會直接失敗,而不是靜默丟棄審計記錄。
  7. 運行時的主要開銷包括 canonical serialization、SHA-256、每條觀察記錄的同步追加 I/O,以及插件啓動時的完整鏈條驗證。

結尾

Qiushi DSH Evidence Audit 做的事情比較剋制:它不改模型輸入,不改工具結果,也不替 DSH 做執行判斷。它只把 DSH 暴露出來的觀察事件,整理成一條本地可校驗的哈希鏈 JSONL。

如果你需要在 DSH 裏保留一條不含明文敏感內容的本地證據鏈,可以按上面的步驟安裝並驗證配置,然後檢查默認回執文件是否符合預期。

項目源碼:

https://github.com/030611/qiushi-dsh-evidence-audit
羽毛球分组比赛记分
小程序二维码

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

小夜