前言¶
DeepSeek Harness (DSH) 的核心架构是「一切皆插件」。在多工作区管理场景下,经常需要将已有的会话迁移到另一个已注册的工作区。DSH 原生不支持直接迁移会话,这通常意味着需要重新开始对话或手动复制文件。dsh-session-workspace 插件通过在会话侧边栏增加「Move to another workspace」选项,解决了这一痛点。
这是什么¶
这是一个由 Unintendedz 维护的 DSH 插件。它允许在 DSH Web 进程中,将已存在的 DeepSeek Harness 会话移动到另一个已注册的工作区。移动过程中,会话 ID 保持不变,对话历史(JSONL 生成文件)也被完整保留。
核心功能¶
该插件提供以下功能:
* 会话迁移:将现有会话移动到另一个工作区,不改变会话 ID 和对话历史。
* 环境切换:更新会话持久化的当前工作目录 (cwd)。
* 生成文件移动:移动当前的 JSONL 生成文件。
* 索引刷新:更新 DSH 的工作区索引。
* 账户更新:更新工作区关联的账户信息。
* 安全机制:
* 仅冷会话可移动。
* 使用原生写租约排除其他 DSH 写入器。
* 迁移前检查源版本。
* 工作区更新失败时回滚至原始状态。
* 永不覆盖目标位置已存在的工件。
安装与启用¶
安装前请确保 DeepSeek Harness 版本为 0.1.5-rc.1。安装完成后需重启 DSH Web 进程。
dsh plugin --profile web add github:Unintendedz/dsh-session-workspace#v0.2.0
典型用法¶
- 切换到其他会话,确保目标会话不再处于活跃或运行状态。
- 打开目标会话的侧边栏菜单。
- 选择 Move to another workspace。
- 选择目标工作区并确认。
适用场景与注意¶
- 会话状态:只有冷会话(未打开或未运行)可以移动。如果会话处于活跃状态,需切换到其他会话,待其关闭后再试。
- 目标工作区:目标必须是在 DSH 中已注册的工作区。
- 持久化后端:该插件要求会话使用默认的 per-session JSONL 持久化后端(
.jsonl.zstd或.jsonl)。它拒绝共享 SQLite 会话持久化,因为无法安全地重新安置独立工件。 - 文件冲突:目标工作区中已存在的工件永远不会被覆盖。
- 版本兼容:
- 插件
0.2.0需要 DSH0.1.5-rc.1。 - 插件
0.1.1可与 DSH0.1.1-rc.2配合使用。
- 插件
- Node.js 环境:需要 Node.js 环境,且该环境需支持 DSH 使用的 Zstandard API(DSH 支持的运行时通常已包含)。
- 备份位置:每次迁移都会在
<DSH_HOME>/session-workspace-backups/<uuid>/下保留原始生成的持久化副本。
短结尾¶
该插件通过在会话侧边栏提供直观的迁移选项,简化了 DSH 多工作区的会话管理流程。对于需要在工作区间流转历史会话的开发者,它提供了安全、低风险的迁移能力。插件源码与文档可在此查看:Unintendedz/dsh-session-workspace。