前言¶
DSH 0.1.7 起,右侧栏由宿主的 ui-sidebar-right 接管:一格一个 tab,最多两格。dsh-better-sidebar 只往里面注册 tab 类型,不再自绘整栏;从 v0.14.0 起默认「文件打开方式」也改成了「独立」,v0.19.0 又退役了自绘右栏。结果是:右栏不会自动再出现「预览 + 文件列表」并排、旁边再挂「文件变动」那套老习惯布局。
更早的 @linxin666/dsh-client-ui-aionui-panel 曾在 Web UI 里自绘 Explorer + Preview,但该插件自 npm 0.3.6 起已停止支持,最后一个可用版本面向的旧 runtime 在 DSH 0.1.7 里已不存在,装回新版 DSH 也激活不了。
下面介绍 dsh-aionui-layout(维护者 tenyding,分类:客户端):不重画任何面板,只在会话右栏布局为空时,用 better-sidebar 自带的 editor(合并模式)与 git 两个 tab 摆出两格,把 AionUi 那套右侧面板形态补回来,且 better-sidebar 的新特性一个不丢。
这是什么¶
dsh-aionui-layout 是纯排版插件:监听会话右栏挂载,若该会话在 localStorage 里持久化的布局没有任何 tab,就自动打开「文件(预览 + 停靠文件树)」与「文件变动」两格;内容 100% 来自 dsh-better-sidebar,不 monkey patch DSH 或 better-sidebar 源码。
仓库已提交手写 bundle 的 lib/client.js,无构建步骤,用 github: 安装即可直接加载。
布局示意(默认宽度比约 0.62 / 0.38,可拖分隔条调整):
┌──────────┬───────────────┬────────────────────────────┬──────────────────┐
│ 会话列表 │ 对话框 │ 文件(预览 + 停靠文件树) │ 文件变动 │
│ (DSH) │ (DSH) │ better-sidebar editor │ better-sidebar git│
└──────────┴───────────────┴────────────────────────────┴──────────────────┘
核心功能¶
自动播种空右栏¶
每个「右侧栏布局为空」的会话在装插件并刷新后,会按序:openTab('editor') → split() → 在新格 openTab('git') → 关闭 kind 为 guide 的开始页 → focus 预览格。已有 tab 的布局一律不动。
交互对齐 AionUi 习惯¶
合并模式下,在文件树里点文件,左侧预览原地换路径,文件树不消失;聊天或工具行里的文件链接会落到预览格(排版时左格为活动格,DSH openResource 默认进活动格)。两格宽度由 DSH dock 拖拽;「文件变动」格仍可用宿主「分栏」再拆合,或拖 tab 合并。
边界与降级¶
| 情况 | 行为 |
|---|---|
editor 未注册(未装/停用 better-sidebar) |
跳过,不报错 |
git 在 tabsEnabled 里关闭 |
只开一格「文件」,不拆栏 |
split() 因栏宽不足失败 |
只保留预览格 |
座席未就绪导致 openTab 抛错 |
最多重试 8 次,间隔 250ms |
可调常量¶
改 lib/client.js 顶部常量后刷新即可(无需构建):PREVIEW_SIZE(默认 0.62)、FIRST_DELAY_MS(120)、MAX_ATTEMPTS(8)、RETRY_DELAY_MS(250)。要改左右格内容或顺序,可调整 seedLayout() 里 openTab / split() 的调用顺序。
前置条件¶
| 要求 | 说明 |
|---|---|
| DSH | 0.1.7-rc.1 及以上 |
| dsh-better-sidebar | >= 0.19(README 实测 0.21.1) |
| 文件打开方式 | 必须「合并」;「独立」下无路径的 editor 只有文件树,没有预览列 |
| tab | editor、git 在 tabsEnabled 中保持启用 |
profile 示例(~/.dsh/profiles/<profile>/cordis.patch.yml):
- id: better-sidebar
name: dsh-better-sidebar
config:
editorExplorer: true
tabsEnabled:
editor: true
git: true
图形界面:设置 → 侧边卡片 → 「文件」卡片 → 文件打开方式 → 合并。
安装与启用¶
先做 profile 为 web 时的推荐安装(命令来自仓库 README):
dsh plugin --profile web add github:tenyding/dsh-aionui-layout
装完后 刷新页面;若 profile 无 patchReload: live + HMR,需重启 dsh web。
开发时可从本地目录 link(需已有仓库副本):
dsh plugin --profile web add link:$PWD/dsh-aionui-layout
CLI 会把包写入 profile 的 package.json,并把包名追加到 dsh.profile.bundles(包声明了 dsh.bundle.patch)。
安全说明:插件在 当前 DSH 进程权限 下作为客户端 bundle 运行;安装前请自行查看 GitHub 源码 与 MIT 许可证(见 package.json),确认符合你的环境策略。社区目录 skillhub.cn 为独立生态站点,与 DeepSeek / 幻方无官方从属关系。
典型用法¶
日常使用¶
- 确认 better-sidebar 已装且「合并」模式、
editor/gittab 已开。 - 执行上述
dsh plugin --profile web add github:tenyding/dsh-aionui-layout。 - 刷新 Web GUI;新建或右栏仍为空的会话会自动两栏。
已有布局的老会话想立刻改成两栏¶
插件故意不改已有布局。若需强制播种,把仓库 snippet/seed-layout.js 整段贴进 DevTools 控制台执行,马上刷新(否则内存 store 会写回旧布局)。或删除 localStorage['dsh.sidebar-right.v1.<sessionId>'] 后刷新,让空布局再次触发自动排版。
行为自测(仓库内)¶
node test/seeding.test.mjs
纯 Node、零依赖,驱动真实 bundle 覆盖 8 种 seeding 情形。
排障要点¶
| 现象 | 处理 |
|---|---|
| 右栏无变化 | 硬刷新;仍无效则重启 dsh web |
| 只有「文件」一格 | 检查 tabsEnabled.git 或拖宽右栏后再分栏 |
| 「文件」只有树、无预览 | editorExplorer 未生效,仍为「独立」模式 |
| 某会话从不排版 | 该会话已有布局;用 snippet 或清对应 localStorage 键 |
结尾¶
dsh-aionui-layout 在 DSH「一切皆插件」的前提下,用最小排版逻辑把 better-sidebar 的 editor + git 固定成 AionUi 式右栏,适合仍习惯「预览与文件树同格、变更在旁」、且已跟上游 better-sidebar 能力线的 Web 用户。