前言¶
DSH 讲「一切皆插件」,但权限这件事本身没有专门的界面:Settings → General 里只有一行 permission 配置,想改默认值得自己找配置项,想把某个已经开着的会话提到 Full access 也没有入口。dsh-permission-guard 就是这个缺口的补丁——它不发明新权限模型,只是把 DSH 已有的权限预设搬到一个独立页面上,用两个按钮覆盖「新建会话」和「已有会话」这两类真实操作。
这是什么¶
frostnova04 维护的 DSH 插件,分类属于 admin-security。它提供一个 Permission Settings(权限设置) 页面,挂在 Settings 下,解决两个问题:一是让之后新建的会话默认以 Full access 启动,二是把已经存在的会话逐个加入允许名单。当前版本 0.1.0,MIT 许可证,仓库里没有星标(0)。
它不是防火墙,也不是沙箱。页面里的所有写入,都是在调用 DSH 已经有的预设。
核心功能¶
页面上只有两类操作。
1、新建会话默认值(New-session default)
一个按钮把默认权限切到 Full access,从此新建的会话都以该权限启动;另一个按钮恢复安全的 Workspace write 默认值。切换前页面会弹确认,并用平实的话说明风险。
2、已有会话允许名单(Existing-session allowlist)
已经存在的会话保持各自的权限,不会被批量改动。可以逐个把它们提升到 Full access,一次一个。
为什么要单独开页面
DSH 原生在 General 只有一行 permission 设置。这个插件给同一个写入路径做了专用页面,把「新建的开关」和「旧会话的列表」分成两个操作,就是用户实际会来问的两件事。
底层做了什么
- 新建会话默认值:写入
permission设置命名空间的defaultPreset,DSH 创建会话时读取它。改这个值不会影响任何已有会话。 - 允许名单条目:执行的是
/permission命令同样的预设写入,因此改动记录在该会话自己的日志里,重启后仍然生效。 - Full access 的含义:sandbox 为
danger-full-access,approval policy 为never。没有确认弹窗,写入范围是 DSH 进程能访问到的所有文件。
也就是说,这个插件没有新增权限体系,只是给已有预设换了个操作界面。
安装与启用¶
插件市场:等它上架后,可以从应用内的 Settings → Plugins 安装。目前在仓库阶段,用 CLI 一条命令同时把包加入 profile 并注册 bundle:
dsh plugin --profile desktop add github:frostnova04/dsh-permission-guard
profile 名不一样就替换 desktop。也可以用锁定版本的 tarball:
dsh plugin --profile desktop add https://github.com/frostnova04/dsh-permission-guard/releases/download/v0.1.0/dsh-permission-guard-0.1.0.tgz
装完重新加载窗口,页面出现在 Settings → Permissions(权限设置)。
前置要求:
- DSH 0.2.1-rc.5 或更高版本,desktop app 和
dsh web都支持。 - 标准
settings与permission-presets插件,标准组合默认包含。
典型用法¶
1、在 DSH 里打开 Settings → Permissions。
2、想让接下来的调试或实验不必每次确认:点默认值按钮切到 Full access,确认弹窗里读完风险说明再确定。
3、比如某个长时间挂着的会话需要放开写权限,在 allowlist 里选中它,提升到 Full access;这个改动写进该会话自己的日志,重启后仍保留。
4、调试结束,用第二个按钮把默认值还原到 Workspace write。
适用场景与注意¶
适合需要反复切换权限默认值、又不能重启或重建会话的开发者,尤其是团队里有人想给临时会话放开写权限的场景。
几点要注意:
- Full access 意味着无确认弹窗、可写 DSH 进程能触及的任何文件。这个插件会在启用前提示风险,但开关一旦打开,防线就是用户自己了。
- 插件以当前 dsh 进程的权限运行,不做额外的提权或隔离;安装前应检查源码与许可证。
- 它不批量改已有会话,想一次放开多个会话需要逐个点。
- 目录站点是独立站点,与 DeepSeek / 幻方没有官方从属关系,这只是社区插件。
小结¶
dsh-permission-guard 的价值不在于发明了新的权限控制,而是把 defaultPreset 和 /permission 这两处已有写入,包装成了一个能看清、能逐个操作、切换前会确认的页面。它把「新建会话默认值」和「单个已有会话」做成两个独立操作,正好补上 General 里那一行设置做不到的事。
目录页:https://www.skillhub.cn/plugins/frostnova04/dsh-permission-guard
GitHub:https://github.com/frostnova04/dsh-permission-guard