前言¶
在 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。