dsh-workspace-trust:为 DSH 工作区记录信任,供其他插件决定是否运行项目代码

前言

在 DSH 里用插件处理克隆下来的仓库时,仓库里的配置会直接参与插件行为:没有「这个目录我是否信任」这一层,智能体相关能力往往默认按项目里的设定执行。若你经常打开陌生仓库、或希望其他插件在运行项目内代码前先问过你,dsh-workspace-trust 提供按工作区持久化的信任状态,并暴露给依赖它的插件做判断。下面介绍它是什么、怎么装、怎么用,以及和默认禁止访问路径相关的配置。

这是什么

dsh-workspace-trust 由 RicardoYan 维护,分类为 admin-security。它只负责记录和检查每个 DSH 工作区是「信任」还是「不信任」,本身不执行项目代码;哪些能力会读这份状态,由接入它的其他插件决定。持久化数据写在用户目录下的 JSON 文件中,与具体项目目录是否仍存在无关。

DSH 自带能力里没有工作区信任:克隆来的仓库配了什么,插件就照着运行什么。本插件补的是「用户对这一路径是否放行」这一层。

核心功能

首次会话询问

每个工作区在第一次开会话时会弹一次选择:信任 / 不信任。选完后记住,同一工作区不再重复询问。

工作区边界

工作区定义为:从当前会话目录向上,最近的包含 .dsh/settings.yml 或 .git 的目录;若都不存在,则工作区就是会话目录本身。同一工作区下的子目录共用同一条信任记录。

斜杠命令

  • /workspace-trust:查看当前工作区的信任状态。
  • /workspace-trust trust 或 /workspace-trust untrust:修改状态,当前会话立即生效。

记录保存在 ~/.dsh/workspace-trust/workspaces.json,按路径键值存储。删除工作区目录不会清除记录;之后在同一路径放入别的项目(例如重新克隆了另一个仓库),会沿用原来的选择。若路径换了项目但策略应不同,需用 /workspace-trust untrust(或 trust)改回。

禁止访问列表

即使工作区已标记为信任,插件仍不允许读取下列路径(默认列表):

~/.dsh、~/.ssh、~/.gnupg、~/.aws、~/.azure、~/.kube、~/.docker、~/.git-credentials、~/.config/gh、~/.netrc、~/.npmrc、~/.pypirc、~/.claude、~/.codex、~/.cc-switch

可在 profile 的 cordis.patch.yml 中为插件 dsh-workspace-trust 追加或关闭默认列表,例如:

- id: dsh-workspace-trust
  name: 'dsh-workspace-trust'
  config:
    deniedPaths: ['~/.my-secrets', '%APPDATA%/some-tool']   # 追加
    useDefaultDeniedPaths: true                             # false = 不用上面的默认列表

插件详情页也可配置 deniedPaths / useDefaultDeniedPaths,效果与写入 profile patch 一致。

对外接口

插件依赖 DSH 的 agent/pre-step、userQuestions、commands 等接口,并向其他插件提供客户端导出(如 ./client),供它们在运行项目代码或访问工作区外路径前查询信任状态。具体接入方式以各插件文档为准。

安装与启用

桌面端示例(Web 端将 desktop 换成你的 profile 名,一般为 web):

dsh plugin --profile desktop add github:RicardoYan/dsh-workspace-trust#v0.2.1

装完后重启 DSH。

卸载:

dsh plugin --profile desktop remove dsh-workspace-trust

适用 DSH 版本:@deepseek-ai/dsh >=0.2.1-rc.1 <0.3.0-0。许可证为 MIT。

关闭插件请使用 DSH 插件管理页的开关(会在 profile patch 中写入 disabled);本插件没有单独的开关项。

典型用法

  1. 安装并重启 DSH 后,在新工作区开启第一次会话,在弹窗中选择信任或不信任。
  2. 会话中用 /workspace-trust 确认状态;需要变更时用 /workspace-trust trust 或 untrust。
  3. 若需在信任前提下仍屏蔽额外敏感目录,在插件详情或 cordis.patch.yml 中配置 deniedPaths,并按需设置 useDefaultDeniedPaths。

界面文案跟随 DSH 设置 → 常规 → 语言(中文或英文;自动时跟随系统)。斜杠命令列表中的说明在 DSH 启动时确定,切换语言后需重启才会更新。

适用场景与注意

适合谁: 需要按目录区分「是否允许其他插件按项目配置执行代码或扩大访问范围」的 DSH 用户;与安全、管理类(admin-security)插件组合使用时,本插件提供统一的信任来源。

无界面环境: 没有 UI(例如 headless)时不会弹出询问,按未信任处理。

权限与安全: 插件以当前 DSH 进程权限运行;安装前建议查看 GitHub 仓库 源码与 MIT 许可证,确认符合你的策略。社区插件目录 SkillHub 上的条目 与 DeepSeek / 幻方无官方从属关系,DSH 生态本身是「一切皆插件」的扩展方式。

经过上面的步骤,你会得到按路径持久化的工作区信任记录、可即时修改的斜杠命令,以及可配置的敏感路径禁止列表;其他插件据此决定是否运行项目里的代码或访问工作区外路径,而 DSH 默认则缺少这一层显式选择。

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

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

小夜