dsh-scratch-workspace:DSH 会话级沙箱隔离与草稿目录清理

前言

在 DeepSeek Harness(DSH)里并行开多个 Agent 会话,或直接在默认工作区即兴提问时,常见问题是:所有会话共用同一工作区根目录,产物互相覆盖;旧式隔离方案依赖 DSH 内部私有 API,在 0.2.x 升级后容易报错;即兴会话留下的临时文件又很少被自动清理。下面介绍社区插件 dsh-scratch-workspace(维护者 MDX-Tom,分类 admin-security),它按 DSH 原生工作区规范做物理写隔离、侧边栏归集,并带磁盘生命周期回收。

这是什么

dsh-scratch-workspace 是 DSH 插件,npm 包名同为 dsh-scratch-workspace,当前资料记载版本 0.1.4,MIT 许可证,要求 Node.js 22+,并标注 Cordis Ready。源码仓库:MDX-Tom/dsh-scratch-workspace。插件目录页:SkillHub 插件条目。

一句话定位:为每个需要隔离的会话分配独立子沙箱,写入收敛于 session-<id> 子目录,项目在会话侧只读可用;同时在侧边栏把会话挂在母工作区下,并用 GC 清理空闲与孤儿目录。

核心功能

物理写沙箱与只读项目

在已开启隔离的工作区里,新会话会动态创建 session-<shortId>(README 示意图中为 session-<标题>-<ID>)子目录,并重定向会话写入边界。既有项目文件对会话只读,可降低并行重构、分析或测试时的互相踩踏。

版本自适应

相对依赖 sessionPath 的传统补丁(如 README 中提到的 dsh-session-isolation),本插件同时适配 DSH 0.2.x+(包裹 candidateMatches(id, path),将沙箱路径映射到母工作区)与 0.1.x(保留对 sessionPath / rememberSessionPath 的适配)。资料还说明会在客户端复用带历史根路径的空白会话时,解除路径认领绑定,以缓解 ApiSessionCwdConflict。

侧边栏归集

会话在界面上仍归属母工作区树,而不是散落成 Ungrouped 孤儿项,便于多会话并行时保持侧栏结构可读。

磁盘生命周期 GC

资料记载的三类策略:

  1. 实时释放:监听会话删除,删除对应沙箱目录。
  2. 空闲回收:创建超过 5 分钟且无实际文件产出的空沙箱,静默清理。
  3. TTL 孤儿扫描:后台每 30 分钟检查,清理已无活动会话对应且超过 24 小时的孤儿目录。

交互入口

  • 聊天内 Slash:/scratch 或 /isolate,子命令包括 status、enable、disable、gc。
  • 根目录标记文件 .dsh-isolate:普通工程可持久开启隔离。
  • default-workspace:README 写明内置免配置自启,无需手动放标记。
  • LLM 工具 session_isolation:action 可取 enable、disable、status、gc。

安装与启用

插件以当前 DSH 进程权限访问磁盘;安装前建议浏览仓库源码并确认 MIT 许可证与行为是否符合你的环境策略。

从 npm 安装(README 推荐)

dsh plugin add dsh-scratch-workspace

也可在 Profile 里用包管理器安装:

pnpm add dsh-scratch-workspace

通过 Git URL 安装

dsh plugin --profile desktop add https://github.com/MDX-Tom/dsh-scratch-workspace.git

在 DSH Profile 目录(示例 ~/.dsh/profiles/desktop)中:

cd ~/.dsh/profiles/desktop
pnpm add "link:/path/to/dsh-scratch-workspace"

然后将 dsh-scratch-workspace 加入该 Profile 的 package.json 里 dsh.profile.bundles 列表,并重启 DSH。

典型用法

先做状态查看,再按需开关隔离或手动 GC。

  1. 在输入框输入 /scratch status,查看母工作区映射与草稿目录路径(README 提供状态看板截图说明)。
  2. 对当前工程需要隔离时执行 /scratch enable(会写入 .dsh-isolate);不需要时 /scratch disable。
  3. 磁盘堆积明显时执行 /scratch gc,立即跑一轮空闲与孤儿目录回收。

若使用 Agent 工具而非 Slash,可让模型调用 session_isolation,action 与上述子命令对应。插件行为摘要也可在 DSH 侧边栏 插件 → dsh-scratch-workspace 中查看。

适用场景与注意

适合谁:经常在同一项目上开多个 DSH 会话、或大量使用 default-workspace 即兴提问,且希望写操作物理隔离、侧栏仍按工作区归集的开发者。

注意:

  • 隔离只解决「写入边界」与清理策略;敏感代码仍应按你们团队规范做权限与审计,不要误以为沙箱等同安全合规边界。
  • GC 会删除符合条件空闲/孤儿沙箱目录;若有未同步产物,先确认文件已提交或已拷出再开 gc。
  • DSH 小版本架构变动时,仍需关注插件 release 说明;README 强调「永久兼容」是相对旧私有 API 补丁而言的设计目标,升级 DSH 后建议跑一遍 /scratch status 与并行会话冒烟。

开发者:运行测试

仓库内置基于 Node.js 原生 test runner 的单元测试:

cd "dsh-scratch-workspace"
node --test "tests/*.test.js"

结尾

dsh-scratch-workspace 把会话写入放进独立 session-* 子目录、母工作区侧栏归集和自动 GC 合成一套流程,针对多会话踩踏、0.2.x 兼容性和磁盘残留三类问题给出可复现的操作路径(Slash、.dsh-isolate、default-workspace 自启)。详情见 SkillHub 目录页 与 GitHub 仓库。

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

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

Xiaoye