- Início
- Plugins
- Sessões e mensagens
- dsh-conversation-tree
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).
Instalar
dsh plugin --profile web add github:jiangyuxue666/dsh-conversation-treeREADME
dsh-conversation-tree
English | 中文
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。
使用
- 打开目标对话,定位到需要分叉的轮次。
- 点击消息底部的「对话树分支」。
- 点击顶部的「对话树」标签,查看整个工作区的树。
- 单击节点查看详情,双击打开会话。
- 拖拽空白处平移,滚轮缩放;右下角按钮适应画布(小树会放大到最多 150%)。工作区有多棵树时,每棵树标题行的箭头可收起单棵树;只有一棵树时不显示标题行。还没有分支的对话默认收在画布底部,点一下即可展开。
- 在来源节点的侧栏点击「带回」,选择目标对话并生成摘要;检查或编辑预览后,点击「发送」才将摘要排队送入目标对话。
- 在侧栏底部归档或删除子树。
注意事项
- 「带回」的摘要生成不会创建可见或持久化会话,也不会向来源对话追加消息;确认发送后只向目标对话排队发送摘要。生成时当前上下文会发往来源当前所选模型及其服务商,可能包含敏感数据,请先确认适合发送;即使这条对话中途切换过模型或服务商,也直接使用当前选择,不会再次要求确认。摘要的密钥脱敏只覆盖部分常见格式,发送前仍应检查。
- 来源上下文超过模型限制时会报错,不会为生成摘要而截断输入。已有压缩摘要会被纳入,但之前压缩掉的原始内容无法恢复;模型和服务商支持情况不同,不能保证所有厂商均可使用。
- 树仅管理通过「对话树分支」创建的会话;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/branchGET /api/conversation-tree/tree?sessionId=...POST /api/conversation-tree/forestPOST /api/conversation-tree/summarizePOST /api/conversation-tree/deletePOST /api/conversation-tree/notePOST /api/conversation-tree/comparePOST /api/conversation-tree/peekPOST /api/conversation-tree/tree-summary
兼容性
- DSH
>=0.2.2-rc.1 <0.3.0 - 删除:macOS / Windows
版本
变更记录见 CHANGELOG.md。
许可
MIT
Plugins relacionados
dsh-web-ui (dsh-chat-recovery)
zhu1090093659/dsh-web-ui
billion-context
ranxianglei/billion-context
dsh-synapse
liangmianya/dsh-synapse
dsh-archive-manager
michengai/dsh-archive-manager