前言¶
在 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 仓库。