前言¶
在使用 DeepSeek Harness (DSH) 進行 Agent 開發時,Agent 通常默認擁有對整個工作區的完全訪問權限。這種全量可見性可能導致權限越界、誤操作或暴露敏感目錄。dsh-session-scope 旨在解決這一問題,它提供了一個獨立的會話級工作區可見性層。
該插件的核心設計原則是:權限 != 範圍。權限決定了 Agent 能對文件做什麼(只讀、寫入或完全訪問),而範圍則決定了 Agent 能看到哪些目錄。它允許在保持 Session 原始工作區不變的前提下,僅向 Agent 暴露選定的目錄。
插件定位¶
- 名稱:
dsh-session-scope - 維護者:
xarleyn - 分類:admin-security
- 核心價值:提供
full、focused、isolated三種會話作用域狀態,通過代碼層面的文件系統投影和 Linux 下的進程隔離機制,限制 Agent 的可見性與操作範圍。
核心功能¶
- 權限與範圍分離:獨立管理權限(
read-only、workspace-write、danger-full-access)和範圍(full、focused、isolated)。 - 會話級投影:通過
session-scope投影,過濾目錄列表和搜索根目錄,隱藏未選中的文件。 - Linux 進程隔離:在 Linux 後端,
isolated狀態利用bubblewrap配置文件對 bash 和 PTY 創建進行強隔離,限制子進程行爲。 - 命令支持:提供
/scope命令用於動態切換作用域狀態。
安裝與配置¶
該倉庫已歸檔並設爲只讀。新的開發與發佈已遷移至 xarleyn/dsh-plugins monorepo,發佈包名爲 @yadsh/dsh-session-scope。
舊的安裝命令仍可使用,但建議使用新的包名:
npm install dsh-session-scope
或
npm install @yadsh/dsh-session-scope
前置要求:Node.js 20 或更高版本。
典型用法¶
安裝插件後,DSH 會加載 cordis.patch.yml 並暴露服務。通過 /scope 命令設置當前會話的狀態:
- 設置完全訪問:
/scope full
- 設置聚焦範圍:
/scope focused
- 設置隔離範圍:
/scope isolated
同時,可以設置會話權限。例如,將權限設置爲只讀:
# 權限設置爲 read-only
適用場景與限制¶
- 適用場景:需要精細控制 Agent 工作目錄、防止 Agent 訪問敏感配置文件、在多租戶或沙盒環境中運行 Agent 的場景。
- Linux 依賴:
isolated狀態依賴於 Linux 後端,且需要啓用 bubblewrap 配置文件。在 macOS 或 Windows 後端上,isolated不可用。 - 進程限制:
focused模式僅限制 DSH 的文件服務,不限制任意 Shell 進程。只有isolated模式在 Linux 下能限制 bash 和 PTY 進程。 - 組合限制:
isolated狀態目前不能與danger-full-access權限組合,否則會失敗關閉。 - 許可證:上游目錄選擇器部分採用 MIT 許可證。
總結¶
dsh-session-scope 爲 DSH 提供了基礎的安全隔離能力。通過 /scope 命令和權限控制,開發者可以構建更安全的 Agent 工作流。目前項目已遷移至 xarleyn/dsh-plugins 倉庫。