dsh-session-manager:DSH 会话库的迁移、打包与 WebDAV 同步

前言

在 DeepSeek Harness(DSH)里,一条会话「属于哪个工作区」并不是侧边栏里可改的字段,而是由会话日志 header 里的 cwd 推导出来的。宿主没有 move / reassign 这类 API,也不接受项目目录与日志里 cwd 不一致的会话。于是常见情况是:手工把项目目录挪走或删掉后,旧会话在侧边栏里变成「未分组」,严重时加载会报 corrupt session log。换机器、换盘符、同一仓库在不同路径各有一份克隆时,想把会话带走或对齐归属,单靠复制文件夹往往对不上宿主规则。

下面介绍社区插件 dsh-session-manager(npm:@he0119/dsh-session-manager,维护者 he0119,SkillHub 分类:记忆)。它把「改 header 里的 cwd、移动日志目录、让宿主认下新归属」编排成可预演、可确认、可字节级回滚的操作,并支持把会话打成 .dshsess 包导出导入,以及通过 WebDAV 在多台机器之间同步。

这是什么

dsh-session-manager 是 DSH 的会话管理插件:在设置里增加一页「会话管理」,用于日常整理会话库;同时向模型暴露若干工具,可以用自然语言先预演再落盘。同步侧远端只存放 .dshsess 包,拉取时按配置里的路径映射把 cwd 改写成当前机器上的目录,因此两台机器上同一项目路径不同也可以互通。

插件与宿主通过 Cordis 补丁集成,面向 Web / desktop profile 的设置界面;写盘类操作统一走「只读计划 → 用户确认 → 执行」,模型工具则是 plan / apply 两次调用。

核心功能

资料里明确的能力可以概括为四类入口(设置页四个分页 + 模型工具),迁移编排在 UI 与工具之间共用同一份代码。

设置 → 会话管理

分页 作用(摘自 README)
会话 按目录分组浏览整库;筛选、搜索;归档 / 取消归档、重新生成名称、查看完整时间线、删除;勾选后通过动作行的「迁移」搬到目标目录
传输 导出 / 导入 .dshsess 会话包
同步 按 WebDAV 配置与远端同步
备份 对插件做过的写盘操作做回滚或恢复

迁移针对的是「会话归属的 cwd 与磁盘上的日志目录不一致」:可跨目录勾选多条会话,一次选定目标项目目录;源目录已从盘上删除时,只要日志仍在库里,仍可勾上后迁到重建后的路径。子智能体会话随父会话一起删 / 搬 / 导出,不能单独勾选。宿主内存里仍打开着的会话(列表里标「活动中」)会被计划排除,需重启 DSH 后再迁。每次迁移会改写各日志首帧的 cwd、搬会话目录、更新工作区注册表,并留下字节级备份。

导出生成 .dshsess:包含所选会话各代日志的原始字节(带 sha256),以及日志引用的图片 / 文件对象(来自 $DSH_HOME/attachments/);不含会话创建过的普通项目文件。导入在「传输」分页完成,流程同样有预演与进度。

删除会先备份到插件备份根,再删会话目录;误删可在「备份」分页恢复。

重新生成名称会按整段对话请宿主的名称服务重算标题;手动改过名的会话默认跳过(API 支持 includePinned: true,界面未暴露该开关)。

列表里还能查看单条会话的完整内容(消息、工具调用、思考等时间线),包括侧边栏里看不到的空白、已归档、子智能体等会话。

五个模型工具

README 说明除设置页外,还有 5 个模型工具:可以直接说「把这个工作区的会话搬到 ~/dev/xxx」或「跟远端同步一下」,由模型先预演再落盘,与弹窗确认使用的是同一套迁移逻辑。

安装与启用

推荐从 npm 安装(仓库说明不支持 github: 形式安装:lib/ 不入库,git 装法拿不到构建产物):

# 用宿主自己的插件命令:它会替你建/填充 profile,并维护依赖与锁文件
npx @deepseek-ai/dsh@next plugin --profile desktop add @he0119/dsh-session-manager
# 然后重启 DSH

宿主版本需为 0.2.0-rc.1 及之后的 0.2.x(engines.dsh 与 peer 均为 ^0.2.0-rc.1)。若运行中的 DSH 版本落在 peer 范围外,整条 profile bundle 会被跳过(日志中可见 skipping profile bundle … is incompatible with dsh …)。

装完并重启后,设置左侧导航会出现「会话管理」(排在官方页面之后)。当前 npm 包版本为 0.6.4(以 package.json 为准)。

本地开发构建后从路径安装(需先 pnpm install && pnpm run build):

pnpm install && pnpm run build
npx @deepseek-ai/dsh@next plugin --profile desktop add /path/to/dsh-session-manager
# 然后重启 DSH

典型用法

场景一:项目目录搬家或删后重建

  1. 打开 设置 → 会话管理 → 会话。
  2. 用分组、筛选或搜索找到要保留的会话(落在「未分组」的往往是 cwd 仍指向旧路径)。
  3. 勾选条目,点动作行的 迁移,在弹窗里选已存在的目标目录(可与「传输」页共用的目录选择控件;可填新建工作区名称、是否连带搬迁会话创建过的文件)。
  4. 阅读只读预演(会话条数、注册表变化、备份位置、搬不动的条目及原因),确认后执行;若提示需重启 DSH,按页面说明操作。

场景二:换机器或备份

  1. 在 传输 分页勾选要带走的会话(可按目录组头整组勾选),导出得到 .dshsess 文件。
  2. 在另一台已安装本插件的 DSH 上 导入 该包,按预演确认落地目录。

场景三:多机同步

  1. 在 同步 分页配置 WebDAV(具体字段以插件界面与文档为准)。
  2. 执行同步:远端存 .dshsess;拉取时按映射改写 cwd 为本机路径后再导入。

写盘类按钮(删除、迁移、导入、同步、回滚)均为一次操作一个确认弹窗;执行中除导出外会显示进度,中途取消可能在库里留下不完整状态,资料建议不要在落地阶段取消。

适用场景与注意

适合谁:长期在 DSH 里积累大量会话、需要整理归档、迁移项目路径、在多台开发机之间对齐会话,或希望用 WebDAV 做会话包同步的开发者。

权限与安全:插件以当前 DSH 进程的权限读写会话库、附件目录与备份目录,并可按你的确认执行删除与迁移。安装前建议查看 GitHub 仓库 源码与许可证(README 列出 LICENSE 文件),仅从可信来源安装 npm 包。

行为约束(避免误操作):

  • 手工只挪文件夹而不改日志 cwd,宿主行为不可预期;应使用本插件的迁移或导入流程。
  • 正在「活动中」的会话需重启 DSH 后再删或迁。
  • 子智能体、分叉会话、归档/空白会话等规则见 README「会话」「迁移」各节;迁移默认只处理侧边栏可见会话,勾中但搬不走的会在预演里单独说明。

社区插件目录 SkillHub 与 DeepSeek / 幻方无官方从属关系;DSH 生态原则是「一切皆插件」,本包是其中的会话库治理工具之一。

结尾

dsh-session-manager 把 DSH 会话库里最难手工处理的三件事——cwd 与目录一致、会话目录物理搬迁、工作区注册表更新——做成可预演、可回滚的流程,并用 .dshsess 与 WebDAV 补上导出导入与多机同步。若你正被「未分组」会话或 corrupt 日志困扰,可以从安装 npm 包、打开设置里的「会话管理」页开始。

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

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

Xiaoye