
ZhengQingJing/dsh-session-tree
30最近提交 2026年8月14日
dsh-session-tree DSH 插件
dsh-session-tree 是一个社区开发的 DSH 插件,在对话视图中将会话分支历史呈现为版本树。用户可以从已加载且已完成的轮次创建新的子会话,以非破坏性方式探索替代对话路径。
如何安装 dsh-session-tree DSH 插件
dsh plugin --profile web add dsh-session-tree@next复制不会执行命令。安装 dsh-session-tree DSH 插件前请核对仓库和版本。
dsh-session-tree DSH 插件数据来源
dsh-session-tree DSH 插件快照日期:2026年8月16日
discovered
dsh-session-tree DSH 插件能做什么
- 在新的“版本树 / Branches”标签页中,将会话分支历史可视化为确定性版本树。
- 区分普通分支与子代理谱系,便于识别。
- 仅列出已加载历史窗口中的已完成轮次,并支持加载更早的历史轮次。
- 通过 DSH 原生 `ctx.sessions.fork({ sessionId, atSeq })` 创建子会话,并打开新对话。
- 限制大型版本树和长对话的初始 DOM 工作量。
- 在分支请求进行中禁用所有分支按钮,防止重复操作。
dsh-session-tree DSH 插件适合哪些场景
- 从特定已完成轮次尝试替代回复,而不影响原始会话。
- 在复杂对话树中导航,查看不同分支及其结果。
- 从之前的成功轮次创建分支,避免重放整个对话。
- 与团队成员共享会话 ID,基于共同基础探索不同分支。
dsh-session-tree DSH 插件适合谁
- 需要管理和探索多个对话变体的 DSH 用户。
- 使用 DSH 进行迭代实验和调试的开发者与研究人员。
- 希望像版本控制一样对对话进行非破坏性分支操作的高级用户。
dsh-session-tree DSH 插件的限制
- 上游分支 RPC 缺乏操作 ID、持久化源见证或幂等重试契约;跨多个页面/进程仍可能产生重复子会话。
- 会话摘要包含父 ID 但不包含 `seedLength` 或解析后的分支边界,因此版本树无法低成本地在子边上标注精确源序列。
- 不支持命名引用、HEAD、reflog、合并、变基、拣选、分支删除、共享前缀存储或自动垃圾回收。
- 每个原生子会话都会实体化继承的事件前缀;长寿命分支会放大存储用量。
- 工作区快照和外部副作用回滚明确不在当前范围内。
dsh-session-tree DSH 插件的仓库 README 摘录
以下文字摘自 dsh-session-tree DSH 插件的上游仓库 ZhengQingJing/dsh-session-tree 的 README,版权归原作者,仅作引用。
`dsh-session-tree` 是一个可安装的 DeepSeek Harness(DSH)浏览器端插件。它将 DSH 原生 Session fork 呈现为不可变的对话版本树,并允许用户从任意**已加载且已完成的对话轮次**创建子分支。 > [!IMPORTANT] > **非官方社区插件。** 本项目由社区独立开发,不隶属于 DeepSeek,也未经 DeepSeek 背书或维护。DSH 与本插件均处于预发布阶段;升级前请审阅变更,并备份重要的 DSH profile 与 Session 数据。 源码仓库:[github.com/ZhengQingJing/dsh-session-tree](https://github.com/ZhengQingJing/dsh-session-tree) 当前版本支持: - DeepSeek Harness 源码版 `0.1.0-rc.5`(审计基线 `47f9438`)。 - DSH Client 公开 API `0.1.0-rc.5` 和 `0.1.0-rc.6`。 - Node.js `^22.19.0 || >=24.0.0`。 DSH 尚处于开发者预览阶段。为避免在未来 API 变更上作出不安全的假设,本插件的 peer dependency 仅允许上述两个已验证的预发布版本。 ## 功能 - 在对话页面中新增 **版本树 / Branches** 标签页。 - 将 `SessionSummary.parentId` 投影为确定性的当前对话家族树。 - 区分普通 fork 与 subagent 谱系。 - 显示但隔离孤儿节点和循环谱系,不修改持久化记录。 - 列出当前已加载历史窗口中的已完成轮次。 - 调用 DSH 原生 `ctx.sessions.fork({ sessionId, atSeq })` 创建子 Session,然后打开新对话。 - 按需加载更早的历史轮次。 - 限制大型版本树和长对话的初始 DOM 工作量。 插件不定义自有 `SessionEvent` 类型,也不维护独立的分支数据库。卸载插件后,已创建的分支仍是普通、可读的 DSH Session。 ## 安全契约 - 回溯始终创建新的子 Session;绝不截断或重写父 Session。 - 只提供已完成的 `turn/end` 检查点。 - 当 fork 请求进行中时,当前视图中的其他 fork 按钮全部禁用。 - 不自动重试不确定或部分成功的请求。界面会要求用户先检查版本树,以避免生成重复子分支。 - 禁用 `increaseTitle`,避免子 Session 已发布后又因标题修改失败而产生额外的部分成功状态。 - 谱系异常在 UI 中 fail-soft,不会被静默修复。 - 对话分支**不会**撤销文件
阅读完整 README仓库许可: MIT
dsh-session-tree DSH 插件常见问题
如何安装 dsh-session-tree?
可以通过 DSH 的插件命令安装。推荐使用 `dsh plugin --profile web add dsh-session-tree@next` 从 npm 安装最新的预发布版本。也可以从 GitHub Release 的 tarball 安装,或克隆仓库后本地构建。详细步骤请参阅 README。
这个插件会修改我的原始会话吗?
不会。它只读取会话数据,并通过 DSH 原生的分支 API 创建新的子会话。原始会话保持不变。即使卸载插件,已创建的子会话仍然是可访问的普通 DSH 会话。
我能删除已创建的分支吗?
插件目前不支持删除分支,只允许创建新分支。如果需要删除子会话,需要通过 DSH 原生的会话管理功能(如果提供)或直接修改会话存储来手动删除。
在最新版 DSH 上使用安全吗?
插件明确支持 DSH 源码版 0.1.0-rc.5 和 DSH Client API 0.1.0-rc.5/0.1.0-rc.6,并通过 peer dependency 限制避免不兼容的 API 变更。如果你升级 DSH 超过这些版本,应检查插件更新并确认兼容性。
如果对一个正在生成的轮次创建分支会怎样?
插件只允许从已完成轮次(以 `turn/end` 结束)创建分支。正在生成的助手块不会被提供为检查点。你必须等待该轮次完成之后才能从中创建分支。