dsh-better-settings:侧边栏账号栏旁一键打开设置

前言

在 DSH(DeepSeek Harness)桌面客户端里,改模型、快捷键或界面选项通常要先点左下角账号菜单,再点「设置」。日常调试插件、反复切 profile 时,这两步会积成固定动作。社区插件 dsh-better-settings(维护者 W0rry628,分类:客户端)在侧边栏左下角账号栏那一行的右侧追加一个齿轮按钮,点击后直接打开原生设置面板,不必再经账号菜单。

这是什么

dsh-better-settings 是 DSH 的客户端 bundle patch 插件:浏览器侧逻辑在 lib/client.js,服务端 lib/index.js 仅占位以便正常加载。它不替换设置页本身,只缩短从侧边栏进入设置的路径。

核心功能

挂载后,插件会定位侧边栏底部设置行(ui-settings-general 的 triggerRow),在连接状态、更新提示之后,于该行最右侧追加齿轮按钮。界面示意如下(齿轮为本插件添加):

┌─────────────────────────────┐
│  … 会话列表 …                │
│                             │
│  [头像] 账号名           ⚙  │   ← 这个齿轮是本插件加的
└─────────────────────────────┘

具体行为(均来自 README):

  1. 打开方式:点击时优先复用外壳注入的 openSettings(settings.launcher 的注入物,与账号菜单一致),打开原生设置面板,不模拟点击、不闪菜单。
  2. 文案与快捷键:跟随界面语言显示「设置 / Settings」;tooltip 中带当前生效的 settings.open 快捷键(例如 Ctrl+,)。
  3. 侧边栏收起:侧边栏收成 56px 轨道时自动隐藏按钮(该行仅约 36px 宽,放不下第二个按钮)。
  4. 去重:若部署里该行已有内置设置按钮(无账号插件接管 settings.launcher),则不再追加重复按钮。

为什么用 DOM 挂载而不是 Slot

DSH 侧边栏底部相关插槽中,sidebar.footer.action 在设置行上方独立一行;sidebar.settings 为 single,整行由 ui-settings-general 占用,行内结构为 [settings.launcher] [ConnectionIndicator] [DesktopUpdateIndicator],没有留给第三方把按钮放在账号栏右侧的插槽。因此本插件采用与 dshmarket、dsh-ui-tweaks 等社区插件类似的做法:认领带自有标记的 DOM 节点,用 MutationObserver 跟随重排,卸载时完整回收。

若只需把按钮放在「设置行上方那一行」,可将 lib/client.js 中的挂载逻辑改为注册 sidebar.footer.action 插槽,位置不同但路径更稳定。README 中有说明。

安装与启用

从 GitHub 安装(命令来自 README):

dsh plugin --profile desktop add 'github:W0rry628/dsh-better-settings'

也可在 DSH 插件管理器或插件市场(如 SkillHub 等社区目录)中安装,具体入口以你使用的 DSH 版本为准。

本地开发时,将仓库放在本机任意目录后:

dsh plugin --profile desktop add file:/绝对路径/dsh-better-settings

手工等价步骤:

  1. 在 $DSH_HOME/profiles/<profile>/package.json 的 dependencies 中加入 "dsh-better-settings": "github:W0rry628/dsh-better-settings"(本地开发写 "file:/绝对路径/dsh-better-settings")。
  2. 将 "dsh-better-settings" 追加到同文件 dsh.profile.bundles 数组末尾(顺序即 patch 层应用顺序)。
  3. 在 profile 目录执行 pnpm install。
  4. 重启 DSH 桌面版;客户端模块需重启生效,热更新仅在 dev:web 同时运行时有效。

依赖:@deepseek-ai/cordis ^4.0.4(peer,optional);Node >=18。

典型用法

安装并重启桌面客户端后,无需额外配置。展开侧边栏时,在左下角账号名右侧应出现齿轮;单击即可打开设置。收起为窄轨道时不显示该按钮,属预期行为。

开发者可在仓库根目录跑冒烟测试,验证落位、去重、轨道态隐藏与卸载回收:

node test/client-smoke.mjs

适用场景与注意

适合谁:经常在 DSH 桌面版里改设置、调插件 bundle 顺序或查快捷键的开发者;希望减少「账号菜单 → 设置」重复点击的用户。

运行与信任:插件以当前 DSH 进程权限在浏览器侧运行,会读写 DOM 并调用外壳提供的 openSettings。安装前建议浏览 lib/client.js 与 LICENSE,确认符合你的安全策略。

已知限制(README):

  • 依赖 triggerRow 的 CSS Module 类名子串与 aria-haspopup 语义定位行;DSH 若变更约定,需同步更新 findTriggerRow / findLauncher。
  • 打开设置优先走 React fiber 上的 openSettings;若 React 内部结构变化,会退回「点开账号菜单 → 点设置」的兜底路径。
  • 收起轨道态不显示按钮。

结尾

dsh-better-settings 把设置入口挪到侧边栏账号栏同一行右侧,复用原生 openSettings,在无合适 Slot 的场景下用 DOM 挂载实现。需要安装命令与实现细节时,以 GitHub README 为准:

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

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

小夜