前言¶
在 DSH 裏跑 Agent,工具調用、審批、沙箱策略都會落在會話事件流裏。事後想回答「這輪有沒有越界訪問、有沒有破壞性命令、證據在哪一步」,往往要翻 session.v4.jsonl、對時間軸和調用參數手工對齊。社區插件 dsh-safety-inspector(維護者 ljttt0824,分類 admin-security)把這件事做成只讀審計:讀本地會話事件,按 A–H 分類體系出發現,每條帶事件 seq 錨點與深鏈,便於倒查單條回答的完整執行鏈。它不攔截、不改動會話狀態,也不默認調用 LLM。
這是什麼¶
dsh-safety-inspector 是 DeepSeek Harness 的只讀安全審計插件。當前倉庫版本 1.3.0,許可證 MIT,要求 DSH 引擎 >=0.2.1-rc.1。
定位可以概括爲:讀 $DSH_HOME/sessions/**/session.v4.jsonl.zstd,判定會話中發生過哪些不安全行爲、屬於哪一類、嚴重度(在可證明時)、證據事件序號,並生成可導航的報告與覆蓋臺賬。插件自身數據只寫入 $DSH_HOME/agent-safety/,無對外網絡請求。
與「掃一眼日誌覺得沒事」不同,它強調誠實四態(finding / pass / skipped / error)和顯示盲區:未覆蓋的子類與未掃描原因會明確列出,寧可標明「沒查」,也不把 skipped 當成通過。
核心能力¶
只讀與邊界¶
- 不寫會話文件、不改會話狀態、不執行被審計內容、不髮網絡請求、默認不調 LLM。
- 密鑰類發現只落
{kind, length, fingerprint(HMAC)},原文不進緩存、日誌與 UI。 - 不做實時攔截,不輸出簡單的「安全 / 不安全」二元結論。
分類與證據¶
- 按 A–H 八大類、41 個子類判定,分類體系外置在
taxonomy.json。 - 每條發現需有真實事件
seq;找不到錨點的判定丟棄。 - 深鍊形式:
#safety?session=<id>&seq=<n>,亦支持&finding=<id>、&message=<id>。
判定三態¶
「規則命中」與「能證明違規」分開處理:
| 判定 | 含義 | 是否給嚴重度 |
|---|---|---|
| 已確認 | 決定性事實在事件流可見 | 給 |
| 待驗證 | 規則命中但缺需人工或環境補的事實 | 不給 |
| 已排除 | 被證僞或人工標記可接受 | 不給 |
規則自帶上限(例如看不進命令內部的 destructive-command 最高只能「待驗證」)。裁定採用證僞優先,再升級結論。
覆蓋臺賬¶
每個會話爲 41 個子類各生成一行臺賬(已覆蓋 / 只能部分判定 / 未覆蓋 / 規則異常)。本版 20 條規則覆蓋 41 子類中的 14 個(12 覆蓋 + 2 部分),其餘 27 個在 UI「盲區」中列出。報告寫盤前經 lib/validate.js 自檢,任一項不成立則整份報告降級爲 error。
界面與摘要¶
三個主視圖:總覽(風險分、A–H 分佈、時間軸熱力、Top 發現、盲區)、執行鏈(turn/step、調用詳情、數據訪問、策略上下文)、發現詳情(證據原文、子類定義、人工「標記誤報 / 確認違規」寫入 labels.jsonl)。
默認展示由本地規則生成的中文通俗摘要(0 token);可選「AI 詳細分析」與對待驗證項的「AI 複覈」(按次計費,結果可緩存)。
安裝與啓用¶
桌面版可在 Plugins → Add plugin 選擇插件目錄,或在 PowerShell 中執行(路徑替換爲本機插件目錄):
dsh plugin --profile desktop add link:<本插件目錄>
裝完後重啓 DSH。輸入框上方出現安全巡檢徽章,左側欄出現「安全巡檢」。
典型用法¶
界面入口¶
| 入口 | 行爲 |
|---|---|
| 左側欄「安全巡檢」 | 會話列表 → 總覽 / 執行鏈 / 發現 / 設置 |
| 輸入框上方徽章 | 本輪發現數與風險等級,點擊打開浮層 |
| 助手消息下方圖標 | 打開該條回答的執行鏈 |
| 斜槓命令 | /safety(當前會話) |
Agent 工具 safety_audit¶
支持:scan_session、list_sessions、findings、explain、label、rules。
導出與增量¶
可導出 Markdown 報告 REPORT.md。重掃時與上次結果按特徵比對,顯示新增 / 消失的發現數。
閾值配置¶
默認可被 settings.json 覆蓋,閾值定義集中在 lib/thresholds.js:
{ "thresholds": { "repeatedCallCount": 4, "excessiveToolCalls": 150 }, "retentionDays": 90, "maxSessions": 200 }
數據落盤位置¶
| 位置 | 內容 |
|---|---|
$DSH_HOME/agent-safety/index.json |
會話索引與風險分 |
$DSH_HOME/agent-safety/sessions/<id>.json |
單會話掃描結果(緩存鍵 = mtime:size) |
$DSH_HOME/agent-safety/findings.jsonl |
全局發現流 |
$DSH_HOME/agent-safety/labels.jsonl |
人工標註 |
$DSH_HOME/agent-safety/settings.json |
開關、閾值、保留期 |
插件 API 爲同源 POST/GET /api/agent-safety/*,無額外網絡出口。
適用場景與注意¶
適合誰:需要在 DSH 桌面端對歷史會話做合規復盤、定位某條助手回覆工具鏈、或把 Agent 行爲映射到 A–H 檢查清單的開發者與管理員。
使用前請知悉:
- 插件以當前 DSH 進程權限運行,安裝前應閱讀倉庫源碼與 MIT 許可證。
- 社區目錄 skillhub.cn 插件頁 與 GitHub 倉庫由社區維護,與 DeepSeek / 幻方無官方從屬關係;DSH 生態遵循「一切皆插件」思路,本介紹事實以倉庫 README 與
package.json爲準。 - 27 個子類當前無規則,報告中會明示;不要誤讀「無 finding」爲「全類通過」。
- 開啓全局規則注入或頻繁使用 AI 詳細分析會增加 token 開銷;僅瀏覽面板與本地掃描默認不消耗模型。
倉庫提供自測命令,可在本機驗證:
node --test test/
node test/acceptance.mjs http://127.0.0.1:7801 <token>
結尾¶
dsh-safety-inspector 把會話事件流轉成可覈對的安全巡檢報告:分類清晰、錨點可倒查、盲區可見、默認本地解析。需要安裝說明與規則表時,見 GitHub:ljttt0824/dsh-safety-inspector;在生態目錄瀏覽元信息見 skillhub.cn/plugins/ljttt0824/dsh-safety-inspector。