前言¶
在 DeepSeek Harness (DSH) 環境中,一個“skill”通常是一個包含 SKILL.md 的文件夾,裏面包含可運行的 shell 腳本、腳本和 MCP 配置。這些代碼往往沒有經過審查,工具訪問權限未被鎖定,且可能在無人知曉的情況下改變。
大多數現有的安全工具回答的問題是“這個 skill 現在危不危險?”。dsh-skillnotary 回答的是另一個問題:“它還是我批准的那個嗎,還只被允許做當初那件事嗎?”。
插件介紹¶
dsh-skillnotary 是一個 DSH 插件,用於鎖定並驗證 AI 代理技能的權限,防止其悄悄獲得新能力。該插件由 liyixuan201211 維護,遵循 MIT 許可證。
核心功能¶
安裝後,插件提供以下功能:
- 鎖定技能權限:生成鎖定文件,記錄內容摘要、解析的提交和能力集。
- 驗證技能完整性:檢測 SKILL.md 及其能力是否與批准的版本發生漂移。
- 簽署能力聲明:使用 ed25519 對包含能力聲明的 DSSE 信封進行簽名。
- 策略治理:通過
policy命令設置允許/拒絕規則。 - 修復 SKILL.md:通過
fix命令自動將技能實際需要的allowed-tools寫入SKILL.md。 - 應用鎖定技能:通過
apply命令將鎖定技能複製到 Harness 目錄。 - CI 門禁:通過
ci命令將上述檢查集成到 CI 流程中。
安裝與啓用¶
在安裝或更新 agent skill 之前,建議先鎖定它、審計它的能力。使用以下命令安裝插件:
dsh plugin --profile web add github:liyixuan201211/dsh-skillnotary
典型用法¶
插件包含兩個內置技能:
skills/skillnotary/:用於審查循環。在添加或更新技能時運行audit(能做什麼)、verify(是否是批准的版本)和policy(是否允許)。如果發現嚴重問題,會阻止安裝。skills/skillnotary-drift-watch/:用於持續監控。設置定期verify任務,以便在停止審查後,技能發生變化時被及時發現。
常用命令示例:
# 檢測能力漂移
skillnotary verify
# 鎖定技能
skillnotary lock
# 自動修復 allowed-tools
skillnotary fix
# 運行 CI 門禁檢查
skillnotary ci
注意事項¶
在部署前,請確認以下事實:
- 無啓動時代碼:
cordis.patch.yml是一個空補丁。插件不包含任何在 DSH 進程啓動時運行的代碼,避免了以高權限運行可能帶來的安全風險。 - 非沙箱環境:檢測基於文件頭部的上下文範圍正則表達式,而非沙箱。這意味着針對性的混淆可以規避檢測,報告“無已知信號”不代表“絕對安全”。
- 掃描範圍:僅掃描文件頭部(1MB 文件,64MB 技能)。
- 簽名方式:使用 DSSE + in-toto 進行簽名,不涉及 Sigstore(無 Keyless/OIDC 或透明日誌)。
- 依賴與兼容性:依賴 TypeScript,無構建步驟,需要 Node >= 23.6。與 DSH 的兼容性要求爲
>=0.1.5-rc.1 <0.2.0。 - 鎖定限制:鎖定文件僅鎖定技能本身,不限制運行時的沙箱行爲。
鏈接¶
- GitHub 倉庫: https://github.com/liyixuan201211/dsh-skillnotary
- 插件目錄: https://www.skillhub.cn/plugins/liyixuan201211/dsh-skillnotary