DeepSeek Harness 插件:dsh-session-reattach

前言

DeepSeek Harness (DSH) 的设计理念是「一切皆插件」。在使用过程中,经常会遇到会话被移动过、或者在工作区目录尚未创建时就已建立会话的情况。此时,这些会话会被标记为「未分组」,且在 WorkspaceRegistry 初始化后不再被自动重新收养,从而永久停留在未分组列表中。

dsh-session-reattach 旨在填补这个空白。它不改变会话文件本身,仅通过校验会话的当前工作目录(cwd),将其归属记录重新写入正确的工作区。

插件定位

这是一款 DSH 宿主插件,用于解决历史会话的「归位」问题。它将游离的会话按 cwd 归位到匹配的工作区分组中。

核心功能

  • 只改归属记录:插件仅修改 workspace.json 中的归属记录,不触碰 session.l.zstd 等会话文件本身。
  • 默认 dry-run:为了安全,默认只进行校验和报告,不执行写入,直到显式开启写入模式。
  • 支持多种入口:既支持侧边栏的拖拽操作,也支持命令行输入。
  • 零运行时依赖:不依赖任何 DSH 内部包或第三方库。

安装与启用

该插件仅支持 web profile。

  1. 执行安装命令:
    dsh plugin --profile web add dsh-session-reattach
  1. 安装完成后,必须重启 dsh web。宿主插件在启动时装配,安装后不重启不会生效。

使用方式

命令行

插件提供三个命令入口,默认处于 dry-run 状态:

  • /reattach:仅报告将归位哪些会话、哪些会话无法归位及原因,不写入。
  • /reattach apply:执行归位写入操作。
  • /reattach apply subagents:在执行归位的同时,也处理子代理会话(默认跳过子代理)。

拖拽操作

在侧边栏展开「未分组」,按住某个会话行开始拖动。只有 cwd 与工作区目录完全一致的分组会显示虚线框,其余分组显示禁止光标,拖拽进去松手即可归位。

归位判定规则

插件使用 fs.realpath 将会话的 cwd 与工作区路径归一化后进行比较。只有路径完全一致才会进行归属。归位前会先从其他工作区清除该会话的旧槽位,避免双归属错误。

注意事项

  • 默认安全策略:所有归位操作默认不写入,必须显式传入 false 或使用 apply 参数。
  • Web Profile 限制:仅支持 web profile,安装后必须重启 dsh web。
  • 路径一致性:归位的前提是 cwd 存在且有效。如果目录被删除、重命名或不可访问,会话将被跳过。
  • 子代理处理:默认跳过子代理会话,除非显式指定 apply subagents。
  • 文件安全:插件不修改会话文件本身,只修改归属记录,不会造成数据丢失或内容篡改。

总结

dsh-session-reattach 是一个轻量级的修复工具,专门处理 DSH 中因历史原因导致的会话归属错位。通过拖拽或命令行,可以快速将游离会话归位到正确的工作区,保持侧边栏结构的整洁。

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

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

小夜