dsh-session-workspace:在 DSH 中迁移会话

前言

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

典型用法

  1. 切换到其他会话,确保目标会话不再处于活跃或运行状态。
  2. 打开目标会话的侧边栏菜单。
  3. 选择 Move to another workspace。
  4. 选择目标工作区并确认。

适用场景与注意

  • 会话状态:只有冷会话(未打开或未运行)可以移动。如果会话处于活跃状态,需切换到其他会话,待其关闭后再试。
  • 目标工作区:目标必须是在 DSH 中已注册的工作区。
  • 持久化后端:该插件要求会话使用默认的 per-session JSONL 持久化后端(.jsonl.zstd 或 .jsonl)。它拒绝共享 SQLite 会话持久化,因为无法安全地重新安置独立工件。
  • 文件冲突:目标工作区中已存在的工件永远不会被覆盖。
  • 版本兼容:
    • 插件 0.2.0 需要 DSH 0.1.5-rc.1。
    • 插件 0.1.1 可与 DSH 0.1.1-rc.2 配合使用。
  • Node.js 环境:需要 Node.js 环境,且该环境需支持 DSH 使用的 Zstandard API(DSH 支持的运行时通常已包含)。
  • 备份位置:每次迁移都会在 <DSH_HOME>/session-workspace-backups/<uuid>/ 下保留原始生成的持久化副本。

短结尾

该插件通过在会话侧边栏提供直观的迁移选项,简化了 DSH 多工作区的会话管理流程。对于需要在工作区间流转历史会话的开发者,它提供了安全、低风险的迁移能力。插件源码与文档可在此查看:Unintendedz/dsh-session-workspace。

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

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

小夜