前言¶
在 DeepSeek Harness(DSH)使用場景中,一個常見需求是:希望把一次運行裏的關鍵觀察點留下來,方便之後在本地核對,但不想把 prompt、工具參數、工具結果或 session ID 明文寫進日誌。
Qiushi DSH Evidence Audit 提供的是一個 observe-only 的 DSH Profile Bundle。它監聽官方 tools/result 和 session/event 擴展點,並把觀察結果整理成確定性、哈希鏈的 JSONL 證據回執。
這是什麼¶
下面先交代項目邊界。
- 項目名:
qiushi-dsh-evidence-audit - 維護者:
030611 - 許可證:MIT
- 定位:DeepSeek Harness 的 observe-only evidence audit bundle
- 來源性質:社區維護,不是 DeepSeek 官方項目
它只作爲觀察者工作。它不註冊模型可見工具,不修改 prompt,不轉換 tool result,也不向 session 追加內容。
核心功能¶
這個插件主要做一件事:把 DSH 發佈出來的觀察事件,整理成一條本地可校驗的 JSONL 證據鏈。
- 監聽官方
tools/result和session/event擴展點。 - 追加確定性、哈希鏈的 JSONL evidence receipts。
- 不保存 prompt、工具參數、工具結果或 session ID 的明文。
- 對保留記錄被修改、未觸及前綴被刪除、鏈接斷裂、最後一行不完整等情況,在驗證現有文件時可能使其可被檢測。
- 可以展示這個 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
這裏需要強調:eventDataHash、argumentsHash 和 outcomeHash 不是脫敏、加密、數字簽名,也不是外部信任錨。JSONL 文件不保存觀察到的明文,但接收文件本身仍應作爲敏感僞匿名數據處理。
它不能證明什麼¶
這個插件的能力邊界很清楚。
它可以讓你看到 observer 在本地序列中記錄了哪些事件類別和哈希,也可以讓現有證據鏈中的部分異常在驗證時顯現。但它不能證明:
- 某個命令是否正確運行
- 某個結果是否真實
- 文件由誰產生
- 一個合法後綴是否曾經被刪除
另外,事件類型和工具名仍然是可讀的,因爲它們是穩定的審計類別。
tools/result 和 session/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 明文落盤的使用者。
使用前注意以下幾點:
- 它是社區維護項目,不是 DeepSeek 官方項目。
- 插件以當前 dsh 進程權限運行。安裝前應檢查源碼和 MIT 許可證。
- 回執文件應作爲敏感僞匿名數據保護。
- 不要把哈希當作脫敏、加密、數字簽名或外部信任錨。
- 兩個事件 feed 不去重,回執數量不能直接當作獨立工具執行次數。
- 插件啓動時會驗證完整現有文件。若啓動階段發現路徑問題或已有鏈條損壞,插件會直接失敗,而不是靜默丟棄審計記錄。
- 運行時的主要開銷包括 canonical serialization、SHA-256、每條觀察記錄的同步追加 I/O,以及插件啓動時的完整鏈條驗證。
結尾¶
Qiushi DSH Evidence Audit 做的事情比較剋制:它不改模型輸入,不改工具結果,也不替 DSH 做執行判斷。它只把 DSH 暴露出來的觀察事件,整理成一條本地可校驗的哈希鏈 JSONL。
如果你需要在 DSH 裏保留一條不含明文敏感內容的本地證據鏈,可以按上面的步驟安裝並驗證配置,然後檢查默認回執文件是否符合預期。
項目源碼:
https://github.com/030611/qiushi-dsh-evidence-audit