前言¶
在 DeepSeek Harness (DSH) 的開發流程中,Agent 策略、官方權限與特定會話的需求經常重疊。直接管理這些層級會導致權限邊界模糊,增加了安全風險。現有的權限模型在處理複雜會話場景時,缺乏直觀的配置入口和統一的收斂邏輯。
這是什麼¶
dsh-session-permissions 是一個爲 DSH 提供會話級權限控制的插件。它由維護者 xingyingyuzhui 開發,旨在解決多層級權限疊加後的不確定性。該插件通過計算三個層級的交集來定義有效權限,併爲 Claw 會話提供沙箱模式的“釘住”機制,確保權限不會意外放寬。
核心功能¶
權限視圖與計算¶
打開任意會話後,會話區會新增一個“權限”標籤頁。有效權限基於以下三個層級的交集計算得出:
1. 官方權限
2. Agent 策略
3. 本會話覆蓋
不同類型的會話採用不同的計算邏輯:
* 工作區會話:僅走官方權限,插件不會進行攔截或收緊。
* Claw 會話:組合官方預設 ∩ Claw 硬頂 ∩ Agent 策略 ∩ 本會話覆蓋。
工具與文件邊界¶
- 工具支持:支持
read、write、edit、apply_patch、exec(DSH 的bash是此工具的別名)。 - 文件邊界:通過
workspaceAccess控制,支持none、ro(只讀)、rw(讀寫)、all。 - 路徑驗證:使用 OpenClaw 的
isPathInside進行路徑檢查。 - 合體工具:
str_replace_editor按命令映射到read/write/edit。
沙箱釘住機制¶
- 官方沙箱釘住:Claw 會話會自動繼承並釘住官方沙箱模式,僅收緊限制,不放寬。
- 天花板收斂:保存會話時,系統會根據天花板收緊權限;UI 中超限的選項不可選。
安裝與啓用¶
執行以下命令安裝插件。安裝後需要重啓 dsh web 服務。
dsh plugin --profile web add github:xingyingyuzhui/dsh-session-permissions
安裝完成後,建議同時安裝 dsh-agent-gate 以處理審計和攔截邏輯。
典型用法¶
- 會話配置:打開任意會話,點擊會話區新增的“權限”標籤頁進行配置。
- Claw 會話自動處理:Claw 會話會自動繼承並釘住官方沙箱模式,無需手動配置。
適用場景與注意¶
權限限制¶
- 最高權限限制:Claw 會話無法到達官方最高權限
danger-full-access(即無限制終端、不詢問)。 - Shell 限制:Shell 的最高權限爲
allowlist。 - 文件訪問:文件讀/寫可以配置到
all,但 Shell 訪問受嚴格限制。
數據與行爲¶
- 數據存儲:權限配置存儲在
~/.dsh/session-permissions/<sessionId>.json。 - 卸載後影響:卸載插件後,已開啓的會話其釘住的沙箱模式仍會持續生效,但 MCP/技能/路徑攔截功能會停止。
- BOOTSTRAP.md:如果項目根目錄存在
BOOTSTRAP.md,官方沙箱會先被釘到可寫本工作區,閘只放行人設文件和ask_user_question。
安全提示¶
本插件以當前 dsh 進程的權限運行。在安裝前,建議檢查源碼與許可證。
總結¶
dsh-session-permissions 通過提供可視化的權限 Tab 和嚴格的沙箱釘住策略,解決了 DSH 中會話權限管理的複雜性。它通過三層交集計算確保權限邊界清晰,並通過收緊機制防止權限溢出。相關代碼位於 GitHub。