前言¶
在 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¶
资料记载的三类策略:
- 实时释放:监听会话删除,删除对应沙箱目录。
- 空闲回收:创建超过 5 分钟且无实际文件产出的空沙箱,静默清理。
- 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
本地 link(开发调试)¶
在 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。
- 在输入框输入
/scratch status,查看母工作区映射与草稿目录路径(README 提供状态看板截图说明)。 - 对当前工程需要隔离时执行
/scratch enable(会写入.dsh-isolate);不需要时/scratch disable。 - 磁盘堆积明显时执行
/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 仓库。