dsh-macos-settings-shortcut:在 macOS 上用 Cmd+, 打开 DSH Desktop 设置

前言

DSH Desktop 的 Web 壳里本身就有设置对话框,但在 macOS 上缺少与系统习惯一致的快捷键:许多 macOS 应用用 Cmd+, 打开偏好设置,而默认壳层没有把这个手势接到现有 UI 上。若每次都要点账户菜单或设置按钮,在频繁改配置、调试智能体工作流时会多一步操作。

下面介绍社区维护的 profile 层插件 dsh-macos-settings-shortcut(维护者 Qulierm)。它不改签名应用包内的文件,只在 desktop profile 里注入一段浏览器端逻辑,让 Cmd+, 打开壳层已经渲染的设置入口。

这是什么

dsh-macos-settings-shortcut 是一个面向 DSH Desktop desktop profile 的小型 bundle(bundle id:dsh-macos-settings-shortcut),目标目录为 $DSH_HOME/profiles/desktop(默认 ~/.dsh/profiles/desktop)。

插件在文档页 SkillHub 目录 与 GitHub 仓库 发布;SkillHub 为社区插件目录,与 DeepSeek / 幻方无官方从属关系。当前 package 版本为 0.1.0,许可证 MIT。

核心功能

快捷键行为

在 macOS 上,插件在 document 上注册 capture 阶段的 keydown 监听,只识别一种组合:

  • metaKey 按下,ctrl / alt / shift 均未按下;
  • 键位为 event.key === "," 或 event.code === "Comma"(与键盘布局无关);
  • 忽略按键连发与 IME 组合输入。

识别成功后会对事件 preventDefault() 并 stopPropagation(),避免浏览器或编辑器里其它 Cmd+, 处理程序同时响应。

如何打开设置(两种壳层)

插件不 patch 壳层源码,只读取当前 DOM:

  1. DSH Desktop 2.0.14 及更新(账户菜单):壳层在 settings.launcher 槽位放账户按钮,设置项为该菜单第一行。插件会先快照已挂载菜单,点击折叠的 launcher,再点击新出现且可见菜单的第一行(支持 React 同步或异步挂载,必要时用短时 MutationObserver,上限 1000 ms)。
  2. 较旧壳层(对话框按钮):若 launcher 回退为内置对话框按钮,则直接点击该按钮,且仅当按钮内包含 settings.trigger 槽位锚点时才视为有效(避免误点上下文计量、用量统计等同样带 aria-haspopup="dialog" 的控件)。

安全与边界

文档中强调的几条行为 worth knowing:

  • 若设置对话框已打开(含 settings.header 的 [role="dialog"][aria-modal="true"]),Cmd+, 只会占用手势,不会关闭对话框;launcher / trigger 在 aria-expanded 不为 "false" 时也不会被点成关闭。
  • 账户菜单路径在「恰好出现一个可见新菜单、launcher 仍展开、首行是普通可用可见非子菜单行」等条件不满足时不点击(fail closed)。
  • 浏览器端无运行时依赖,不读按钮文案、React 内部、Electron API 或应用文件;无网络、无文件系统、无额外权限声明。

接入方式(profile / Cordis)

组件 作用
cordis.patch.yml 在 profile 的 Cordis 树插入一行(id/name:dsh-macos-settings-shortcut)
lib/index.js Cordis host 侧占位插件,使该行处于 active
lib/client.js 浏览器 bundle,经 window.__ModuleLoader__.load 注册
package.json → dsh.bundle.patch 指示 DSH 应用 bundle 层 patch
dsh.client.platform: "web" 标记为 Web 客户端包,由 @deepseek-ai/dsh-client-modules 扫描并注入页面

环境与兼容

项 说明
操作系统 仅 macOS;其它平台插件不生效
DSH Desktop 支持账户菜单壳(2.0.14+)与旧版对话框 trigger 壳;package.json 中 dsh.compatibility.dshReleases 目前仅记录 0.1.5-rc.2 为 compatible,2.0.14 账户菜单路径由测试套件对照已安装客户端产物验证(见仓库 README Release status)
Node.js ≥ 20(构建、测试与 profile 安装脚本用,非运行时)
包管理 构建与安装流程使用 pnpm(packageManager: pnpm@11.8.0)
运行依赖 无;浏览器 bundle 自包含

安装与启用

前提:已安装 DSH Desktop、本机有 Node ≥ 20 与 pnpm,并已知 DSH 主目录($DSH_HOME 或默认 ~/.dsh)。安装脚本假定你在该插件仓库根目录下执行(README 中的 checkout 指本地已有该仓库副本)。

先做 dry-run,确认将要写入的内容:

node scripts/install.mjs --dry-run --profile desktop

确认无误后再安装到 desktop profile:

node scripts/install.mjs --profile desktop

常用选项(摘自 README):

参数 含义
--profile <name> 注册 bundle 的 profile,默认 desktop
--dsh-home <path> DSH 主目录,默认 $DSH_HOME 或 ~/.dsh,须为绝对路径
--dry-run 只打印计划变更,不写盘
--pnpm <path> 指定 pnpm 可执行文件,默认 PATH 上的 pnpm

仓库还提供 pnpm run build、pnpm test 用于从 src/ 生成 lib/ 并跑测试;测试不修改本机 live DSH 安装。

典型用法

安装并完成 desktop profile 加载后,在 macOS 上打开 DSH Desktop Web 客户端:

  1. 聚焦应用窗口(确保快捷键落在壳层页面而非其它原生控件)。
  2. 按下 Cmd+,。
  3. 若设置未打开,应弹出已有设置对话框,或通过账户菜单打开设置首项;若设置已打开,快捷键被消费且界面保持不变。

无需额外配置文件或 CLI;行为完全由 profile 中的 client bundle 与当前壳层 DOM 结构决定。

适用场景与注意

适合谁:长期在 macOS 上使用 DSH Desktop、希望与 macOS 应用习惯一致的 Cmd+, 打开设置,且接受通过 profile 层扩展而非改应用包的开发者。

权限与安全:插件以当前 DSH 进程及浏览器页面的权限运行;host 侧为 no-op Cordis 行,browser 侧仅 DOM 查询与点击,文档声明无 host capability。安装前建议阅读 源码与 LICENSE,并用 --dry-run 看清 install 脚本将改动的 profile 路径。

局限:非 macOS 无效果;壳层 markup 变更可能导致选择器失效(仓库含只读读取 /Applications 下已安装 client bundle 的对照测试,无 DSH Desktop 时会 skip)。dsh.compatibility 元数据与最新壳层发布节奏可能不同步,升级 DSH Desktop 后若快捷键无响应,应对照 README 兼容表与 issue 跟踪。

结尾

dsh-macos-settings-shortcut 用 profile 注入的方式补上 macOS Cmd+, 与 DSH Desktop 现有设置 UI 之间的缺口,不修改签名应用、不申请额外权限。需要详情、构建与测试说明时,见 GitHub README;在 SkillHub 浏览条目见 目录页。

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

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

小夜