把分叉会话挂到父会话下并折叠展开
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
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 5 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
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。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
ayuanxx-max/dsh-session-fork-tree
把分叉会话挂到父会话下并折叠展开
相关插件 · 浏览器
智能体插件框架deepseek-ai/deepseek-harness
DeepSeek Harnessdsh是由 DeepSeek AI 开发的开源 agent harness智能体框架。
★ 270,422已汉化DSH
71.9
多设备 Agent 看板YaoApp/yao
✨ 所有 Agent 和工作区集中管理,覆盖你的每一台设备。任务看板追踪进度,桌面端、移动端、浏览器、API…
★ 8,147已汉化DSH
71.2
可扩展侧边栏工作台omdsh-dev/DSH-better-sidebar
DSH 的双工作台:原生右侧栏 + 自绘底部面板,并把 ctx.betterSidebar 服务开放给所有插件
★ 4,761已汉化DSH
71.1
浏览器自动化桥Tencent/BrowserSkill
你的 Agent。你的浏览器。连接,就能协作。
★ 9,967已汉化DSH
71
AI 小说创作工作台EthanYoQ/AI-Novel-Writer
AI 小说作家 / AI Novel Writer
★ 1,591已汉化DSH
70.7
智能体浏览器引擎platonai/Browser4
DeepSeek Harness 集成
★ 1,175已汉化DSH
70.4
这是你的仓库?认领条目