dsh-left-sidebar-collapse
English | 中文
选中会话后自动收起 / 彻底收起 DSH 左侧边栏。一个独立、可安装的 DSH 插件(纯客户端,不改 ui-layout 框架)。
在 设置 → General 里有两个独立偏好:
1. 自动收起侧边栏 —— 选中某个会话后,左侧边栏收起为 56px 的工具栏。行为确定:插件内置状态机驱动 ctx.layout,读取稳定的 data-sidebar-collapsed frame 信号,并对布局自身的反馈进行抑制,因此不会来回翻转。 2. 完全缩回 —— 当侧边栏处于收起态时,把它整个隐藏(移除工具栏,grid 第一轨道收为 0),并在左上角显示一个浮动展开按钮。点击即恢复完整侧边栏;会话内容保持全宽,其余界面不受影响。
偏好存储在 localStorage(进程内浏览器偏好),因此开关始终可写、并能在刷新后保留。
安装
需要 DSH(DeepSeek Harness)的 dsh CLI。
dsh plugin --profile web add git+https://github.com/condaThinker/dsh-left-sidebar-collapse然后重启目标 profile:
dsh --profile web安装后打开 设置 → General,打开 自动收起侧边栏(可选再加 完全缩回)。
Git 安装与 prepare 构建
本插件携带一个自包含的 prepare 构建脚本(tsdown),符合 DSH 插件分发约定。以 Git 方式安装时,pnpm 会在 profile 里执行该脚本构建 lib/,因此需要网络来解析 DSH 的 peer/dev 依赖,且需在 profile 放行构建脚本:把 dsh-left-sidebar-collapse 加入 profile 的 allowBuilds(参见 pnpm ≥10 的 allowBuilds/strictDepBuilds),然后再跑 dsh plugin add。若想免构建安装,维护者可把构建好的 lib/ 提交进 Git 并去掉 prepare——但推荐路径是 prepare。
构建
pnpm install
pnpm build
pnpm test工作原理
- 自动收起:监听
ctx.sessions.list,当当前会话切到另一个真实会话时,[AutoCollapseMachine](src/client/collapse-machine.ts) 仅在 frame 渲染为展开(读取data-sidebar-collapsed)时通过ctx.layout.toggleSidebar()收起,并抑制后续翻转直到 frame 确认收起——不会双击、不会弹回。 - 完全缩回:
shell.overlay里的FullCollapseButton组件响应式监听data-sidebar-collapsed;当已收起且开启“完全缩回”时,注入一条grid-template-columns: 0 minmax(0,1fr) 0 !important覆盖(侧边栏轨道 → 0,中心列重回全宽),并显示唯一的展开按钮。
client bundle 遵循 DSH 模块表纯度:仅值导入平台模块(ui-primitives、文档明确的 dsh-client-runtime 豁免);其余均为仅类型导入的契约拉取。
模型体验
无,因为插件只移动浏览器分栏布局,且从不进入 append-only 的 Session 日志、模型上下文或遥测。
#### KV Cache 影响
无;收起手势不触碰历史尾部。
Known Limitations and Deferred Work
- 与
dsh-better-sidebar共存 —— 两者各自独立管理侧边栏状态;若开关关着却看起来触发了收起,请检查是否另有侧边栏插件(如dsh-better-sidebar)也在收起。本插件的开关关闭时严格不动作。 - 收起动作是翻转而非 store 写入 —— 因为
ctx.layout仅暴露toggleSidebar(),插件以上述状态机避免来回翻转,但无法直接改动布局 store。