按工作区规则为新建根会话自动应用 Agent 预设与权限预设(设置 - 工作区默认设置),仅使用官方扩展点。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:AHIOSUZ/dsh-workspace-tools
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 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。
链接
同类插件
toby-bridges/api-relay-audit★ 832
从 DeepSeek Harness 对 AI API 中转站和 LLM 代理运行本地安全审计,生成 Markdown 报告,覆盖提示词注入、模型替换信号、工具调用改写、错误泄漏、流完整性和按 profile 启用的 Web3 风险。
howmp/dsh-pentest★ 451
面向 DeepSeek Harness 的授权渗透模式:以探索链路记录目标、线索、资产与漏洞,并在 Web 中可视化展示。
SeaOf0/dsh-redteam-model★ 417
面向授权安全研究的 DSH 合集:九个工作模式(redteam 总控、渗透测试、代码审计、二进制分析、攻防评估、免杀对抗、应急溯源、云安全攻防、CTF 解题)与十五个运行时插件,设置页管理台支持一键部署、安装、更新与卸载。
PerryLink/dsh-auto-review★ 164
审批链上的第二模型自动审查:只读审查子代理返回带理由的 allow/deny 结构化裁决,默认 fail-closed。
PerryLink/dsh-permission-rules★ 114
Claude Code 风格的声明式权限规则:按序 allow/deny/ask 的 YAML 规则,在 tools/pre-execute 瀑布上匹配工具名、参数、工作区路径与 agent 身份,带完整会话日志审计、干跑模式与热重载。
PensiveFei/dsh-secure-audit★ 85
DSH 只读安全合规插件:提示注入检测、中文 PII 脱敏、本机配置安全审计,输出脱敏且可复现的报告。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。