🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

会话分支树 ANHANP/dsh-branch-tree

DeepSeek Harness
ANHANP14 天前有提交已提供中文文档扫描:含敏感能力

把会话分支画成可跳转的树,随时回到任意轮次追问

30.7/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/22 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add ANHANP/dsh-branch-tree
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么[目录]—
dsh 原生插件 · other
暂无时间戳·判据 →
装得上吗[实装验证]✓
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
数据截至 2026/10/22·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/03·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 14 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件发起外部网络请求
查看扫描证据(共 9 处,展示前 9 条)
  • 读取本地文件
    index.js:237
    const raw = await readFile(TITLE_CACHE_FILE, 'utf8')
  • 写入本地文件
    index.js:259
    await mkdir(dirname(TITLE_CACHE_FILE), { recursive: true })
  • 写入本地文件
    index.js:261
    await writeFile(temporary, JSON.stringify(Object.fromEntries(entries), null, 2), 'utf8')
  • 写入本地文件
    index.js:262
    await rename(temporary, TITLE_CACHE_FILE)
  • 写入本地文件
    index.js:734
    await mkdir(dirname(DEBUG_FILE), { recursive: true })
  • 写入本地文件
    index.js:737
    await appendFile(DEBUG_FILE, `${record}\n`, 'utf8')
  • 读取本地文件
    index.js:760
    const body = await readFile(new URL(file, ASSET_ROOT))
  • 发起网络请求
    client.js:194
    fetch('/branch-tree/api/debug', {
  • 发起网络请求
    ui/app.js:1592
    const response = await fetch(`/branch-tree/api/tree?sessionId=${encodeURIComponent(state.sessionId)}`, {
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DeepSeek Harness 插件:会话分支树,带轮次卡片、分叉、子代理森林和小地图。

README

由 DeepSeek 最新模型翻译生成
dsh-branch-tree 把 DeepSeek Harness 的会话分支历史变成一棵树,可以左右看、可以跳回去、可以继续追问。 一个 DeepSeek Harness 会话分支树:每轮对话是一张卡片,分支从它分叉的那一轮长出来,右侧有一个常驻抽屉,还有子代理森林和缩略图。 DSH 的非官方社区插件。当前为早期版本(0.1.x),在 DSH Desktop Beta(app 2.0.17-beta.2 / runtime 0.2.1-alpha.2,macOS)上测试。 它长什么样 屏幕右侧边缘有一个 ⑂ 把手,点开是一个独立的常驻抽屉——切换会话、切换分支时抽屉不会消失,视角、缩放、展开状态都保留: - 每个框 = 一轮对话:最后一条用户消息 + 该轮最终助手回复;工具调用不占地方。 - 分支从它分叉的那一轮长出来:fork 子会话的继承前缀映射回父会话的那一轮,而不是接在兄弟分支的末端。 - 点击任意轮次卡(包括卡内的「你 / AI」两行)→ 主对话切到该会话,并按该轮用户消息的事件 seq 精确定位,跨分支不会串到同号轮次;到位后描边高亮。 - 从任意已完成轮次开新分支:悬停卡片,左侧出现小 +,弹出「新的追问」输入卡(快捷词点一下就直接发送,+ 可自定义快捷词)。发送后自动 fork、发送这条追问、切到新分支。
展开完整文档(README 剩余 1 节)
dsh-branch-tree

把 DeepSeek Harness 的会话分支历史变成一棵树,可以左右看、可以跳回去、可以继续追问。

一个 DeepSeek Harness 会话分支树:每轮对话是一张卡片,分支从它分叉的那一轮长出来,右侧有一个常驻抽屉,还有子代理森林和缩略图。

DSH 的非官方社区插件。当前为早期版本(0.1.x),在 DSH Desktop Beta(app 2.0.17-beta.2 / runtime 0.2.1-alpha.2,macOS)上测试。

它长什么样

屏幕右侧边缘有一个 ⑂ 把手,点开是一个独立的常驻抽屉——切换会话、切换分支时抽屉不会消失,视角、缩放、展开状态都保留:

- 每个框 = 一轮对话:最后一条用户消息 + 该轮最终助手回复;工具调用不占地方。
- 分支从它分叉的那一轮长出来:fork 子会话的继承前缀映射回父会话的那一轮,而不是接在兄弟分支的末端。
- 点击任意轮次卡(包括卡内的「你 / AI」两行)→ 主对话切到该会话,并按该轮用户消息的事件 seq 精确定位,跨分支不会串到同号轮次;到位后描边高亮。
- 从任意已完成轮次开新分支:悬停卡片,左侧出现小 +,弹出「新的追问」输入卡(快捷词点一下就直接发送,+ 可自定义快捷词)。发送后自动 fork、发送这条追问、切到新分支。
- 子代理森林:按创建时间落到对应轮次;卡片底部「代理 ×N」展开后从右缘长出去,受影响的对话节点整体右移让位。
- 缩略图:右上角显示整棵树的剪影和当前视野框,点击/拖动即可导航。
- 自由平移:没有滚动边界,拖动和双指滚动可以把树推到任何位置;缩放围绕指针。
- 跨会话保持:抽屉只挂载一次,切会话只更新数据;相机存 localStorage。
- 点外部收起:点主对话、顶栏或空白处收起;点左侧工作区/会话栏(以及它的下拉菜单)不会收起。Esc 同样收起。
- 深/浅色跟随 DSH。

安装

当前通过 GitHub Release 的预构建 tarball 分发(npm 包稍后;发布后这里会补上 npm 命令):

dsh plugin --profile web add https://github.com/ANHANP/dsh-branch-tree/releases/latest/download/dsh-branch-tree.tgz

命令会自动把依赖和 dsh.profile.bundles 一起写好(已实测),装完重启 DSH。

- DSH Desktop:桌面端 profile 由应用自己管理,等本插件被 dsh-market 收录后可直接在插件市场一键安装;也可以把上面的 tarball 地址交给市场/插件管理器的安装入口。
- 本地开发:dsh plugin --profile <profile> add /path/to/dsh-branch-tree,装完若 dsh.profile.bundles 未自动追加,手工加入 "dsh-branch-tree"。

使用

| 操作 | 效果 |
| 点右缘 ⑂ | 展开/收起抽屉 |
| 点轮次卡 / 卡内文本 | 跳到该轮 |
| 悬停卡 → 左侧 + | 开新分支输入卡;快捷词直接发送,⌘/Ctrl+Enter 发送,Esc 取消 |
| 双击分支名药丸 | 重命名分支(本地保存,之后自动名不再覆盖) |
| 点缩略图 / 拖动 | 跳转视野 |
| 拖动画布 / 双指滚动 | 平移;捏合(或 ⌘+滚轮)缩放 |
| → 提手 | 折叠按钮:展开时只显示小三角,收起时显示下方对话数 |
| 工具栏 ⇆ | 开关「轮次导航条镜像到左侧」(默认开) |

数据与隐私

宿主半只暴露两个只读路由(Host 头围栏,仅回环):

- GET /branch-tree/api/tree?sessionId=<id> — 分支家族树、每轮投影、子代理森林。
- GET /branch-tree/ui/* — 抽屉的 iframe UI(每次请求读盘,所以改 UI 不需要重启)。

数据来自本机 DSH 的会话库(sessionQuery,能读到未打开的冷会话;缺失时退化为 live store)和 subagents 服务。轮次标题由 DSH 同一条模型路由(通常 deepseek-flash)生成并缓存到 ~/.dsh-beta/branch-tree/round-titles.json;模型不可用时用本地截断占位。插件不上传数据,不发网络请求(除标题走 DSH 自己的模型路由)。

兼容性与已知限制

这是一个早期版本,依赖 DSH 的一些内部结构,DSH 升级后可能需要跟着修:

- 会话跳转依赖 chat 节点的 anchorSeq / data-chat-anchor-key、loadThrough(seq)。
- 轮次导航条镜像(对话列左侧的竖排小横杠)是样式覆盖,依赖 DSH 打包后的哈希类名;DSH 升级可能失效(UI 其余部分不受影响)。
- 「推挤式展开」是实验性的:尝试让主对话为抽屉让位,部分布局版本上可能看不到效果。
- 子代理卡片只读,按节点聚合;从某一轮开新分支要求该轮已完成;侧边对话(side chat)不在树里。
- 只在 macOS 的 DSH Desktop Beta 上验证过;窄窗口、其他客户端未验证。

开发

node --check index.js && node --check client.js && node --check ui/app.js
node --test test/extract.test.mjs test/titles.test.mjs

调试(可选,默认关闭):

- 宿主:DSH_BRANCH_TREE_DEBUG=1 才会注册诊断路由 /branch-tree/api/debug,写入 ~/.dsh-beta/branch-tree/debug.jsonl。
- 客户端:localStorage['dsh-branch-tree:debug']='1' 才会上报推挤诊断。

文件结构:index.js 宿主半(路由 + 数据投影 + 标题生成)、client.js 浏览器半(抽屉 + 会话同步 + 跳转)、ui/ iframe UI、lib/extract.js 纯函数、test/ 单元测试。

致谢

- 「新的追问」输入卡的交互与视觉灵感来自 dsh-synapse(会话地图插件,MIT)里的追问卡片。本项目独立实现,未复制其源码。
- 会话切换、按事件 seq 定位与「抽屉浮层 + 不打断主对话」的实现思路同样参考了 dsh-synapse。
- 感谢 DeepSeek Harness 与社区插件生态。

本项目是非官方社区插件,与 DeepSeek / DeepSeek Harness 官方无隶属或背书关系。

License

MIT
预览分享卡片长什么样 ↓ANHANP/dsh-branch-tree
分享 · DeepSeek Harness Hub
ANHANP/dsh-branch-tree

把会话分支画成可跳转的树,随时回到任意轮次追问

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部