前言¶
在 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):
- 菜单入口:对话右侧 ⋯ → 移动到工作区… → 选择目标工作区 → 移动。
- 完整迁移(不只改侧栏列表):
- 会话目录搬到目标工作区的 project 目录(先暂存再原子改名,崩溃后可恢复);
- 只改写日志 header 所在 Zstandard 帧里的cwd,已提交事件字节原样保留;
- 工作区注册表 detach / attach,侧栏立即更新,重启后仍一致;
- 若对话正打开:同步改写内存 header 与持久化写句柄,再workingDirectory.set到新目录;若曾用cd换过目录,会补一条working-directory/change(旧格式日志跳过,等下次打开由后端迁移)。 - Agent 工具:宿主可调用
move_session_to_workspace({ sessionId, workspace }),其中workspace可为 id、工作区标题或绝对路径。 - 主机 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。
典型用法¶
图形界面
- 侧栏对话右侧 ⋯ → 移动到工作区… → 选目标工作区 → 移动。
- 对话会立刻在新工作区下重新分组;之后再打开时,工作目录即为目标目录。若会话仍开着,可保持打开并在新目录继续。
- 若提示无法移动,确认对话未在运行或等待审批/回答。
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。