Skip to content

About

为 DeepSeek Harness(DSH)提供树状会话,支持消息分支切换、原位编辑、回答重试与消息撤回。

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

树状会话

@dsh-plugin/dsh-session-tree 为 DSH 官方聊天增加消息分支,并保存当前激活路径的标准会话日志。宿主端使用 TypeScript,客户端使用 TSX。

  • 用户消息支持原位编辑。取消保留原消息;发送建立同级分支并立即生成回复。
  • 助手消息支持重试,新回复与原回复拥有相同父节点。
  • 同级消息有多个版本时显示 ‹ 2 / 2 ›。用户版本控件位于消息下方右侧,与复制、编辑、撤回同排;回答版本控件位于助手底部操作行左侧。切换时恢复该分支此前选择的后代。
  • 已送入模型的用户消息软撤回到父节点,保留原节点及后代;下一条消息建立同级分支。
  • 待发送消息硬撤回会移除队列或拦截尚未派发的请求,并恢复文本和附件到输入框。
  • 当前轮次运行期间禁用分支修改、编辑和重试。等待轮次完成,或手动停止并完成收尾后再操作。待发消息可硬撤回。

安装与运行

本插件需要 @dsh-plugin/dsh-loader@^2.0.0-dev.43473963317,其中包含会话扩展和分支轮次标题接口。开发依赖固定为 2.0.0-dev.43473963317,使用 Node.js 24 与 pnpm 11.17.0。构建使用 pnpm install --frozen-lockfile、pnpm run typecheck、pnpm run build,算法测试使用 pnpm test。

当前兼容 DSH 0.2.2-rc.1 和 0.2.2-rc.2,已在独立测试实例验证。安装后需要重启目标宿主,使 loader 从会话创建时捕获生命周期;缺少句柄的旧活动会话会明确拒绝改写。

数据

默认树数据目录为 ${DSH_HOME}/data/dsh-session-tree/sessions/,未设置 DSH_HOME 时使用 ~/.dsh。文件名使用会话 ID 的 SHA-256,避免会话身份被解释为路径。

  • .json 保存完整树、激活游标、同步摘要和幂等操作记录。
  • .original.json 保存首次接管的官方日志快照。
  • .transaction.json 保存历史替换事务及其阶段。

官方 sessions 继续保存当前激活路径,使用官方格式编解码器并保留原压缩格式。插件通过 Agent 生命周期和官方写锁协调历史替换,然后重建同一会话的上下文。其他分支仅保存在插件独立目录。

备份时同时备份树目录、官方 sessions 和附件目录。不要在宿主运行时手工修改这些文件。无法唯一判定中断事务所属版本时,插件拒绝继续改写并报告冲突。

交互细节

原位编辑保留原附件,也支持添加和移除附件。发送失败保留编辑内容。硬撤回恢复会合并已有普通文本草稿和附件;输入框包含引用或命令时保留待恢复草稿,先处理当前输入后再恢复。

分支切换改变模型上下文,不撤销历史工具调用已产生的文件修改或外部操作。重试截断的旧轮次如果仍含处理内容,会显示为“分支前的处理记录”,保留展开查看入口;空的截断轮次不显示完成提示。停用插件后官方系统仍可读取最后导出的激活路径,其他分支需要重新启用插件访问。

CI 与 npm 发布

工作流 .github/workflows/npm-publish.yml 参考 dsh-auxiliary,在 Linux、Windows、macOS 上执行锁定依赖安装、类型检查、构建、算法测试与包内容检查。PR 和手动运行只执行检查。

  • 推送 main:将稳定基础版本 X.Y.Z 转为 X.Y.Z-dev.<GitHub run ID>,发布到 next。
  • 推送 vX.Y.Z 标签:要求标签与 package.json 版本完全一致,发布到 latest。
  • 已存在的版本跳过重复发布;注册表查询出现非 404 错误时立即失败。
  • 正式版发布成功后,scripts/dump-npm-latest.mjs 读取 npm 的精确版本、发布时间、tarball 和 integrity,回写 npm-latest.json 并提交到 main;数据未变化时不提交。

首次发布前,在 npm 为此仓库的 npm-publish.yml 配置 Trusted Publisher,或在 GitHub 配置有目标包发布权限的 NPM_TOKEN。发布任务授予 id-token: write;元数据回写任务使用 GITHUB_TOKEN 的 contents: write,仓库分支保护需允许该机器人提交。未配置 npm 认证或分支保护拒绝回写时,对应任务会报错。

配置字段见 配置说明,测试范围和复现方式见 验证记录。

About

为 DeepSeek Harness(DSH)提供树状会话,支持消息分支切换、原位编辑、回答重试与消息撤回。

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages