前言¶
DSH 的核心理念是「一切皆插件」。在使用 Agent 進行開發時,開發者面臨兩個常見風險:一是 Agent 可能會嘗試繞過既定的安全規則,二是 Agent 可能會執行修改敏感路徑或卸載關鍵安全插件的操作。dsh-bulwark 插件旨在解決這兩個問題。
dsh-bulwark 是什麼¶
dsh-bulwark 是一個 DSH 插件,由 Hashing2030 維護。它通過兩個機制保障環境安全:首先,向 systemPrompt 注入守則段,限制 Agent 的行爲;其次,在工具調用層攔截對受保護路徑的修改與受保護插件的卸載。
核心功能¶
dsh-bulwark 提供以下核心能力:
- 守則注入:把一個可配置的守則段寫進 systemPrompt,位置由中心順序表推導。
- 路徑保護:攔截對 protectedPaths 內路徑的寫、刪、移動操作。這包括相對路徑解析、重定向以及通過 dd / truncate / tee、python / node 內聯腳本發起的修改。
- 插件卸載保護:命中 protectedRemovalPatterns 關鍵詞的卸載或刪除命令一律被攔截。
- 配置熱重載:監聽配置文件,改動後無需重啓。
- 逃生通道:提供一個環境變量,允許在緊急情況下完全禁用插件。
安裝與啓用¶
安裝插件需要使用官方提供的命令:
dsh plugin add github:Hashing2030/dsh-bulwark
執行安裝命令後,重啓 DSH 使插件生效。
配置與使用¶
插件配置文件位於 $DSH_HOME/dsh-bulwark/config.json。若未設置 DSH_HOME,則默認爲 ~/.dsh。
首次啓動時,控制台可能會輸出:
[dsh-bulwark:config] watcher unavailable, config changes need a restart: ENOENT...
這不是錯誤,它表示配置文件尚未創建,熱重載功能暫未啓用。創建配置文件後,此提示會自動消失。
推薦使用腳本管理配置,而不是手動編輯 JSON 文件。進入插件安裝目錄(路徑根據實際 profile 替換):
cd ~/.dsh/profiles/web/node_modules/dsh-bulwark
常用命令如下:
# 添加受保護路徑
./scripts/protect.sh add /path/to/protect
# 查看受保護路徑列表
./scripts/protect.sh list
# 移除受保護路徑
./scripts/protect.sh remove /path/to/protect
# 測試特定命令是否會被攔截
./scripts/protect.sh test "rm -rf /path/to/protect/foo"
# 修改守則內容
./scripts/protect.sh set-rules "[dsh-bulwark 守則] 新的守則內容"
逃生通道¶
如果需要臨時完全禁用 dsh-bulwark,可以在啓動 DSH 時設置環境變量:
DSH_FORTRESS_DISABLE=1 dsh web
清除該環境變量或重啓即可恢復保護。注意,變量名中的 FORTRESS 是項目舊名(dsh-fortress)的遺留,保留它是爲了不破壞已有配置。
注意事項¶
- 插件以當前 DSH 進程的權限運行,建議在安裝前檢查源碼與許可證(MIT)。
- 默認配置中
protectedPaths爲空,需通過上述 CLI 腳本手動添加需要保護的路徑。