前言¶
在 DeepSeek Harness(DSH)裏給智能體掛載插件時,文件讀取、外連、子進程、工具調用往往混在一起發生。出問題時你只能事後猜「是哪個插件、幹了什麼」;平時也看不到每一次調用是否落在聲明過的能力契約裏。社區插件目錄 SkillHub 把 dsh-dashcam 歸在 admin-security,定位不是替你判決「能不能做」,而是像行車記錄儀一樣把觀測到的行爲逐條寫入可離線校驗的賬本。下面介紹它是什麼、默認會改變什麼、如何安裝,以及在什麼前提下才適合裝。
這是什麼¶
dsh-dashcam 由維護者 odysseykernelt 發佈,簡介概括爲:面向 DSH 的 dashcam 插件——能力清單(capability manifests)、運行時守衛(runtime guards)、防篡改審計賬本(tamper-evident audit ledger)。README 用一句話收緊產品邊界:它記錄插件實際做了什麼,不負責替你決定它們可以做什麼。
運行環境要求 Node.js >= 20(CommonJS);npm 包名爲 dsh-dashcam,package.json 中當前版本爲 2.0.3,許可證 MIT。項目自 1.11.0 起由 dsh-covenant 改名爲 dsh-dashcam,能力模型語義仍以倉庫內 docs/SPEC.md 爲準。
安裝後默認發生什麼¶
零配置、默認掛載、空 config 時,插件進入 dashcam 模式:不攔截任何一次工具調用,只觀測並記賬。
| 維度 | 安裝前 | 安裝後(默認) |
|---|---|---|
| 插件活動 | 不可見,常在故障後才察覺 | 每次觀測到的工具調用單獨落賬 |
| 歸因 | 靠猜 | 賬本每行帶 plugin / pluginVersion |
| 是否在契約下 | 不可知 | 每行帶 profiled、manifestHash |
| 防篡改 | 無 | SHA-256 哈希鏈;可離線逐行復算校驗 |
| 攔截 | — | 無;dashcam 模式不拒絕調用 |
賬本默認路徑爲 ~/.dsh/dsh-dashcam/ledger.jsonl(JSONL,一行一條記錄)。README 中的示例字段包括:讀文件 fs.read、執行 proc.spawn(如 git),decision 爲 allow,ruleId 爲 unprofiled,profiled: false 表示處於零契約觀測。
若之後在 config 中配置 requests(插件聲明可做之事)與 grants(宿主授予),同一哈希鏈可走 Two-Key(聲明與授予的交集)做裁決;默認仍是 advisory,也可在 enforce: true 下真正拒絕。記錄與裁決共用一條賬鏈,升級路徑不會分叉審計軌跡。
核心能力(已覈實部分)¶
觀測面¶
賬本覆蓋 README 明確列舉的觀測類型:讀文件、訪問主機、運行命令、調用工具。未映射的工具會以觀測記錄寫入,並帶輸入預覽;掛載記錄會說明當前鏈處於何種模式,避免把未覆蓋能力說成已全覆蓋。
誠實記賬規則¶
- 默認 fail-open:記賬失敗不會因此拒絕調用;會告警並盡力寫入
ledger_fail標記。若需要「記賬失敗則拒絕運行」,可設policy.ledger.failMode: 'closed'。 decision: deny只在確有拒絕時寫入;intercepted: true表示未聲明的調用被實際攔截,而非假設場景。- 可選 HMAC 封存:設置
ledgerMacKey可增強防篡改(README 建議若在意賬本完整性應配置)。
安裝期閘門(附錄能力)¶
README 附錄說明:結構 / 安全 / 簽名等 install-time gates 在 dashcam 產品定位下仍以證據與標籤形式運行;dashcam 模式 above the fold 的主線是錄製。附錄演示可用 CLI 對示例惡意插件跑閘門,例如:
node bin/dsh-dashcam.js gates examples/negative-plugin --skip-signature
輸出中會標明結構門阻斷(如 patch 路徑越界、安裝腳本不在白名單等),失敗信息可指向具體 manifest 字段。
底層能力面(附錄 B)包括 fs.*、net.outbound、net.listen、proc.spawn 等;詳細 scope 語義見倉庫 docs/SPEC.md。這部分主要爲「在錄製之上加裁決」或企業通道場景服務,普通零契約用戶可先只關心賬本文件。
安裝與啓用¶
官方 TL;DR 爲一條命令安裝完整插件包,然後重啓 DeepSeek Harness:
dsh plugin --profile web add dsh-dashcam
桌面配置將 --profile web 換爲 --profile desktop 即可,README 寫明兩種方式等價。安裝後默認僅觀測、不阻斷。
社區目錄頁:https://www.skillhub.cn/plugins/odysseykernelt/dsh-dashcam。源碼與說明:https://github.com/odysseykernelt/dsh-dashcam。
典型用法與後續升級路徑¶
第一步:零契約跑通。 保持默認空 config,正常使用 DSH 與插件;工作中打開 ~/.dsh/dsh-dashcam/ledger.jsonl,按行查看 capability、action、scope、plugin、profiled 等字段,對照當時操作是否一致。
第二步(可選):在錄製之上加契約。 當需要「聲明 + 授予」雙重對齊時,在配置中補充 config.requests 與 config.grants;同一賬本繼續追加,哈希鏈不斷裂。需要強制拒絕時再配合 enforce: true 等企業向選項(細節見 README 附錄與 SPEC)。
第三步(可選):完整性。 若賬本含敏感路徑與時間線,按 README 建議設置 ledgerMacKey,並自行決定賬本是否進入不可信備份介質。
適用場景與安裝前注意¶
適合誰: 需要在本地或團隊環境留存 可離線複驗 的插件行爲軌跡;想區分「在契約內 / 契約外(profiled)」調用;或計劃在觀測穩定後再疊加 Two-Key 裁決的 DSH 使用者。
必須接受的代價: README 把話說得很直白——若你不願有組件旁觀插件活動,就不要安裝。宿主適配器跑在 agent 主進程內;「只記錄、不攔截」恰恰意味着能看見幾乎全部調用。賬本本身是高價值目標(記錄哪些文件何時被觸碰)。安裝前應自行審查源碼與 MIT 許可,覈對 CI 與發佈渠道;不要將賬本自動同步到你不信任的備份。插件以當前 DSH 進程權限運行,權限邊界與 DSH 本身一致。
生態上,DSH 強調「一切皆插件」;SkillHub 等社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係,本文不構成官方應用商店推薦。
結尾¶
dsh-dashcam 把 DSH 插件活動從「事後猜」變成「默認就有一條帶歸因與契約標記的 JSONL 賬本」,並用哈希鏈(及可選 HMAC)支撐離線校驗。默認零配置、不阻斷,適合先看清再決定是否加 requests / grants。進一步瞭解請閱 SkillHub 目錄頁與 GitHub 倉庫 README(含中文 README.zh-CN.md)。