aggregate-better-sidebar 使用指南
DSH-better-sidebar 仓库自带的聚合双挂载测试夹具,模拟聚合 bundle 抢先挂载场景,验证插件自身 bundle patch 在重复挂载时自动退让避免崩溃。
本文为派生内容(基于 wiki / faq / compatibility_json 自动组装),非 AI 即时创作。
本文由本站基于该插件已收录的字段自动派生(wiki / faq / compatibility_json / readme),非 AI 即时创作。每节末尾标源字段。
快速上手
aggregate-better-sidebar (DSH-better-sidebar 聚合挂载测试夹具)
— 源: plugin_wiki.wiki_content
安装与验证
dsh plugin --profile web add github:omdsh-dev/DSH-better-sidebar#path:tests/fixtures/aggregate-better-sidebar
复制以上命令在 DSH Web Profile 内运行。安装完成后在「插件列表」启用即可。
— 源: plugins.install
关键要点
- 🗂️ 文件工作台:资源管理器(懒加载目录树;软链接按目标类型展示——目录软链接可展开、失效链接标红)+ CodeMirror 编辑器;图片 / Markdown(含 Mermaid 图表,strict 安全渲染 + 点击放大)/ HTML / PDF / Office 内联预览
- 🌐 内嵌浏览器:多开网页 tab,后退 / 前进 / 刷新;内容运行在沙箱 iframe;外链默认按协议分流——HTTP 在侧边栏打开、HTTPS 走系统浏览器(设置页可分别调整)
- 💻 真实终端:xterm.js + node-pty 真实 shell,断线重连回放;可选为模型注入
terminal_*工具 - 🌿 Git 面板:真 diff + VSCode 式 diff tab、历史、右键暂存 / 提交 / 还原
- 🧩 后台任务页:subagent 拓扑 + 后台任务(退出码 / 实时输出 / 强制终止)
— 源: plugin_wiki.readme_zh (fallback readme_raw)
常见问题
这个包是给普通用户装的吗?
不是。它是 DSH-better-sidebar 仓库自带的一个 CI 测试夹具(版本钉死 0.0.0、private: true),不在 npm 上发布、不应通过插件市场安装;实际使用方式是仓库自身的 scripts/e2e-aggregate-mount.sh 脚本在 CI 里 npm pack 后用 file: 路径装进 scratch profile。
它和主插件 dsh-better-sidebar 是什么关系?
它是一个空壳包,只有一个 cordis.patch.yml 用 insert 把 name 为 dsh-better-sidebar 的 bundle 以独立条目 id(aggregate-better-sidebar)挂到 cordis;cordis 因此看到两个不同 entry id 都想挂同一个包名,正是这个冲突触发了主插件自身的退让守卫表达式(PR #200 引入)。
装上之后能在界面上看到什么?
什么也看不到。lib/index.js 是空的 no-op apply(),包本身不注册任何 UI、不暴露任何服务;它只是替主插件"占位"了一行挂载声明,真正的侧边栏界面由主插件(或聚合行)提供。
这个夹具在防什么 bug?
防 PR #200 修复的「duplicate prefix route」崩溃:聚合 bundle(如 dsh-web-ui-all)以独立 id 抢先挂载 dsh-better-sidebar、主插件自身的 bundle patch 后到时,如果两行都生效就会重复注册 /sidebar/api 前缀路由,导致整个 dsh web 启动失败;主插件的 cordis.patch.yml 守卫表达式会检测到已有同包名启用挂载,自动让自身那行 disabled。
这个夹具为什么用 file: 路径而不是 github: 路径装?
scripts/e2e-aggregate-mount.sh 先用 npm pack 把夹具打成 tarball 再用 file: 装进全新 scratch profile,目的是跑一个真实安装顺序(聚合先行、主插件后到)的端到端冒烟;README 里贴的安装命令只是个安装器支持的语法,这个包本身没有面向终端用户的功能。
我能在生产 profile 里装它吗?
技术上能(它是个合法 npm 包),但没有意义。包名 fixture-aggregate-better-sidebar、版本 0.0.0、private: true,装上后只会让你的 cordis patch 多一行挂载声明、并不会带来任何新功能,反而可能触发主插件的退让守卫。
CI 失败时我该怎么排查?
看 e2e-aggregate-mount.sh: 它抓 ERR_LOG/OUT_LOG 里是否出现 "duplicate prefix route"(说明退让守卫失效),并对 /sidebar/api/terminal.deps 发起 POST 期望返回 ok:true,对未知方法期望 404;任意一条断言失败脚本就会 die 并打印响应头 200 字节用于定位。
普通用户怎么知道这个夹具存在?
看主仓库 README_EN.md:81 的「Aggregate double-mount auto-yield」条目,以及 README 排错表的「Two sidebars on the page」一行——这两处都明确提到聚合包场景下插件自身会退让,本夹具是这条行为在 CI 里的固定重现器。
— 源: plugin_wiki.faq_json
兼容性
- DSH: 0.1.0-rc.8+
- Node: 未声明
- Platforms: 跨平台
— 源: plugin_wiki.compatibility_json
踩坑提醒
安装前请审阅上游仓库;本指南基于已收录字段自动派生,可能滞后于最新版本。如发现与官方文档冲突,请以上游为准。
— 来源:通用规则