Перейти к основному содержимому
J

dsh-conversation-tree

jiangyuxue666/dsh-conversation-tree

Workspace-wide conversation tree for DeepSeek Harness: every conversation and branch on one canvas with its source turn, own token usage and notes; compare two branches, bring a summary back, export a Markdown outline, archive (undoable through DSH's native archive), and delete a whole subtree (macOS and Windows only; deletion runs immediately and is permanent).

Установка

dsh plugin --profile web add github:jiangyuxue666/dsh-conversation-tree

README

dsh-conversation-tree

English | 中文

CI License: MIT

A workspace-wide conversation-tree view for DeepSeek Harness.

DeepSeek Harness 的 Web 插件。将工作区内的对话及其派生分支绘制在同一块画布上,用于查看分支血缘与单个会话的用量,并完成分叉、带回、归档与删除。分支即普通 DSH 会话,模型、工具与斜杠命令均可正常使用。

功能

  • 工作区画布:每条对话呈现为一棵树,全部排列在同一块可平移、缩放的画布上;当前对话固定排在首位并高亮显示。
  • 分叉:在任意已完成轮次的底部执行「对话树分支」,新会话继承该轮之前的上下文,同时记录来源对话、轮次与分支点摘要。
  • 节点详情:显示来源、分支轮次、层级、当前会话的轮次与步数、token 明细、缓存命中率与模型。
  • 备注:给任意对话或分支起名字,显示在节点上(根对话显示在根节点),搜索可命中;备注存在插件注册表里,不写会话日志。新建分支会自动把分叉那一句截成 18 字当默认备注。
  • 对比:选中一个节点后点侧栏「对比」再选另一个,或直接 Shift + 点击,并排查看轮次、步数、工具调用、用量、模型、各自开头问的几条与最后一条结论。
  • 带回:在后台读取来源会话的当前上下文(包括继承上下文和已有压缩摘要),发送给来源当前所选模型及其服务商生成摘要;预览、编辑并确认后,才以排队消息发送至目标会话。上下文可能包含敏感数据。
  • 树上直接分叉:侧栏「从这里再分一支」对当前对话再分一条,不用回到聊天页滚到底。
  • 这棵树走到哪了:一键让模型读完这棵树的分支,给出一段话:每条的结论、卡在哪、哪条值得留。只在点的时候发生,不自动跑。
  • 未读点:某条分支在你上次看过之后有新活动,节点右上角亮一个小点。
  • 导出:把整棵树的层级、标题与备注导出成 Markdown 提纲。
  • 归档与删除:位于侧栏;删除范围仅限本插件创建的分支,确认后立即执行。
  • 搜索与键盘操作:跨树匹配标题与分支点片段并居中显示;支持方向键、Enter、Home/End、+/-、f。

安装

要求 DSH >=0.2.2-rc.1 <0.3.0。

dsh plugin --profile web add github:jiangyuxue666/dsh-conversation-tree

也可以通过 DSH 的「设置 → 插件 → 添加插件」填写仓库地址:

https://github.com/jiangyuxue666/dsh-conversation-tree

安装会将该插件写入 profile 的 dsh.profile.bundles,重启 DSH 后生效。

从压缩包安装

npm pack
dsh plugin --profile web add ./jiangyuxue666-dsh-conversation-tree-0.7.1.tgz

本地开发

dsh plugin --profile web add /path/to/dsh-conversation-tree

以链接方式挂载源码目录;修改后重启 DSH 即可生效,无需重新安装。

宿主包 @deepseek-ai/dsh-session 和 @deepseek-ai/dsh-llm 以 peerDependency 声明,由 DSH 提供;本地运行测试前需执行 npm install。

使用

  1. 打开目标对话,定位到需要分叉的轮次。
  2. 点击消息底部的「对话树分支」。
  3. 点击顶部的「对话树」标签,查看整个工作区的树。
  4. 单击节点查看详情,双击打开会话。
  5. 拖拽空白处平移,滚轮缩放;右下角按钮适应画布(小树会放大到最多 150%)。工作区有多棵树时,每棵树标题行的箭头可收起单棵树;只有一棵树时不显示标题行。还没有分支的对话默认收在画布底部,点一下即可展开。
  6. 在来源节点的侧栏点击「带回」,选择目标对话并生成摘要;检查或编辑预览后,点击「发送」才将摘要排队送入目标对话。
  7. 在侧栏底部归档或删除子树。

注意事项

  • 「带回」的摘要生成不会创建可见或持久化会话,也不会向来源对话追加消息;确认发送后只向目标对话排队发送摘要。生成时当前上下文会发往来源当前所选模型及其服务商,可能包含敏感数据,请先确认适合发送;即使这条对话中途切换过模型或服务商,也直接使用当前选择,不会再次要求确认。摘要的密钥脱敏只覆盖部分常见格式,发送前仍应检查。
  • 来源上下文超过模型限制时会报错,不会为生成摘要而截断输入。已有压缩摘要会被纳入,但之前压缩掉的原始内容无法恢复;模型和服务商支持情况不同,不能保证所有厂商均可使用。
  • 树仅管理通过「对话树分支」创建的会话;DSH 原生分支按钮创建的会话不在此视图中。
  • 分支同时出现在普通会话列表,树为额外的管理视图。
  • 在侧边栏或其它插件里删除会话后,对话树会在下一次读取时自动校正:被删节点的子分支提升到上一级并标注「原来源对话已删除」;若整条祖先链都已删除,分支会成为独立的树根,而不是留下一个打不开的节点。
  • 工作区视图的会话范围由 Host 依据工作区注册表解析;单次超过 2000 个会话时仅显示前 2000 个并给出提示。
  • 工作区很大时,用量统计只覆盖当前对话附近的若干棵树(单个响应最多解析 120 条冷会话日志),页面会说明其余对话未统计。
  • 删除仅支持 macOS 与 Windows 上已验证的 JSONL 会话后端;其他平台仍可创建、查看与带回。
  • 根对话不可删除;分支归档使用 DSH 原生归档,可撤销。
  • 树关系存放在 $DSH_HOME/conversation-tree.json,每个分支的会话日志中另有一条边记录;注册表丢失时可由日志恢复祖先链。
  • 写操作路由校验同源(Origin 与 Host 一致)。

开发

npm install
npm test

代码结构:

  • index.js — 入口:路由常量、inject、apply 与测试导出
  • lib/base.js — 同源校验、JSON 读取、失败响应等公共件
  • lib/registry.js — 分支边注册表与跨进程锁
  • lib/liveness.js — 会话存活集采样(侧边栏删除后的自愈依据)
  • lib/reconcile.js — 幽灵边修复:删除被删节点、子分支提升或独立成根
  • lib/tree.js — /tree 与 /forest 的读取与投影
  • lib/session.js — 会话日志访问、pending 推进、祖先链恢复
  • lib/branch.js — 创建分支
  • lib/summarize.js — 带回摘要及模型调用
  • lib/summary-context.js — 只读提取来源会话的当前模型上下文
  • lib/tree-summary.js — 整棵树的一段话总结
  • lib/delete.js — 删除子树(含平台分支)
  • lib/stats.js — token / 轮次统计与持久化缓存
  • lib/models.js — 模型路由与预设
  • lib/transcript.js — 事件转文字
  • lib/handles.js — 活动 agent 句柄表
  • client.js — Web 客户端。DSH 的客户端模块系统每个 bundle 只注册一个 factory,因此保持单文件

Host 路由:

  • POST /api/conversation-tree/branch
  • GET /api/conversation-tree/tree?sessionId=...
  • POST /api/conversation-tree/forest
  • POST /api/conversation-tree/summarize
  • POST /api/conversation-tree/delete
  • POST /api/conversation-tree/note
  • POST /api/conversation-tree/compare
  • POST /api/conversation-tree/peek
  • POST /api/conversation-tree/tree-summary

兼容性

  • DSH >=0.2.2-rc.1 <0.3.0
  • 删除:macOS / Windows

版本

变更记录见 CHANGELOG.md。

许可

MIT

Похожие плагины