dsh-sidebar-settings-button:侧栏顶部的 Settings 入口

前言

在 DeepSeek Harness(DSH)桌面客户端里,打开设置面板通常依赖快捷键 Ctrl+,(macOS 为 ⌘+,),或从头像菜单里找 Settings。侧栏主区已有 Plugins、Schedules 等固定行,但没有与它们并列、始终可见的 Settings 行。若你希望在侧栏头部、Plugins 上一行就能一键打开与快捷键相同的原生设置面板,社区插件 dsh-sidebar-settings-button(维护者 Nishikinov,分类:客户端)就是针对这一点的实现。

这是什么

dsh-sidebar-settings-button 是 DSH 客户端插件:在侧栏 header 的 sidebar.panellist 中注册一行 Settings,顺序紧挨在 Plugins 之前;单击该行打开与 Ctrl+, / ⌘+, 相同的原生 Settings 面板。当前 package 版本为 0.2.0,许可证 MIT,依赖 Node >= 22、dsh >= 0.2.0-rc.2。

社区目录页:https://www.skillhub.cn/plugins/Nishikinov/dsh-sidebar-settings-button;源码与说明:https://github.com/Nishikinov/dsh-sidebar-settings-button。目录站点为社区生态索引,与 DeepSeek / 幻方无官方从属关系。

核心功能

插件在侧栏自带的 sidebar.panellist 席位注册一条目,order: -10(Plugins 为 0,Schedules 为 10),因此 Settings 行排在最前,由内置侧栏绘制:原生几何、hover、焦点环、折叠轨图标与 tooltip、本地化标签。

单击行为与「设置不是 main 面板」这一事实有关:selectPanel 对未知 key 会抛错,Settings 实际由 ui-settings-general 以 modal 持有。插件在 document 上使用 capture 阶段监听,在 React 根之上截获点击,并通过快捷键注册表调用 settings.open(ctx.shortcuts.registry.invoke,刻意传入 modal: null,避免菜单挂载时 modal guard 吞掉调用)。整行可点:图标、标签与按钮内边距均算在行内。

降级路径不会静默失败:会在 Toast 中给出简短原因,并写入 console;可用 F12 打开 DevTools 排查。

侧栏示意(来自 README):

┌─ sidebar ─────────────────┐
│  ⚙  Settings   ← new row
│  ⊛  Plugins
│  ⏱  Schedules
└───────────────────────────┘

安装与启用

安装使用 DSH 自带 CLI,对本地文件夹或 tgz 执行 plugin add(资料未给出 github:owner/repo 形式的一键命令,请勿凭插件名拼接)。dsh plugin add 在 profile 内等价于 pnpm add 并 reconcile dsh.profile.bundles;文件夹安装为 link:,便于开发时以检出目录为唯一来源。

Windows 示例:

# Windows, using the app's own CLI:
& "$env:LOCALAPPDATA\Programs\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd" `
  plugin --profile desktop add <path-to-folder-or-tgz>

卸载:

dsh plugin --profile desktop remove dsh-sidebar-settings-button

插件以当前 DSH 进程权限运行;安装前请自行阅读仓库源码与 MIT 许可证,确认符合你的安全与合规要求。

验证与典型用法

自动化测试(在插件仓库根目录):

node test/bundle.test.mjs                      # 6 tests: registration, order, whole-row click, Toast, degradations
node --check src/index.js; node --check client/bundle.js

线上检查:客户端 slot 检视器里,sidebar.panellist 子树中应能看到本插件条目排在 plugins 之前:

cordis_inspect_query(platform: "client", provider: "Slots",
                     method: "listSubTree", input: { root: "sidebar.panellist" })

日常用法即:启动已安装该插件的 desktop profile 后,在侧栏顶部点击 Settings,无需记快捷键或打开头像菜单。

适用场景与限制

适合:希望侧栏与 Plugins 同级、长期可见的设置入口;习惯从侧栏切换主面板、又不想多记一条快捷键的用户。

需注意:

  • 头像菜单里的 Settings 仍然保留(属于其他插件的 React 树);侧栏行是额外入口,不是替换。
  • 该行 id 不对应任何 main panel,依赖点击拦截避免 selectPanel 抛错;若未来 ui-sidebar 改为 onClickCapture,拦截逻辑可能需要重写(测试仅覆盖插件自身行为)。
  • 侧栏传入 { size, active },插件只使用 size,该行不会像面板一样高亮——Settings 不是 panel。
  • 无构建步骤:浏览器侧为经典脚本经 window.__ModuleLoader__.load 加载,仅 require 平台模块(react、@deepseek-ai/dsh-client-ui-primitives)。

结尾

dsh-sidebar-settings-button 把原生 Settings 面板接到侧栏 header、Plugins 之上,实现与快捷键一致的一键打开,并对失败路径给出 Toast 与日志。进一步了解可访问 SkillHub 目录页 与 GitHub 仓库。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜