dsh-session-permissions:DSH 分层会话权限

前言

在 DeepSeek Harness(DSH)里跑 Agent 或 Claw 会话时,「官方沙箱预设、Agent 策略、当前会话里点选的权限」往往来自不同层。若只靠默认行为,Claw 区还可能继承到与 UI 不一致的只读假象,或在卸掉配套组件后仍残留一部分拦截状态。下面介绍社区插件 dsh-session-permissions(目录分类 admin-security,维护者 xingyingyuzhui):在 Web 会话里画出 权限 tab,并按「更严的一面取交集」计算有效权限;对 Claw 会话还会钉住官方 sandbox/mode,且只收紧、不放宽。

这是什么

dsh-session-permissions 是面向 DSH Web 的会话权限套件。一句话定位:有效权限 = 官方 ∩ Agent ∩ 本会话(Claw 会话另加 Claw 硬顶);同时在界面展示三层交集结果,并管理 Claw 与官方沙箱的衔接。

插件以 MIT 许可发布,当前 package 版本 0.2.30,要求 Node >= 20。社区目录页:https://www.skillhub.cn/plugins/xingyingyuzhui/dsh-claw-permissions;源码与说明见 GitHub:https://github.com/xingyingyuzhui/dsh-session-permissions(与目录 slug 可能不同,安装与卸载以 README 中的仓库名为准)。

权限如何叠加

打开任意会话后,会话区会多一个 权限 tab。有效权限按更严的一面取交集,两种会话路径不同:

  1. 工作区会话:只走官方权限。套件不拦截、不收紧、不画本会话天花板。
  2. Claw 会话:官方预设 ∩ Claw 硬顶 ∩ Agent 策略 ∩ 本会话覆盖。

工具名对齐 OpenClaw 语义:read / write / edit / apply_patch / exec(DSH 的 bash 是别名)。文件边界由 workspaceAccess 控制,取值为 none | ro | rw | all,路径判定使用 OpenClaw 的 isPathInside。str_replace_editor 作为 DSH 合体工具,按 command 映射到 read/write/edit。bash 整类仍按 Shell 面拦截,不拆命令里的路径——与 OpenClaw 相同:允许 exec 后不再假装只读。

Claw 硬顶与会话 UI

Claw 区的 Agent 和会话都到不了官方最高权限 danger-full-access(无限制终端、不询问)。文件读/写可以到 all,Shell 最高到 allowlist,发布类工具可以按需打开。工作区会话不受这层硬顶限制,也不走套件白名单。

Claw 没有单独保存时,本会话继承天花板,不会再假装成 research 只读。保存时会按天花板收紧;超限选项在 UI 里不可选。

与官方沙箱、dsh-agent-gate 的关系

本插件负责三层交集、绘制会话 权限 tab,并给 Claw 会话钉官方 sandbox/mode(只收紧,不放宽)。当工作区仍存在 BOOTSTRAP.md 时,官方沙箱会先钉到可写本工作区,闸只放行人设文件和 ask_user_question。

真正拦截、一次性审批和审计在 dsh-agent-gate。README 建议与本插件一起安装 gate。卸掉 gate 之后:已经开着的和之后新开的 Claw 会话,只要本插件还在,官方文件沙箱仍会钉住;MCP / 技能 / 路径拦截会停。

安装与启用

在 Web profile 下从 GitHub 安装(命令来自 README,勿自行拼接仓库名):

dsh plugin --profile web add github:xingyingyuzhui/dsh-session-permissions

装完后重启 dsh web。建议同时安装 dsh-agent-gate。

本地开发时,可链接本地目录:

dsh plugin --profile web add link:/abs/path/to/dsh-session-permissions

改源码后执行 npm run build,不要手改生成的 client.js。

卸载:

dsh plugin --profile web remove dsh-session-permissions

数据落盘位置

会话级覆盖写在:

~/.dsh/session-permissions/<sessionId>.json

Agent 策略仍在:

~/.dsh/DSclaw/<slug>/policy.json

以及 registry 中相关条目。

典型用法

  1. 安装插件并重启 dsh web,按需安装 dsh-agent-gate。
  2. 打开目标会话,切换到 权限 tab,查看当前有效权限(三层交集结果)。
  3. 在 Claw 会话中调整本会话覆盖;保存时选项会被 Claw 硬顶收紧,超限项不可选。
  4. 需要改 Agent 级策略时,编辑对应 policy.json 与 registry,与会话 JSON 一并参与交集。

README 未提供独立 CLI 示例子命令;权限行为以 Web UI 与上述文件为准。

适用场景与注意

适合谁:需要在 DSH Web 里可视化、可保存地管理 Claw / 工作区会话权限边界,并要与 OpenClaw 工具名、文件访问模型对齐的开发者与运维。

注意:

  • DSH 生态是「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。
  • 插件在 当前 dsh 进程权限 下运行,安装前请自行审阅源码与 MIT 许可证。
  • 分层拦截的「硬动作」依赖 gate;仅装本插件而不装 gate 时,沙箱钉住等行为仍部分生效,但 MCP / 技能 / 路径拦截会随 gate 卸载而停止。
  • 目录页插件线索为 dsh-claw-permissions,安装与卸载 identifier 为 dsh-session-permissions,以 README 为准。

结尾

dsh-session-permissions 把官方、Agent、本会话(及 Claw 硬顶)收成一条可读的权限视图,并约束 Claw 达不到 unrestricted 终端。若要完整审批链,请与 dsh-agent-gate 配套使用。

  • 目录页:https://www.skillhub.cn/plugins/xingyingyuzhui/dsh-claw-permissions
  • GitHub:https://github.com/xingyingyuzhui/dsh-session-permissions
羽毛球分组比赛记分
小程序二维码

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

Xiaoye