DSH Transpose Plugin:跨工作区迁移对话会话

前言

在 DeepSeek Harness(DSH)里,侧栏会话默认只能在当前工作区内排序。当你把同一类任务拆到多个工作区,或想把某段对话从「试验目录」挪到「正式项目」时,原生界面没有跨工作区搬迁入口,只能手动找日志文件改归属,容易漏改一处导致会话在侧栏「失联」。

DSH Transpose Plugin(仓库名 DSH-Transpose-Plugin,维护者 zsenpro,社区分类为工作流)针对的就是这件事:用拖拽把一段对话连同历史一起迁到另一个工作区,并尽量保留工作区内原有的排序手势。

这是什么

一句话:把一段对话从一个工作区拖到另一个工作区,历史一起带走。

npm 包名为 @yg/dsh-session-mover,以 DSH 插件(Cordis bundle)形式安装;cordis.patch.yml 插入的条目 id 为 yg-session-mover。简介与目录页一致——为不同工作区之间的项目提供更方便的转移。

核心功能

两种拖拽分流

侧栏会话行上有两种拖拽,按发生顺序分流:

  1. 直接拖 → 走浏览器原生 HTML5 拖放,会话只在当前工作区内换位置,与未装插件时相同。
  2. 按住不动约 220ms 再拖 → 插件接管,用于跨工作区搬家。长按成立后右侧浮出目标工作区列表,继续拖动并在目标上松手即完成搬迁;按 Esc 可取消。

判定细节(README 原文):按住不动 220ms 才算长按;这段时间内位移超过 12px 则判定为普通拖动,交回原生排序。

投放目标与反馈

拖起后可投放到:右侧浮层上的工作区卡片,或侧栏里的工作区行。成功后底部提示「已移动到 <工作区名>」,侧栏会立刻刷新。若当前只有一个工作区,不显示浮层。

服务端搬迁与回滚

一段对话属于哪个工作区,由会话日志首帧(header)里的 cwd 决定。移动一次需同步三处,缺一处会话可能失联:

  1. 将 <sessions>/<旧 project 目录>/<id>/session.vN.jsonl.zstd 搬到目标工作区对应目录;
  2. 重写日志首帧里的 cwd(仅首帧为 header,后续帧为原始事件字节,直接拼接,不重新压缩);
  3. 在 workspace registry 里把会话从旧工作区摘掉、挂到新工作区,并同步 registry 的 cwd 索引。

任一步失败会把日志搬回原处、还原归属(含挂回原工作区,避免游离),接口返回 attach-rejected 并附回滚结果。

安装后宿主侧提供 POST /yg-session-mover/api/move(参数 { sessionId, targetWorkspaceId })与 /api/peek;客户端在 shell.overlay 上注册浮层。每次调用会在 ~/.dsh/yg-session-mover.log 追加一行日志。

安装与启用

package.json 中 name 为 @yg/dsh-session-mover,版本在资料中为 1.0.0,许可证 MIT,要求 Node >=20。

在 DSH 里让 plugin_manager 执行 install_bundle,target 指向插件所在目录(即包含本 bundle 的目录),不要使用未在资料中出现的 dsh plugin add github:... 类拼接命令。

安装后若修改了客户端半,需要让页面重新加载:桌面版若无刷新菜单,需关闭窗口再打开,才会拉到新的 __DSH_BOOT__ 图。

仓库提供自检脚本 verify.js:复制一份真实日志到临时目录,跑搬迁、回滚、帧完整性、重复 id 拒绝等流程,不碰真实数据:

node verify.js

典型用法

  1. 在侧栏找到要迁移的会话行。
  2. 按住约 220ms 且位移不超过 12px,再开始拖动(若立刻拖动则仅为工作区内排序)。
  3. 在右侧浮层或侧栏工作区行上松手,等待「已移动到 …」提示并确认侧栏已刷新。

适用场景与注意

适合谁: 经常在多个 DSH 工作区之间整理对话、希望保留完整 session 历史、又不想手改 session.vN.jsonl.zstd 与 registry 的开发者。

已知限制: 当前进程里正在打开的会话,header 在内存里是冻结的。文件、目录与工作区归属会被正确搬走,侧栏刷新后也会显示在新工作区下;但该进程内该会话记录的工作目录仍是旧值,直到重启 DSH 才切换。接口返回值里的 liveHeader: "frozen" 即表示此情况。未在当前进程打开过的会话不受影响。

安全与权限: 插件以当前 DSH 进程权限运行,会读写会话目录与 workspace registry。安装前应阅读 GitHub 仓库 源码与 LICENSE,确认符合你的环境策略。社区目录 skillhub.cn 插件页 为独立站点收录,与 DeepSeek / 幻方无官方从属关系。

结尾

DSH 生态强调「一切皆插件」;Transpose Plugin 补的是侧栏跨工作区搬迁这一环,在保留工作区内原生排序的前提下,用长按拖拽完成会话与历史的整体迁移。需要详情与更新时,可查阅目录页与 GitHub README。

  • 目录页:https://www.skillhub.cn/plugins/zsenpro/DSH-Transpose-Plugin
  • GitHub:https://github.com/zsenpro/DSH-Transpose-Plugin
羽毛球分组比赛记分
小程序二维码

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

Xiaoye