把一段对话搬到另一个工作区:长按侧栏里的会话行,拖到目标工作区松手,会话日志与全部历史一起迁移并改指到新目录。直接拖动仍然是工作区内的原生排序。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:zsenpro/DSH-Transpose-Plugin
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
把一段对话从一个工作区拖到另一个工作区,历史一起带走。DeepSeek Harness 的原生侧栏只支持工作区内排序,跨工作区没有入口。
包名 @yg/dsh-session-mover,作为 DSH 插件(Cordis bundle)安装。
用法
侧栏会话行上有两种拖拽,按发生顺序分流:
- 直接拖 → 原生排序。按住后鼠标一动就走浏览器自己的 HTML5 拖放,和没装插件时一样,会话在工作区内换位置。
- 按住不动 220ms 再拖 → 跨工作区搬家。长按成立后才接管这次手势,右侧浮出目标工作区列表,继续拖动并松手即完成搬迁。按 Esc 取消。
判定细节:按住不动 220ms 才算长按;这段时间内位移超过 12px 就判定为普通拖动,交回原生排序。
拖起后有两种投放目标:右侧浮层的卡片,或侧栏里的工作区行。成功后底部提示「已移动到 <工作区名>」,侧栏立刻刷新。只有一个工作区时不显示浮层。
原理
一段对话属于哪个工作区,由会话日志头部的 cwd 决定。移动一次要改三处,缺一处会话就会失联:
- 把
<sessions>/<旧 project 目录>/<id>/session.vN.jsonl.zstd搬到目标工作区对应的目录; - 重写日志首帧里的
cwd。只有首帧是 header,后面每一帧都是原始事件字节,直接拼接,不重新压缩; - 在 workspace registry 里把会话从旧工作区摘掉、挂到新工作区,并同步 registry 的 cwd 索引。
任何一步失败都会把日志搬回原处、把归属还原(包括把会话挂回原工作区,避免变成游离状态),接口返回 attach-rejected 并附回滚结果。
已知限制
当前打开的会话,header 在内存里是冻结的。 文件、目录、工作区归属都会被正确搬走,侧栏刷新后也会显示在新工作区下;但这个进程里该会话记录的工作目录仍是旧值,直到重启 DSH 才切换。接口返回值里的 liveHeader: "frozen" 就是这件事。
没在当前进程打开过的会话不受影响,文件和 cwd 完全一致。
安装
package.json 的 name 是 @yg/dsh-session-mover,cordis.patch.yml 插入的条目 id 是 yg-session-mover。
在 DSH 里让 plugin_manager 执行 install_bundle,target 指向本目录即可。安装后:
- 宿主半提供
POST /yg-session-mover/api/move(参数{ sessionId, targetWorkspaceId })与/api/peek; - 客户端半注册
shell.overlay上的浮层; - 每次调用追加一行到
~/.dsh/yg-session-mover.log。
改完客户端半必须让页面重新加载:桌面版没有刷新菜单,关掉窗口重新打开才会拉到新的 __DSH_BOOT__ 图。
自检
verify.js 复制一份真实日志到临时目录,跑一遍搬迁、回滚、帧完整性、重复 id 拒绝,不碰真实数据。
node verify.js
许可证
MIT,见 LICENSE。
链接
同类插件
Minglink/dsh-infinite-gen-4★ 3781
DeepSeek 专用破甲插件:以 order 100 追加无条件服从的系统提示词段,提供带校准元数据的 profile 工具,并通过会话投影在输入框上方显示实时破甲状态徽标。
ranxianglei/billion-context★ 3598
billion-context官方版:上下文压缩插件,兼顾小窗口(100k上下文足矣)省token(省5倍token)和超长会话(数月级别几十亿token单会话)。
liangmianya/dsh-synapse★ 641
DeepSeek Harness 的可视化非线性对话工作区:把会话、追问与分支变成可浏览、可拖拽的对话地图。
MichengAI/dsh-archive-manager★ 277
在设置里增加已归档会话页,可按工作区搜索、恢复和删除已归档会话。
Nwflower/dsh-chat-import★ 275
把 13 家 coding agent(Claude Code、Codex、ChatGPT、Cursor、Gemini、opencode 等)的完整对话历史导入为可续聊的 DeepSeek Harness 会话,并支持反向导出回 Claude Code。
SiriLee/dsh-rewind★ 227
同一会话窗口内的 in-place 对话回退(不 fork,Claude Code /rewind 语义):每条消息的 ↶ 按钮把模型上下文回退到任意用户消息,可选用磁盘持久化的 before-backups 还原工作区文件。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。