dsh-tm-guard: macOS DSH 智能體權限門控插件

前言

DeepSeek Harness (DSH) 的智能體在本地 macOS 環境運行時,往往需要文件讀寫、網絡訪問或系統管理權限。直接賦予完全控制權存在風險。dsh-tm-guard 旨在爲 DSH 提供一個“零干預”的權限門控層,通過策略決策來限制智能體的操作範圍。

這是什麼

dsh-tm-guard 是一個爲 DSH agents 設計的權限管理插件。它是一個 npm 包(dsh-tm-guard),屬於 DSH Cordis 生態的一部分,而非獨立的沙箱或 CLI 工具。插件通過聲明 dsh.bundle.patch,掛鉤 DSH 的 tools/pre-execute 事件流,在工具執行前進行分類和攔截。

核心功能

插件的核心邏輯遵循“可回滾的操作允許執行,不可回滾的操作拒絕執行”的原則。

  1. 零干預權限門控:在 DSH 代理運行時自動生效,無需人工持續介入。
  2. 基於 Time Machine/APFS 的自動回滾:對於本地可寫目錄,插件會自動創建本地 git 基線或調用 macOS 快照。如果操作是可逆的(如本地 git 操作),插件會自動批准並記錄;如果操作無法回滾(如網絡請求、進程終止),則直接拒絕。
  3. 阻斷與審計:默認阻止網絡訪問、包管理器安裝、進程/系統管理操作。同時,插件內置敏感路徑列表,阻斷對 SSH 配置、AWS 憑證、GPG 密鑰等敏感信息的讀取。所有決策均記錄在審計日誌中。
  4. 工具白名單配置:允許通過配置文件擴展受信任的工具列表。

安裝與啓用

安裝前需確認環境滿足以下條件:
* 系統:macOS 且使用 APFS 文件系統。
* 備份:Time Machine 已配置,工作目錄在 TM 備份捲上且未被排除。
* 權限:運行 DSH 的終端/應用擁有“完全磁盤訪問”權限。
* 工具:git 在系統路徑中。
* DSH 版本:必須與插件的 peerDependencies 範圍匹配。

使用官方安裝命令添加插件:

dsh plugin --profile <name> add dsh-tm-guard

典型用法

安裝後,插件會加載到對應的 DSH Profile 中。你需要通過配置文件調整策略。

1. 擴展寫入保護範圍

在 Profile 的 cordis.patch.yml 中添加 protectedPaths,指定智能體可以寫入的目錄。默認已保護 process.cwd()。

# cordis.patch.yml
protectedPaths:
  - ./my-project/src
  - ./config

2. 解鎖受信任的工具

默認情況下,web_search、skill 等工具被歸類爲“混合/未知”並拒絕執行。在 cordis.patch.yml 中添加 extraAllowTools 來白名單化這些工具:

# cordis.patch.yml
extraAllowTools:
  - web_search
  - skill

注意:切勿將 subagent、subagent_fork、workflow 或 job_output 加入白名單,這會繞過分類器,導致安全策略失效。

3. 驗證安裝與審計

啓動 Profile 後,控制台日誌應顯示加載信息。你可以使用插件註冊的工具來檢查狀態:

# 查看門控狀態和日誌
tm_status

# 查看審計日誌
tm_audit

適用場景與注意

  • 適用場景:需要在本地 macOS 環境中安全運行 DSH 智能體,特別是涉及代碼生成、配置修改或需要聯網的場景。
  • 重要提示:
    • 插件並非安全沙箱,它運行在 DSH 進程的權限上下文中,依賴宿主系統的權限管理。
    • 在生產環境使用前,建議閱讀源碼並確認許可證兼容性。
    • 確保插件版本與 DSH 主版本兼容。

短結尾

dsh-tm-guard 提供了一種基於時間機器和本地快照的實用權限管理方案,適合希望在 macOS 上安全部署 DSH 智能體的開發者。更多配置細節與源碼可參考 GitHub 倉庫。

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

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

小夜