dsh-audit-log:DeepSeek Harness 運行時數據流審計日誌

前言

在 DeepSeek Harness (DSH) 的插件生態中,Cordis 框架允許所有監聽器共享同一個 args 數組。由於 internal/get / internal/set 攔截點公開,任何插件都可以靜默地重寫數據流。當數百個插件同時運行時,很難回答“是哪個插件修改了我的數據”這個問題。

dsh-audit-log 旨在解決這個問題。它是一個運行時數據流審計日誌插件,能夠記錄誰在何時修改了什麼,並精確到具體的插件和 Fiber 層面。

插件簡介

dsh-audit-log 是一個只讀觀察者插件,它不會阻塞、重寫或存儲 Payload 的具體值,僅記錄結構指紋。

  • 類別:admin-security
  • 維護者:ssdyg4444-sys
  • 許可證:MIT

核心功能

  1. Dispatch-level diff:在監聽器運行前後對參數形狀進行快照,記錄中間發生的修改。
  2. Per-listener window attribution:每個監聽器在註冊時被包裹,修改被精確歸因到執行該修改的具體插件和 Fiber(置信度爲 “window”)。
  3. Read-only observer:始終處於觀察模式,絕不干擾數據流。
  4. Shape-only fingerprints:僅存儲結構指紋(類型、鍵、長度),不記錄 Payload 值,確保敏感信息不會進入日誌。

安裝與啓用

進入你的 Web 配置目錄:

cd ~/.dsh/profiles/web
pnpm add dsh-audit-log

然後在 package.json 的 dsh.profile.bundles 中添加 dsh-audit-log,或者使用 dsh plugin --profile web add dsh-audit-log。安裝後重啓 DSH 實例即可。默認情況下插件無需配置即可開始記錄。

典型用法

在任意插件中,可以通過 ctx.auditLog 查詢審計日誌。

查詢特定事件的修改記錄:

const records = await ctx.auditLog.query({
  events: ['message/send'],
  mutationsOnly: true,   // 僅返回發生修改的 Dispatch
  fromSeq: 100,
  limit: 50
});

// 獲取具體的責任人
const culprit = records[0].mutations[0].attribution?.package

// 獲取每個監聽器的窗口記錄
const windows = ctx.auditLog.queryWindows({ event: 'message/send' })

適用場景與注意

  • 適用場景:當你需要排查數據流被意外修改、追蹤插件間數據依賴、或進行安全審計時使用。
  • 注意:插件以當前 DSH 進程的權限運行,安裝前應檢查源碼與許可證。
  • 隱私保護:日誌中永遠不會出現 Secret 等敏感值,僅存儲結構指紋。

侷限性

  • 指紋限制:Shape-only 指紋無法檢測等長字符串交換(如 'by-c' 變爲 'by-d')或原地數字編輯。
  • 時間精度:同步路徑的時間記錄是精確的;但在 serial/parallel/waterfall 模式下,異步監聽器的同步路徑時間粒度較粗(由 Dispatch-level diff 覆蓋)。

dsh-audit-log 與生態中其他上下文層級的觀測工具互補,前者關注運行時數據流修改,後者關注模型 Prompt 的輸入來源。

目錄頁 | GitHub 倉庫

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

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

小夜