DeepSeek Harness 插件

AHIOSUZ/dsh-workspace-tools

Star 数 ★ 0 分类 安全与权限 收录于 2026-09-11

按工作区规则为新建根会话自动应用 Agent 预设与权限预设(设置 - 工作区默认设置),仅使用官方扩展点。

安装

# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)

dsh plugin --profile web add github:AHIOSUZ/dsh-workspace-tools

装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWEDERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yamlallowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。

README

English | 中文

DeepSeek Harness 工作区工具:为已注册的工作区分别配置新建根会话自动应用的 Agent 预设与权限预设,免去每次新建会话都手动重选。

工作区默认设置页

仅使用官方扩展点,官方 0.1.5-rc.1 及以上版本开箱即用,无需任何 DSH 补丁。

功能

  • 设置 → 工作区默认设置 新增一个配置页:每条规则 = 选一个已注册的工作区 + 选新会话的 Agent 预设与权限预设(都可留空 = 继承全局默认)。
  • 工作区下拉实时列出侧边栏里已注册的工作区,只显示工作区名字;被删除的工作区规则会标注占位,不会静默失效。
  • 规则以工作区 id 为主键存储(附带路径与标题做冗余显示),工作区改名或路径大小写变化都不影响匹配。

工作方式

  • 每当新的根会话发布(官方 agent/created 事件,早于首个对话回合),插件把会话的工作目录(session.header.cwd)反查为已注册工作区,命中某条规则时:
    • Agent 预设经官方 agentPresets.select 切换并写入会话持久日志;
    • 权限预设经官方 permissionPresets.set 提交(沙箱模式与审批策略随之联动)。
  • 匹配范围:会话工作目录等于该工作区目录,或位于其子目录内。

生效范围与优先级

  • 只影响之后新建的根会话:已有会话、恢复的会话、fork 与 subagent 一律不改(subagent 与 fork 由会话头部的父会话标记与委托深度识别)。
  • 会话一旦开始(首个 turn 启动)就不再切换;已开始或已恢复的会话即使命中规则也不会被改动。
  • 你在会话到达后手动做的选择(新建会话芯片的暂存预设、会话内切换预设)发生在自动应用之后,总是优先生效
  • 新会话在首个 turn 之前会短暂显示全局默认,随后自动切换为工作区默认——会话列表与持久日志都会记录这次选择。

安装与使用

dsh plugin --profile web add @ahiosuz/dsh-workspace-tools
  1. 重启(或重载)DSH Web。
  2. 打开 设置 → 工作区默认设置添加规则
  3. 从下拉选择工作区(只显示名字;悬浮可看完整路径),选好两个预设,保存
  4. 在该工作区里新建一个对话验证:首个回合前自动切换为规则配置的预设。

兼容性

  • DSH 0.1.5-rc.1(官方构建,无需补丁)。使用的官方能力:agent/created 事件、agentPresets.selectpermissionPresets 服务、settings.installSection 设置命名空间、remote.workspace.follow 状态流。
  • 0.3.0 及更早版本依赖 DSH 补丁提供的 workspaceActions 行菜单与 sidebar.workspaces.overlay 槽位;官方仓库不接受外部补丁,0.4.0 起改走纯官方扩展点,配置入口从工作区行菜单改为设置页。

常见问题

为什么新建会话一开始显示的是全局默认? 自动应用发生在会话发布之后(agent/created)、首个对话回合之前——所以会短暂显示全局默认再切换。这是官方"创建后切换"链路的时机,不影响最终生效。

已有会话 / 恢复的会话为什么没变? 规则只作用于新建的根会话。恢复、fork、subagent 和已开始的会话都被明确跳过;你手动选择过的会话以你的选择为准。

工作区下拉里没有我要的目录? 下拉只列出已在 DSH 侧边栏注册的工作区。先在侧边栏把目录注册为工作区,再回到本页添加规则。

切换失败了怎么排查? 最常见的失败是目标预设本身无法挂载——例如自定义预设文件里 persona 条目缺少必填的 prefix 字段(schema 为 prefix 必填、suffix 可选,写成了 text 就会挂载失败)。挂载失败会记录在 DSH 服务端日志中;修正预设文件后,再新建的会话即可生效。

开发

npm install
npm run check

npm run check 会构建两个半区并运行冒烟测试(规则匹配、监听器行为、客户端 bundle 契约、点分注入声明防回归)。npm 包预构建并包含 lib/index.jslib/client.js,安装时不执行生命周期脚本。

安全边界

插件只读取会话的工作目录(session.header.cwd)并调用官方预设服务;规则存储在用户设置文档(settings.yamlworkspace-tools 命名空间)中,可随时编辑或清空。插件不包含遥测、凭据访问、命令执行或网络访问。启用 danger-full-access 属于 DSH 官方权限预设语义,请仅对信任的目录使用。

MIT License。

内容来自项目 README(GitHub)↗

链接

同类插件

查看整个分类 →

社区评论

评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。