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

会话分叉树 ayuanxx-max/dsh-session-fork-tree

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

把分叉会话挂到父会话下并折叠展开

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

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

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

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · browser
装得上吗
本站已在 dsh 0.2.1-rc.5 下真实安装成功
非静态推断
L5 · 运行时冒烟等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 5 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

读写/删除本地文件发起外部网络请求
查看扫描证据(共 5 处,展示前 5 条)
  • 写入本地文件
    index.js:325
    await writeFile(REPORT_PATH, JSON.stringify({ receivedAt: new Date().toISOString(), report: parsed }, null, 2), 'utf8');
  • 读取本地文件
    index.js:342
    const css = await readFile(new URL('./style.css', import.meta.url), 'utf8');
  • 发起网络请求
    client.js:92
    const res = await fetch(apiUrl('/fork-tree/style.css'), { credentials: 'same-origin' });
  • 发起网络请求
    client.js:105
    const res = await fetch(apiUrl('/fork-tree/lineage.json'), { credentials: 'same-origin' });
  • 发起网络请求
    client.js:960
    fetch(apiUrl('/fork-tree/report'), {
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DSH 会话分叉树排列:分叉出的会话挂在父会话下方,带圆角连接线、绿色 + 展开按钮和祖先链高亮。

README

由 DeepSeek 最新模型翻译生成
DSH 会话分叉树排列功能 · DSH Session Fork Tree Arrangement 【DSH 会话分叉树排列功能】把 DSH 侧栏里「另起一行」的分叉会话,变成挂在父会话下面的树:缩进 + 圆角连接线 + 绿色 + 折叠按钮 + 悬停祖先链高亮。 DSH Session Fork Tree Arrangement 把原本在侧栏里各占一行、互不相干的分叉会话,变成挂在父会话下面的树:缩进、圆角连接线、绿色 + 展开按钮,鼠标悬停时高亮祖先链。 中文 · English 它解决什么问题 DSH 里「分叉」会新建一个会话,但它和父会话在侧栏里是两条互不相干的平行行,而且按最近活动排序,新分叉总是跳到最前面。会话一多,就分不清谁是谁的分支。
展开完整文档(README 剩余 1 节)
DSH 会话分叉树排列功能 · DSH Session Fork Tree Arrangement

【DSH 会话分叉树排列功能】把 DSH 侧栏里「另起一行」的分叉会话,变成挂在父会话下面的树:缩进 + 圆角连接线 + 绿色 + 折叠按钮 + 悬停祖先链高亮。

DSH Session Fork Tree Arrangement 把原本在侧栏里各占一行、互不相干的分叉会话,变成挂在父会话下面的树:缩进、圆角连接线、绿色 + 展开按钮,鼠标悬停时高亮祖先链。

中文 · English

它解决什么问题

DSH 里「分叉」会新建一个会话,但它和父会话在侧栏里是两条互不相干的平行行,而且按最近活动排序,新分叉总是跳到最前面。会话一多,就分不清谁是谁的分支。

本插件把父子关系重新可视化:

1. 归属:子会话紧跟父会话,可配置把顺序写回 workspace.sessionIds(持久化);
2. 缩进 + 连接线:子行缩进 16px,从父标题左缘起画 ╰(竖线到行高一半后转横线,圆角 8px,绝对像素,窗口变化自动重算);
3. 折叠:有分叉的会话,名字右侧会出现醒目的绿色 +;默认全部收起,点 + 展开、再点收起,逐层递归;展开时 + 显示绿色边框;
4. 悬停高亮:鼠标划过子行,整条祖先链变亮;
5. 自动命名:分叉的标题如果还是系统默认(父名 (1)),会被改成 父名 · 分叉N(N 为同父分叉的创建顺序);你手动改过的标题不会被覆盖。

安装

前置:DSH 桌面版或 dsh web,一个可用的 profile(默认 desktop)。

1. 取代码
git clone https://github.com/ayuanxx-max/dsh-session-fork-tree.git
$repo = "<克隆目录的绝对路径>"

2. 作为本地包登记到 profile
dsh plugin --profile desktop add link:$repo

3. 让它成为一个 bundle:在 profile 的 dsh.profile.bundles 里追加 %USERPROFILE%\.dsh\profiles\desktop\package.json
"dsh": { "profile": { "bundles": [ … , "dsh-session-fork-tree" ] } }

4. 完全退出 DSH 再启动

顺序:先 dsh plugin add(装依赖),再改 bundles(声明组合),最后重启。只做前者插件不会加载;只做后者会因为包不存在而启动失败。

使用

- 打开侧栏:分叉会自动缩进到父会话下面;
- 有分叉的会话,名字右边出现绿色 +(默认收起);
- 点 + 展开,按钮变为绿色边框;再点收起;
- 分叉自己还有分叉时,会再出现一层 +,逐层展开;
- 鼠标悬停在子行上,父行与祖先链同时变亮;
- 刷新页面/重启后回到「全部收起」。

可选配置

在 profile 的 cordis.patch.yml 里覆盖该 bundle 的 config(升级不丢):

- id: fork-tree
name: 'dsh-session-fork-tree'
config:
renames: # 同名分叉改名
- sessionId: session-…
title: '父会话 · 分叉1' reorder: # 把"子会话紧跟父会话"写进 sessionIds
- sessionId: session-…
afterSessionId: session-…

不配置也能用:客户端会在渲染层按父链排序;reorder 只是把顺序持久化,避免下次渲染回退。

工作原理

| 层 | 做什么 |
| Host 半 | 从 sessionController.list() 读 SessionSummary.parentSessionId 生成谱系;提供 GET /fork-tree/lineage.json(谱系)、GET /fork-tree/style.css(样式,客户端每 15 秒重取,改样式无需重启)、POST /fork-tree/report(客户端自报,落盘 %TEMP%\fork-tree-report.json);可选执行改名与 insertSessionBefore 重排 |
| Client 半 | 注册官方槽位 sidebar.session.row.leading 与 sidebar.workspaces.session.row.action 拿到 sessionId;按父链先序排序;用行伪元素画 ╰;在标题后插入 + 按钮;MutationObserver 监听新增行,新建分叉 0.2–0.5 秒内归位 |
| 数据 | 只用官方 API(sessionController、workspaceController),不改 app.asar、不改核心渲染器 |

诊断

- 页面 Console:__ftReport() → 返回当前行、缩进、连接线坐标、折叠状态;
- 自报文件:%TEMP%\fork-tree-report.json(含 live、hidden、toggle、children 等字段);
- 结构认不出时插件不动作,只在 Console warn。

已知限制

- 依赖 DSH 侧栏内部结构(行元素的类名/层级)与 SessionSummary.parentSessionId,属非公开契约,上游改版可能失效;失效时静默不动;
- 折叠状态存在内存中,刷新后复位(如需记忆可提 issue);
- 行顺序在渲染层纠正,极少数情况下可能与宿主下一次重排「抢一次」,MutationObserver 会再纠正;
- 只覆盖当前可见(已挂载)的会话行。

卸载

1. 从 profile dsh.profile.bundles 移除 dsh-session-fork-tree;
2. dsh plugin --profile desktop remove dsh-session-fork-tree;
3. 重启 DSH。

许可

MIT,见 LICENSE。

解决什么问题

在 DSH 里分叉会话会新建一个会话,但侧边栏把它显示成互不相关的一行,按最近活动排序——新分叉直接跳到顶部。会话一多,你就分不清哪一行属于哪条分支。

这个插件重新呈现父子关系:

1. 归属——分叉直接排在父会话下面;可选配置能把这一顺序写进 workspace.sessionIds;
2. 缩进 + 连接线——子行缩进 16px,从父标题左边缘画出 ╰(先竖直到行高一半,再横折,8px 圆角,绝对像素,窗口缩放时重新计算);
3. 折叠——任何拥有分叉的会话,名字右侧出现绿色 +;默认全部折叠,点击展开,再点折叠,逐层递归;展开状态的 + 带绿色边框;
4. 悬停高亮——鼠标悬停在子行上,整条祖先链一起变亮;
5. 自动命名——标题还是生成默认值(Parent (1))的分叉,改名为 Parent · forkN;你自己改过的标题绝不覆盖。

安装

需要 DSH Desktop,或带可用配置档的 dsh web(默认 desktop)。

git clone https://github.com/ayuanxx-max/dsh-session-fork-tree.git
$repo = "<absolute path of the clone>"

dsh plugin --profile desktop add link:$repo

then append "dsh-session-fork-tree" to dsh.profile.bundles in
%USERPROFILE%\.dsh\profiles\desktop\package.json

quit DSH completely and start it again

顺序很重要:先安装依赖,再在 bundles 里声明,最后重启。

用法

- 打开侧边栏——分叉自动缩进到父会话下面;
- 有分叉的会话显示绿色 +(默认折叠);
- 点 + 展开(按钮出现绿色边框),再点折叠;
- 自己也有分叉的分叉,会得到自己的 +,一层一层往下;
- 鼠标悬停在子行上——祖先一起变亮;
- 重新加载后回到「全部折叠」。

可选配置

在配置档的 cordis.patch.yml 里覆盖插件的 config:

- id: fork-tree
name: 'dsh-session-fork-tree'
config:
renames:
- sessionId: session-…
title: 'Parent · fork 1' reorder:
- sessionId: session-…
afterSessionId: session-…

工作原理

| 层 | 作用 |
| 宿主 | 从 sessionController.list() 读取 SessionSummary.parentSessionId;提供 GET /fork-tree/lineage.json、GET /fork-tree/style.css(每 15 秒重新拉取——改样式不用重启)、POST /fork-tree/report(写入 %TEMP%\fork-tree-report.json);可选的改名与 insertSessionBefore 重排 |
| 客户端 | 为行的 sessionId 注册官方插槽 sidebar.session.row.leading / sidebar.workspaces.session.row.action;按树形排列行;用行伪元素绘制 ╰;在标题旁插入 + 按钮;MutationObserver 在 0.2–0.5 s 内放置新分叉 |
| 数据 | 只用官方 API(sessionController、workspaceController);绝不修改 app.asar |

诊断

- 控制台:__ftReport() → 行、缩进、连接线坐标、折叠状态;
- 报告文件:%TEMP%\fork-tree-report.json;
- 失败即安全:结构未知就不做任何操作,只输出一条 warn。

限制

- 依赖侧边栏内部标记,也依赖 SessionSummary.parentSessionId(私有约定);界面改版可能让它失效,此时它会静默停止;
- 折叠状态存在内存里,重新加载后重置;
- 行顺序在渲染层修正;宿主重新排序时,MutationObserver 会再次修正;
- 只处理已挂载(可见)的行。

卸载

从 dsh.profile.bundles 中移除 dsh-session-fork-tree,运行 dsh plugin --profile desktop remove dsh-session-fork-tree,重启 DSH。

许可证

MIT,见 LICENSE。
预览分享卡片长什么样 ↓ayuanxx-max/dsh-session-fork-tree
分享 · DeepSeek Harness Hub
ayuanxx-max/dsh-session-fork-tree

把分叉会话挂到父会话下并折叠展开

这是你的仓库?认领条目

回到顶部