dsh-plugin-session-move:把对话连同会话日志迁到另一个工作区

前言

在 DeepSeek Harness(DSH)里,一个对话默认绑在当前工作区的 project 目录和会话日志 header 里的 cwd。侧栏里手动分组或复制链接,改不了磁盘上的归属;换项目目录继续同一条会话时,往往只能新开对话或自己搬目录、改日志。社区插件 dsh-plugin-session-move 在侧栏会话菜单增加 「移动到工作区…」,由宿主侧一次性完成会话目录迁移、日志 header 里的工作目录改写、工作区注册表更新,并在对话仍打开时同步内存里的 header 与 workingDirectory。

下面介绍插件定位、能力边界、安装方式与典型用法。资料以仓库 README 与 package.json 为准;该插件为非官方社区作品,与 DeepSeek 官方无关。

这是什么

dsh-plugin-session-move(维护者 PanChengN,分类:客户端)是给 DSH 用的 Cordis 插件:在侧栏对话的 ⋯ 菜单里增加 「移动到工作区…」,把选定对话连同磁盘上的会话日志、工作区归属和工作目录一起迁到目标工作区。仓库:https://github.com/PanChengN/dsh-plugin-session-move;目录页:https://www.skillhub.cn/plugins/PanChengN/dsh-plugin-session-move。

许可为 MIT(© 2026 NIUpc);package.json 中版本为 1.0.0。插件以当前 DSH 进程权限运行,安装前建议在 GitHub 阅读源码与 LICENSE。

核心功能

侧栏 客户端 能力(dsh.client 注入 workspace / layout 相关 UI,并 immediately: true):

  1. 菜单入口:对话右侧 ⋯ → 移动到工作区… → 选择目标工作区 → 移动。
  2. 完整迁移(不只改侧栏列表):
    - 会话目录搬到目标工作区的 project 目录(先暂存再原子改名,崩溃后可恢复);
    - 只改写日志 header 所在 Zstandard 帧里的 cwd,已提交事件字节原样保留;
    - 工作区注册表 detach / attach,侧栏立即更新,重启后仍一致;
    - 若对话正打开:同步改写内存 header 与持久化写句柄,再 workingDirectory.set 到新目录;若曾用 cd 换过目录,会补一条 working-directory/change(旧格式日志跳过,等下次打开由后端迁移)。
  3. Agent 工具:宿主可调用 move_session_to_workspace({ sessionId, workspace }),其中 workspace 可为 id、工作区标题或绝对路径。
  4. 主机 HTTP:POST /api/dsh-session-move,JSON 体含 sessionId、workspaceId、dryRun(dryRun: true 时只校验并返回源/目标路径、live、writerFound)。

运行中或等待审批/回答的对话不能移动,需等当前轮次结束再试。

安装与启用

在侧栏 Plugins → Add plugin 中填写安装源(须与 README 一致):

github:PanChengN/dsh-plugin-session-move

点 Enable now。主机端多半立即生效;若侧栏没有出现菜单项,刷新页面(客户端侧有时需重新加载)。

升级时可按版本重装,例如:

github:PanChengN/dsh-plugin-session-move#v1.0.0

本地绝对路径安装(如 /绝对路径/dsh-plugin-session-move)仅建议开发使用:profile 会依赖该目录,卸载前需先在 GUI 里移除。卸载在 Plugins 页面 Disable / Remove。

典型用法

图形界面

  1. 侧栏对话右侧 ⋯ → 移动到工作区… → 选目标工作区 → 移动。
  2. 对话会立刻在新工作区下重新分组;之后再打开时,工作目录即为目标目录。若会话仍开着,可保持打开并在新目录继续。
  3. 若提示无法移动,确认对话未在运行或等待审批/回答。

Agent

move_session_to_workspace({ sessionId, workspace })   // workspace 可填 id / 工作区标题 / 绝对路径

校验(不写入)

POST /api/dsh-session-move
content-type: application/json

{ "sessionId": "session-…", "workspaceId": "…", "dryRun": true }

适用场景与注意

适合:同一 Harness 内多个工作区之间整理对话;把错开在 A 工作区开的会话迁到 B 的项目目录,且希望日志、注册表与打开中的会话 cwd 一致。

边界与限制(README 原文):

  • 目标工作区目录必须存在;同工作区内移动为幂等空操作;目标位置已有同名会话目录时不改动。
  • 没有「撤销」按钮;需要时可再移回原工作区。
  • 依赖宿主内部结构(工作区注册表、JSONL 持久化的 header 与目录约定)。宿主升级后若结构变化,插件会以 runtime/incompatible 或 session/writer-unavailable 明确失败,而不是写坏数据。

DSH 生态强调「一切皆插件」;SkillHub 等社区目录为独立站点,并非 DeepSeek 或幻方官方应用商店。安装第三方插件前请自行审阅代码与权限影响。

结尾

dsh-plugin-session-move 解决的是「对话与工作区、磁盘会话日志、运行 cwd 要对齐」这一具体问题:侧栏一项菜单加上主机端原子迁移与 header 改写,避免手工搬目录。需要细节或报错码时,见仓库 index.js 与 README。

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

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

Xiaoye