把侧边栏面板列表收成一行,点击浮层快速切换
30.6/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/22 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/ACGsu/dsh-sidebar-panel-fold.git状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 14 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🟢 扫描:未发现敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/schemastery给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
把 DeepSeek Harness 侧边栏的全局面板列表收成一行,用弹出层切换面板。
README
由 DeepSeek 最新模型翻译生成dsh-sidebar-panel-fold
把 DeepSeek Harness 左侧边栏的全局面板列表(插件、定时任务、上下文……)收进一行。
默认展开时与原生完全一致;点一下「收起面板」就只剩一行摘要,再点这一行弹出浮层,列出全部面板随时切换。
- 不改任何内置文件 —— 纯外挂插件,不碰 app.asar、不碰官方包
- 状态跨重启保留 —— 记在 Host 侧设置文档里,换端口、换端都不丢
- 零运行时依赖 —— 只有 Host 侧一个 @deepseek-ai/schemastery(peer,可选)
English: folds the DeepSeek Harness sidebar's global panel list (Plugins, Schedules, Context, …
展开完整文档(README 剩余 1 节)
dsh-sidebar-panel-fold
把 DeepSeek Harness 左侧边栏的全局面板列表(插件、定时任务、上下文……)收进一行。
默认展开时与原生完全一致;点一下「收起面板」就只剩一行摘要,再点这一行弹出浮层,列出全部面板随时切换。
- 不改任何内置文件 —— 纯外挂插件,不碰 app.asar、不碰官方包
- 状态跨重启保留 —— 记在 Host 侧设置文档里,换端口、换端都不丢
- 零运行时依赖 —— 只有 Host 侧一个 @deepseek-ai/schemastery(peer,可选)
English: folds the DeepSeek Harness sidebar's global panel list (Plugins, Schedules, Context, …) into a single row, with a popover to switch panels. State is persisted through DSH's own settings channel, so it survives restarts on both the web and desktop builds. No built-in files are modified. Documentation below is in Chinese.
目录
- 1. 效果
- 2. 安装
- 3. 使用
- 4. 兼容性
- 5. 工作原理
- 6. 已知限制
- 7. 卸载
- 8. 开发
- 9. 问题排查
- 10. 版本
- 11. 许可与声明
1. 效果
安装前,侧边栏的面板列表每个面板占一行:
┌──────────────────────┐
│ ▣ 新会话 │ ← 独立按钮,不属于面板列表 │ ⬡ 插件 │ ┐ │ ◷ 定时任务 │ ├ nav[aria-label="全局面板"] │ ◈ 上下文 │ │ 每个面板一行 │ ▤ 市场 │ ┘ └──────────────────────┘
装上本插件后,列表上方多出一行「收起面板」:
┌──────────────────────┐
│ ▣ 新会话 │ │ ⌃ 收起面板 │ ← 本插件注入的一行 │ ⬡ 插件 │ │ ◷ 定时任务 │ │ ◈ 上下文 │ │ ▤ 市场 │ └──────────────────────┘
点击「收起面板」,整列面板收纳成一行摘要(图标 = 当前激活面板,文字 = 当前面板名):
┌──────────────────────┐
│ ▣ 新会话 │ │ ⬡ 插件 ⌄ │ ← 收纳成一行;点击弹出浮层 └──────────────────────┘
点击这一行弹出浮层,列出全部面板:
┌──────────────────┐
│ ⬡ 插件 ✓ │ ← 当前面板 │ ◷ 定时任务 │ │ ◈ 上下文 │ │ ▤ 市场 │ │ ───────────── │ │ ⌃ 展开面板 │ ← 恢复成多行列表 └──────────────────┘
点哪项就切到哪个面板,浮层自动关闭,仍然保持收起。侧边栏处于「窄轨」(整栏收起只剩图标)时,本插件的一行也只显示图标,浮层照常可用。
2. 安装
本插件是一个标准的 DSH bundle 包,声明了 dsh.bundle.patch,装进 profile 后会被自动加入 dsh.profile.bundles,无需手工改任何配置。
dsh plugin --profile web add github:ACGsu/dsh-sidebar-panel-fold
2.1 从本地目录安装
推荐用 file:,不要用 link:。
桌面端 profile(默认就是它)
dsh plugin --profile desktop add "file:/path/dsh-sidebar-panel-fold"
2.2 从插件管理器安装
在「插件」面板里选择「从本地路径安装」,指向本目录即可。插件管理器会校验包内是否存在 dsh.bundle(本包已声明),随后自动 reconcile 进 profile 的 bundles 列表。
2.3 生效
bundle 的 patch 层是在启动时组合的,因此安装完需要完整退出并重启 DeepSeek Harness(不是刷新页面)。
装成功后控制台应有:
[dsh-sidebar-panel-fold] client loaded v0.1.0
若还看到 schemastery is not resolvable 警告,说明装的是 link:,换成 file: 重装。
端口说明:桌面端每次启动用随机端口(--port 0),Web 端端口由 dsh web 决定。本插件不依赖固定端口,状态存在 Host 侧,换端口不影响。
3. 使用
| 场景 | 操作 |
| 收起面板列表 | 点击「收起面板」这一行 |
| 展开回原样 | 展开状态下再点这一行(此时它显示「收起面板」) |
| 在收起状态下切换面板 | 点击那一行摘要 → 浮层里选面板 |
| 关闭浮层 | 点击浮层外部、按 Esc、或滚动页面 |
4. 兼容性
| 项目 | 说明 |
| DSH 版本 | engines.dsh: ">=0.2.0-rc.2"(DSH 用 includePrerelease 匹配,0.2.1-rc.2 通过) |
| 验证环境 | DSH 0.2.1-rc.2,Desktop(Windows 11)/ Web |
| 平台 | Web(浏览器)与 Desktop(Electron)共用 dsh.client.platform = "web" |
| 依赖 | 仅 @deepseek-ai/schemastery(Host 侧 schema,peer 且 optional);运行时零第三方依赖 |
| 内置文件 | 不修改 app.asar / 任何官方包 |
插件依赖以下稳定锚点,都来自官方渲染器与侧边栏组件,不依赖 CSS Module 的哈希类名:
1. [data-slot="sidebar.panellist"] —— 插槽渲染器固定输出的锚点(display: contents,不参与布局)
2. nav —— 由 closest("nav") 取得,即面板列表容器
3. button[aria-current="page"] / aria-label —— 读取当前面板与各面板名称
即使官方改了样式哈希(_2H3hWW_*),本插件也不受影响。
5. 工作原理
Host 半边 (src/index.js) 浏览器半边 (src/client.js) ───────────────────────── ─────────────────────────────
Config = z.object({ apply(ctx):
folded: z.boolean() ├─ 注入 (data-dsh-spf-css)
.default(false) ├─ 注册 zh/en 词典(locale NS)
.volatile() ├─ 启动 DOM 观察器
}) ├─ 在 nav 前插入一行按钮
apply(ctx): └─ ctx.inject(["configForms"]) → 读写 folded
settings.configure({ auto: false })
→ 不出现在自动生成的设置页
细节:
- 注入位置:按钮容器作为 nav 的前一个兄弟节点插入,绝不进入 React 自己管理的 nav 子节点列表,因此不会与 React 的 diff 打架;React 若重建 nav,观察器会重新挂载。
- 收起实现:给 nav 加自定义类 dsh-spf-folded,由本插件自己的 CSS 隐藏 nav 的子节点(不写内联样式,展开时移除类即可还原)。之所以隐藏子节点而不是 nav 本身,是为了让 nav 的 display 仍可被 getComputedStyle 读到——官方在 Windows 标题栏窄轨模式下会自己把整个列表 display: none,此时本插件的一行也一并隐藏,不会留下一个孤零零的按钮。
- 摘要内容:从 nav 里当前激活的 button[aria-current="page"] 读取 aria-label 与图标 innerHTML,克隆进摘要行,因此面板增减、语言切换都会自动跟随。
- 浮层:点击摘要行时按 nav 里的按钮动态生成菜单(role="menu"),点某项时直接 row.click(),交回 DSH 自己的 selectPanel 逻辑,不绕过任何官方行为。
- 变更检测:MutationObserver(childList + aria-current/aria-label/class)+ resize/scroll,统一用 requestAnimationFrame 节流,并对派生状态做签名比对,避免自触发循环。
- 样式:全部走设计令牌(--dsw-alias-label-primary、--dsw-alias-interactive-bg-hover、--dsw-radius-md 等),自动适配深浅色主题。
- 清理:所有副作用都挂在 ctx.effect 的返回值里,插件卸载时移除 、按钮容器与全部监听器,不留残留 DOM。
6. 已知限制
- 不是官方插槽能力:sidebar.panellist 是 list 槽,但每个 entry 由 SidebarRoot 独占渲染成一行 PanelRow,官方没有提供「包裹整个 nav」的扩展点,因此本插件走 DOM 注入。若上游把 nav 换成别的标签或去掉 [data-slot] 锚点,需要同步调整 src/client.js 里的 SLOT 常量(改动点集中,只有一处)。
- 浮层是自绘的:定位、关闭时机(外部点击 / Esc / 滚动)都由本插件负责;DSH 自带的 Tooltip 等原语没有对外暴露,未复用。
- 收起时不可用键盘 Tab 遍历面板:列表被隐藏,需要通过摘要行打开浮层(浮层内可 Tab)。这是「收纳为一行」的固有代价。
- 不影响窄轨的官方行为:Windows 标题栏模式下整栏收起时,官方本来就会隐藏面板列表,此时本插件的一行也随之隐藏。
7. 卸载
dsh plugin --profile desktop remove dsh-sidebar-panel-fold
随后完整重启。插件在 ctx.effect 的清理函数里移除注入的 、按钮容器与所有监听器,不会留下残留 DOM。
8. 开发
dsh-sidebar-panel-fold/
├── README.md # 本文件 ├── LICENSE # MIT ├── package.json # dsh.bundle / dsh.client 声明 ├── cordis.patch.yml # profile patch 层:插入 host entry ├── src/ │ ├── index.js # Host 半边:Config schema + 隐藏自动设置页 │ └── client.js # 浏览器半边:DOM 注入 + 浮层 + 持久化 └── test/ └── smoke.mjs # 无浏览器冒烟测试
自检(Node ≥ 20,无需安装依赖):
node --check src/client.js # 语法检查
node test/smoke.mjs # 迷你 DOM 下的行为断言,末行应为 smoke: ok
冒烟测试自带一个极简 DOM(El / Fragment / Document)与假的 ctx(effect / locale / inject / configForms),覆盖:插入位置、收起与展开、摘要内容、浮层项与当前项标记、选择面板时回退到内置行、展开动作、官方隐藏列表时同步隐藏、面板动态增减、nav 消失与重建、卸载后无残留。它验证的是插件自身的接线(选择器、事件、状态流、清理),不验证 CSS 与 React 集成。
开发期可以用 link: 换安装速度(改完重启即生效),但记得它会让状态记忆降级;交付前用 file: 复验一次。
9. 问题排查
| 现象 | 原因 / 处理 |
| 侧边栏没有任何变化,控制台也没有 client loaded | 确认 dsh.profile.bundles 里有 dsh-sidebar-panel-fold,并完整重启(bundle patch 只在启动时组合)。 |
| 控制台有 schemastery is not resolvable 警告 | 用了 link: 装的。插件本身仍能工作,但收起状态不会跨重启保留。改用 file: 重装。 |
| 有 client loaded 但没有按钮 | 面板列表为空(nav 不存在)时插件不插入任何东西。装至少一个注册 sidebar.panellist 的插件(插件管理器自带「插件」面板)。 |
| 收起状态重启后丢失 | 说明 configForms 不可用,走了 localStorage 兜底;桌面端端口随机会导致兜底失效。检查控制台是否有上面那条 schemastery 警告。 |
| 控制台报 No configurable plugin entry "dsh-sidebar-panel-fold" | profile patch 里该 entry 的 id 与插件 SETTINGS_NS 不一致,或 src/index.js 没有导出 Config(只有 volatile() 字段才会出现在设置表单里)。 |
| 收起后列表还在 | 说明官方的 nav 结构变了(不再是 [data-slot="sidebar.panellist"] 的祖先)。改 src/client.js 顶部的 SLOT 常量或 findNav() 即可,改动点只有一处。 |
10. 版本
- 0.1.0 —— 首版:收起为一行、浮层切换、Host 侧状态记忆、Web / 桌面通用。
11. 许可与声明
MIT © dsh-sidebar-panel-fold contributors
本项目是非官方第三方插件,与 DeepSeek 官方无关。它在运行时读取 DSH 渲染出的 DOM 结构,因此可能随 DSH 上游改动而失效——真到那天,改动点集中在 src/client.js 顶部的锚点常量。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
ACGsu/dsh-sidebar-panel-fold
把侧边栏面板列表收成一行,点击浮层快速切换
相关插件 · 浏览器
智能体插件框架deepseek-ai/deepseek-harness
DeepSeek Harnessdsh是由 DeepSeek AI 开发的开源 agent harness智能体框架。
★ 270,422已汉化DSH
71.9
多设备 Agent 看板YaoApp/yao
✨ 所有 Agent 和工作区集中管理,覆盖你的每一台设备。任务看板追踪进度,桌面端、移动端、浏览器、API…
★ 8,147已汉化DSH
71.2
可扩展侧边栏工作台omdsh-dev/DSH-better-sidebar
DSH 的双工作台:原生右侧栏 + 自绘底部面板,并把 ctx.betterSidebar 服务开放给所有插件
★ 4,761已汉化DSH
71.1
浏览器自动化桥Tencent/BrowserSkill
你的 Agent。你的浏览器。连接,就能协作。
★ 9,928已汉化DSH
71
AI 小说创作工作台EthanYoQ/AI-Novel-Writer
AI 小说作家 / AI Novel Writer
★ 1,591已汉化DSH
70.7
智能体浏览器引擎platonai/Browser4
DeepSeek Harness 集成
★ 1,175已汉化DSH
70.4
这是你的仓库?认领条目