前言¶
在 DeepSeek Harness(DSH)里,会话按工作区分组显示。官方把「目录已经不存在」和「会话归档」分成两套机制:目录无法校验时,新会话进不了该工作区,已有会话容易散到侧栏的「无项目」;若用菜单「移除项目」再重新添加同一目录,往往会从空项目开始,旧会话不会自动归位。日常换盘、改路径、临时挪走项目文件夹时,侧栏很容易变得杂乱。
下面介绍社区插件 dsh-plugin-workspace-archive(维护者 WindFromKadath,分类:工作流)。它在不改动 app.asar、不写官方 storages/ 与 sessions/ 的前提下,用官方 API 补上「工作区消失 ↔ 会话归档 / 归组」这条联动,并在 npm 以零运行时依赖发布。
这是什么¶
dsh-plugin-workspace-archive 是 DSH 的 Cordis 插件:已登记的工作区目录被删除或移走时,把该路径下由插件登记过的会话归档;同一目录或登记再次出现时,取消归档并把台账里的成员挂回该工作区;还支持把「无项目」里工作目录与某已登记路径精确一致的会话自动挂回。手动归档整区可通过模型工具 workspace_archive 或输入框斜杠命令触发,与自动流程使用独立台账,互不撤销。
插件记账放在 DSH 主目录下的 sidecar,只走官方 API(例如 Workspace.attachSession),不 import 标准库以外的包。
核心功能¶
自动:目录消失与回归¶
| 触发 | 结果 |
|---|---|
| 已登记工作区目录被删除或移走 | 归档该路径下插件登记过的会话(侧栏默认视图不显示,「全部对话」仍可见) |
| 菜单「删除工作区」(文件夹仍在) | 同样视为消失并归档;官方删除登记是即时的,插件不等确认窗口 |
| 目录或登记回来 | 取消归档插件归档过的会话,并把台账里全部成员挂回该路径工作区(含消失前你已手动归档的会话——它们仍保持归档,只回到对应分组) |
目录缺失会经过默认约 3 秒的确认窗口(confirmDelayMs),避免网络盘或改名过程中的抖动误触;「删除工作区」在插件已见过该登记的本轮运行中会立即处理。
启动归位:「无项目」里的孤会话¶
启动后延迟约 5 秒(adoptDelayMs),若某会话不在任何工作区成员表、且 header 里的工作目录与某已登记工作区路径规范化后精确相等,则自动 attach 到该工作区。可通过配置 adoptUngrouped: false 关闭。此逻辑只在启动时跑一次。
手动:整区归档与恢复¶
- 模型调用工具
workspace_archive:action='archive'归档该工作区内官方尚未归档的会话;action='unarchive'只恢复本工具记过账的那批,你在官方界面手动归档的不动。 - 输入框命令(宿主
dsh-commands注册,命令弹窗可选): /archive-workspace <路径或标题>/restore-workspace <路径或标题>
手动归档与自动归档是两份清单:目录「消失又回来」不会自动放出你手动整区归档的会话;自动归档的那批也不能靠 /restore-workspace 以外的误操作混进手动清单。
三条规则(README 原文约束)¶
- 你自己在官方界面归档的会话,不会被插件自动取消归档;挂回分组后仍隐藏,直到你手动取消归档。
- 归档 / 恢复默认只处理插件台账里记过的会话,不按工作目录反查(例外仅为启动时那一次「无项目归位」)。
- 手动与自动两套清单互不撤销。
做不到什么¶
在只走官方 API 的前提下,不能把会话从一个工作区「迁移」到另一个(需改会话日志里的 cwd,官方无公开 API)。插件不做会话删除、不删文件夹、不做跨机器同步。目录改名等于新路径,挂回时若与 cwd 对不上,插件只记日志、不改数据。
环境要求¶
- DSH 桌面版或 CLI;开发与验证基线为
0.2.0-rc.2(package.json中dsh.engines.dsh为>=0.2.0-rc.2 <0.3.0)。 - Node.js 22.5+(由宿主提供)。
- 零运行时依赖。
安装与启用¶
推荐从 npm 安装(README 记载 2026-10-08 起可装 0.1.0;仓库当前发布版本见 CHANGELOG,为 0.2.0):
dsh plugin add dsh-plugin-workspace-archive
需要钉版本时:
dsh plugin add dsh-plugin-workspace-archive@0.2.0
也可按 README 说明从本地目录联接安装,或使用 GitHub 规格(例如 dsh plugin add github:WindFromKadath/dsh-plugin-workspace-archive#<commit>)。
安装后必须重启 DSH:插件与 bundle 在启动时加载,不支持热更新。
profile 的 patch 可覆盖默认值(定义在 src/index.js 的 resolveConfig),常见项包括:dryRun、confirmDelayMs、pollIntervalMs、watch、adoptUngrouped、adoptDelayMs。
典型用法¶
- 安装并重启 DSH,正常使用各工作区;插件在后台登记成员并在目录变化时归档或恢复。
- 临时移走或删除某项目文件夹:等待确认窗口后,该工作区下已登记会话进入归档;文件夹或登记恢复后,会话取消归档并回到侧栏分组。
- 不想等模型时,在输入框执行
/archive-workspace /path/to/project或按标题匹配;恢复用/restore-workspace(仅恢复该命令 / 工具归档的那批)。 - 若不希望启动时自动认领「无项目」会话,在 profile 中设置
adoptUngrouped: false。
适用场景与注意¶
适合谁: 经常移动、重命名或临时移除项目目录的 DSH 用户;希望侧栏分组与会话归档状态跟文件夹生命周期一致,又不想手改官方存储文件的开发者。
权限与安全: 插件以当前 DSH 进程权限运行,可调用官方工作区与会话 API。安装前建议在 GitHub 查看源码与 MIT 许可证,确认符合你的环境策略。
生态说明: DSH 采用「一切皆插件」的扩展方式;SkillHub 等社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系。本插件 GitHub 星标为 0(目录页数据),不代表功能未经验证——仓库提供 npm test(157 项离线断言)与 npm run rm-test(69 项真机 DSH 运行时断言),均不触碰真实 profile。
其他限制: 若「删除 → 重新添加」发生在插件未运行期间,挂回以 sidecar 最后一次快照为准;新出现的孤会话需重启后才可能再次被归位。归档不等于隐藏工作区行,官方仍可能显示空分组。
链接¶
- 社区目录页:https://www.skillhub.cn/plugins/WindFromKadath/dsh-plugin-workspace-archive
- 源码与 README:https://github.com/WindFromKadath/dsh-plugin-workspace-archive
经过上面的步骤,你可以在不动官方会话文件的前提下,让工作区目录的删、移、回归与侧栏会话归档、归组保持一致;需要整区收拢时再用斜杠命令或 workspace_archive 即可。