Repository navigation
Releases: DevilSpiderX/dsh-workspace-only-plugin
Release list
v0.2.6
适配 DeepSeek Harness 0.2.1-rc.3 ✅(契约核查通过,无需任何代码改动)。
本版本为兼容性验证版本:功能与 v0.2.5 完全一致(功能清单见 v0.2.5),随 dsh 0.2.1-rc.3 的发布完成了全量契约面核查与开发依赖对齐。
🆕 0.2.6 的变化
- dsh 0.2.1-rc.3 兼容性核查(T26):逐面核对 rc.2 → rc.3 的变更,插件全部契约耦合面零破坏——
- UI 槽位契约仅新增 3 个 More 菜单槽位(
conversation.session.header.views.actions/sidebar.panellist.actions/sidebar.right.tab.guide.actions),「待审批」徽章挂载的conversation.session.header.actions与 pending 交互席位机制零变更; - client 冻结模块表(
PLATFORM_MODULES)零变更,react/react/jsx-runtime/@deepseek-ai/dsh-client-ui-primitives仍在表内,require 白名单照旧; - 审批词汇、pre-execute 决策、插件记录通道、问答接缝、转发事件白名单、volatile 配置字段、升权语义(T1)、home 主目录解析、Remote wire(typert)全部零变更(官方包仅版本号 bump);
check-compat14/14 通过(取证源为 npm 上 0.2.1-rc.3 官方发布产物),插件引用的 7 个 ui-primitives 导出符号在 rc.3 导出面全部存在且仅增量。
- UI 槽位契约仅新增 3 个 More 菜单槽位(
- 开发依赖对齐(T26):devDependencies 的
dsh-session/dsh-scope/dsh-user-approval/dsh-client-ui-primitives对照基线从 0.2.1-rc.2 钉到 0.2.1-rc.3(仅供 IDE 解析与本地对照,不进产物)。
🔧 升级 dsh 后请自检
node scripts/check-compat.mjs
探测审批词汇、pre-execute、插件记录通道、问答通道、volatile 配置、client 模块表等契约,漂移会打印差异报告。
📦 安装 / 升级
从 0.2.5 升级直接覆盖安装即可:无配置迁移、无手工操作。首次安装:web GUI「插件」页填 github:devilspiderx/dsh-workspace-only-plugin#main 点安装,或一行 CLI:
dsh plugin --profile web add "github:devilspiderx/dsh-workspace-only-plugin#main"
安装后重启 dsh web,再打开 Workspace Only 开关(设置 → Workspace Only)。
github: 直连不走安装源,机器需能直接访问 GitHub;访问不了可下载 .tgz 填绝对路径安装。
⚙️ 配置速览
| 字段 | 默认 | 说明 |
|---|---|---|
| enabled | false | 门禁总开关 |
| always | [] | 全局白名单(只存全局条目) |
| sensitivePatterns | *.env, *.pem, *.key, … | 敏感文件 basename glob,工作区内也弹窗 |
| deny | [] | 永不放行规则,优先级最高 |
| dialogTimeoutMs | 120000 | 询问等待上限,超时按拒绝 |
| realpathCheck | false | 符号链接越界复核(opt-in) |
完整字段表见 README。
v0.2.5
首个公开发布 🎉 适配 DeepSeek Harness 0.2.x(已在 0.2.1-rc.2 验证)。
dsh-workspace-only-plugin 把任何沙箱模式(read-only / workspace-write / danger-full-access / auto)下代理的文件访问限制在会话工作区内——越界访问一律停下来请用户裁决;每个会话还能用 composer 旁的档位选择框把门禁放宽为「工作区外只读」或「完全放开」。
✨ 核心功能
- 越界门禁:开启后,越出工作区的
read/write/edit/read_image/glob/grep/bash/pwsh调用都会停下询问;关闭则完全不干预。 - 三键裁决:输入栏被与 dsh 权限提升面板同款的卡片接管——
仅此一次(Enter)/总是允许该目录/拒绝(Esc);- 总是允许该目录 写入会话级白名单,同目录后续直接放行(仅本会话及其子代理生效);
- 拒绝 / 超时(默认 120s)一律拒绝,永远 fail-closed。
- 会话档位选择框(composer 权限选择器旁):三档调节本会话门禁强度——仅工作区内 / 工作区外只读 / 完全放开;档位持久在会话日志、会话间独立,子代理启动时继承父档位快照(一次定格、父子各自独立)。
- 子代理等待可见:子代理的询问会在「N 个子智能体」下拉旁亮 「待审批 N」徽章(悬停列出各请求的目标路径,点击直接跳到该子代理),父会话的会话行上另有「待审批」黄点,任何视图下都能发现「有子代理在等确认」;结算后即时消退。
- 并发询问排队:同一会话的并发询问逐张排队(子代理并行工具调用天然同会话并发),不会出现「点了不关」;排队中被新白名单覆盖的调用出队时直接放行(等效批量放行)。
- 多级回退链:Web 三键卡片 → 通用问题卡片(TUI 等)→ 官方
approval/request弹窗(绕过never策略,Full access 会话也弹);完全没有应答渠道时拒绝。 - 白名单双轨管理:设置页管全局目录(处处生效);会话页「白名单目录」视图管会话级条目(本会话及其子代理),互不干扰。
- 敏感文件保护:
*.env/*.pem/*.key/id_rsa*等在工作区内也弹三键(.env.example之类有豁免),且不被目录白名单放行。 deny永不放行规则:命中直接拒绝、不弹窗、优先级最高,任何档位任何白名单都压不过它。- Windows 一等公民:盘符(
C:\...)、UNC(\\server\share)、反斜杠逃逸(..\)与 POSIX 形态同等对待;路径包含判定对 Windows 形态大小写不敏感。 - 零补丁:开关/白名单全走插件 Config,不再需要 0.1 时代的 apiproxy 白名单补丁,与其他模式插件零冲突。
🆕 0.2.5 的变化
- 会话级白名单改为文件持久化(T25):条目从
cordis.patch.yml的always迁往<DSH_HOME>/dsh-workspace-only-plugin/sessions/<主会话id>/whitelist.json({version: 1, dirs: [...]})——写/删不再触碰配置文件,profile 的configoverride 整体替换也冲不掉;always从此只放全局条目。- 启动时自动迁移旧配置里残留的
{session, dir}条目(逐组提交,写失败下次重试,读取路径两边合并去重、竞态不闪断); - 失败方向保持 fail-closed:文件缺失/损坏 = 空列表(多问)、非法会话 id 拒写、写失败回退「仅此一次」;
- 客户端零改动、remote wire 不变,升级后无需任何手工操作。
- 启动时自动迁移旧配置里残留的
📦 安装
web GUI「插件」页填 github:devilspiderx/dsh-workspace-only-plugin#main 点安装,或一行 CLI:
dsh plugin --profile web add "github:devilspiderx/dsh-workspace-only-plugin#main"安装后重启 dsh web,再打开 Workspace Only 开关(设置 → Workspace Only)。
github:直连不走安装源,机器需能直接访问 GitHub;访问不了可下载.tgz填绝对路径安装。
🔧 升级 dsh 后请自检
node scripts/check-compat.mjs探测审批词汇、pre-execute、插件记录通道、问答通道、volatile 配置、client 模块表等契约,漂移会打印差异报告。
⚙️ 配置速览
| 字段 | 默认 | 说明 |
|---|---|---|
enabled |
false |
门禁总开关 |
always |
[] |
全局白名单(只存全局条目) |
sensitivePatterns |
*.env, *.pem, *.key, … |
敏感文件 basename glob,工作区内也弹窗 |
deny |
[] |
永不放行规则,优先级最高 |
dialogTimeoutMs |
120000 |
询问等待上限,超时按拒绝 |
realpathCheck |
false |
符号链接越界复核(opt-in) |
完整字段表见 README。
Full Changelog: https://github.com/devilspiderx/dsh-workspace-only-plugin/commits/main