安装
在 DeepSeek Harness 里通过 dsh-market 安装
dsh plugin --profile web add dshmarket
或使用命令行
dsh plugin --profile web add github:AHIOSUZ/dsh-workspace-tools
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络。请先审阅源码,并尽量锁定 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提交(沙箱模式与审批策略随之联动)。
- Agent 预设经官方
- 匹配范围:会话工作目录等于该工作区目录,或位于其子目录内。
生效范围与优先级
- 只影响之后新建的根会话:已有会话、恢复的会话、fork 与 subagent 一律不改(subagent 与 fork 由会话头部的父会话标记与委托深度识别)。
- 会话一旦开始(首个 turn 启动)就不再切换;已开始或已恢复的会话即使命中规则也不会被改动。
- 你在会话到达后手动做的选择(新建会话芯片的暂存预设、会话内切换预设)发生在自动应用之后,总是优先生效。
- 新会话在首个 turn 之前会短暂显示全局默认,随后自动切换为工作区默认——会话列表与持久日志都会记录这次选择。
安装与使用
dsh plugin --profile web add @ahiosuz/dsh-workspace-tools
- 重启(或重载)DSH Web。
- 打开 设置 → 工作区默认设置 → 添加规则。
- 从下拉选择工作区(只显示名字;悬浮可看完整路径),选好两个预设,保存。
- 在该工作区里新建一个对话验证:首个回合前自动切换为规则配置的预设。
兼容性
- DSH
0.1.5-rc.1(官方构建,无需补丁)。使用的官方能力:agent/created事件、agentPresets.select、permissionPresets服务、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.js 与 lib/client.js,安装时不执行生命周期脚本。
安全边界
插件只读取会话的工作目录(session.header.cwd)并调用官方预设服务;规则存储在用户设置文档(settings.yaml 的 workspace-tools 命名空间)中,可随时编辑或清空。插件不包含遥测、凭据访问、命令执行或网络访问。启用 danger-full-access 属于 DSH 官方权限预设语义,请仅对信任的目录使用。
MIT License。
评论
评论存放在 GitHub Discussions。用 GitHub 账号登录后可发表评论或点表情。