前言¶
DeepSeek Harness(DSH)桌面版的左侧栏会同时承载 Logo、搜索、新会话、工作区里的项目与会话,以及插件、插件市场、自动化任务等导航入口。条目一多,纵向空间很快被占满,常用会话和次要入口混在一起,查找成本偏高。
DSH 生态里不少能力都以插件形式挂在同一套 Web 渲染层上。若不额外改 UI,侧栏结构由宿主决定:插件类入口默认竖排占多行。下面介绍的 dsh-compactui(维护者 ifengz)在浏览器端重排侧栏视觉与交互,把导航收成浮层、把搜索嵌进顶栏,并用 localStorage 保住置顶与「加回侧栏」的入口,目标是对齐 Codex 风格的紧凑侧栏,而不是再叠一层配置面板。
这是什么¶
dsh-compactui 是一个面向 DSH Web / 桌面渲染层的 UI 插件:package.json 中 dsh.client.platform 为 web,逻辑集中在 client.js;宿主侧 index.js 仅为 cordis 合法的占位 apply()。它不改动 CLI 或纯 API 使用场景。
插件在已验证环境 DSH 桌面版 0.2.2-rc.1(Windows、macOS)上做过开发与验证;与宿主的耦合主要来自侧栏 DOM 的类名片段和若干 aria-label 文案(如「搜索会话」「已置顶」),宿主大改侧栏时需要同步维护插件。
侧栏长什么样¶
装好后刷新页面,侧栏大致分为三块行为(与 README 中的示意一致):
| 序号 | 界面上你会看到什么 |
|---|---|
| 1 | 顶部一行:Logo、搜索、菜单;其下是细条「新会话」、可折叠「置顶」、以及保持原样的「工作区」 |
| 2 | 点菜单后,插件类入口从竖排收成贴菜单弹出的浮层;每条右侧有 +,可把该入口加回侧栏 |
| 3 | 点放大镜后,搜索框原位替换 Logo,输入时过滤会话;置顶区单独一块,可折叠 |
品牌行高度 56px,Logo 26px,名称 16px/600;右侧为 28px 的搜索与菜单图标。新会话由居中大按钮改为贴左、34px 高的细条。工作区仍按宿主原样展示项目分组与会话行。
浮层菜单与「加回侧栏」¶
侧栏里原本竖排的插件、插件市场、自动化任务、「更多」等入口,全部迁入贴着菜单按钮弹出的浮层。
- 浮层中某条右侧点淡蓝色 +,该入口会以普通竖排行出现在「新会话」正下方,位置与原生面板行一致。
- 常驻行右侧有弱化 −(默认约 35% 透明度,悬停变实),点它可把入口收回浮层。
- 已加回侧栏的项,在浮层里显示勾号而非 +。会展开子菜单的入口(如「更多」)在浮层下方直接展开子菜单,主浮层保持打开。
常驻导航文案列表写在 localStorage["dsh-compactui:promoted"],重启后仍保留;每次打开浮层会重新读取宿主导航,新插件会自动出现在浮层里并可添加。
内联搜索与置顶区¶
点放大镜后,搜索框占据 Logo 原位(Logo 与右侧按钮暂时隐藏),边输入边过滤侧栏会话;Enter 打开第一条命中,Esc 或 ✕ 退出并复原。
置顶只在存在置顶会话时出现,标题可折叠;行右侧 ✕ 为取消置顶,点行本身打开会话。
置顶列表持久化在 localStorage["dsh-compactui:pinned"],记录形如 [{ "t": "会话标题" }]。DSH 折叠项目时会从 DOM 卸载会话行,纯扫 DOM 的实现会丢置顶;本插件在本地记标题,折叠后条目仍在,点开会自动展开对应项目再进入会话。首次启动且本地列表为空时,会临时展开折叠项目扫一遍再收回,以便已有置顶能显示(折叠项目可能短暂闪一下)。
实现要点(读源码时看哪里)¶
全部 UI 改动在 client.js 完成,便于理解行为边界:
- 样式注入:通过
<style id="dsh-compactui:style">注入;选择器使用[class*="_logoRow"]这类类名片段,避免绑定 DSH CSS Modules 的构建期哈希。 - 不搬移宿主 React 节点:原面板导航行用 CSS 隐藏,浮层里用克隆按钮,点击时按文案找回仍存活的原按钮并
.click(),交给宿主跳转逻辑。 - 跟随重渲染:
MutationObserver+requestAnimationFrame去抖补齐自有节点;ctx.effect的 dispose 会移除注入样式与节点。 - 窗口拖动:侧栏顶部两行为
data-window-drag拖拽区;浮层打开时临时改为no-drag,避免浮层挡住拖动,仍靠顶部空白区域拖窗。
与其它改侧栏的插件可能争用同一批 DOM 与 CSS 优先级,已有同类插件时建议只保留一个。
安装与卸载¶
插件以当前 DSH 进程的权限在浏览器端运行;安装前建议查看 GitHub 仓库 源码与 MIT 许可证。
从 npm(发布后)安装 web profile:
dsh plugin --profile web add dsh-compactui
从本地目录或 tgz:
dsh plugin --profile web add file:C:/path/to/dsh-compactui
dsh plugin --profile web add C:/path/to/dsh-compactui-0.5.11.tgz
装完后刷新页面(桌面版可在 DevTools 执行 location.reload(),或重启 DSH)。
卸载:
dsh plugin --profile web remove dsh-compactui
卸载后侧栏立即恢复宿主原样;localStorage 可能仍保留 dsh-compactui:pinned 与 dsh-compactui:promoted,需要时可手动清除。
典型用法¶
本插件没有独立配置文件,使用方式就是安装启用后,在侧栏上按界面操作:
- 常用插件入口:打开菜单浮层 → 点 + 固定到「新会话」下方 → 不常用时点 − 收回。
- 找历史会话:点搜索图标 → 输入过滤 → Enter 打开第一条,或 Esc / ✕ 退出。
- 固定会话:在置顶区管理;折叠工作区项目后,置顶项仍应来自本地记录显示(依赖会话标题匹配)。
适用场景与限制¶
适合:长期在 DSH 桌面 Web 界面工作、希望侧栏更紧凑、愿意把次要入口收到浮层里的开发者。
需注意:
- 置顶与常驻行均按文案匹配;会话或入口改名后,旧记录不会自动跟随,需重新置顶或用减号收回无效常驻行。
- 会话被彻底删除后,对应置顶记录只能通过条目 ✕ 手动清除。
- 依赖宿主侧栏结构与
aria-label文案;大版本 UI 变更后可能要更新插件。 - 社区目录 SkillHub 插件页 与 GitHub 为独立信息源,与 DeepSeek / 幻方无官方从属关系;DSH 仍遵循「一切皆插件」的扩展方式。
结尾¶
经过上面的步骤,dsh-compactui 把 DSH 左侧栏收成「顶栏 Logo + 内联搜索 + 浮层收纳插件入口 + 可持久置顶」的布局,改动集中在客户端脚本,卸载可退回原生侧栏。进一步了解可打开目录页 https://www.skillhub.cn/plugins/ifengz/dsh-compactui 与仓库 https://github.com/ifengz/dsh-compactUI。