dsh-session-permissions:會話級權限控制

前言

在 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。

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

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

小夜