跳到主内容

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

踩坑提醒

安装前请审阅上游仓库;本指南基于已收录字段自动派生,可能滞后于最新版本。如发现与官方文档冲突,请以上游为准。

— 来源:通用规则