dsh-hotkey:在 DSH Web 客户端里用键盘切换会话

前言

在 DeepSeek Harness(DSH)里并行多条会话时,侧边栏点选切换成本会随会话数量上升。部分用户习惯用浏览器标签页式的 Control+Tab 轮转,或 Control+1…9 直达前几个会话;原生界面未必把这些组合收拢到一处。下面介绍维护者 hellokidder 的客户端插件 dsh-hotkey(npm 包 @hellokidder/dsh-hotkey,当前版本 0.0.3),它为 DSH 快捷键提供统一入口:当前侧重侧边栏会话编号、轮转与跳转,后续能力计划继续集成在同一插件里。

这是什么

dsh-hotkey 分类为客户端插件,运行在 DSH Web 客户端(platform: web,immediately: true),不依赖额外构建步骤即可在浏览器端加载 client.js。它解决的核心问题是:在所见即所得的侧边栏顺序下,用 Control 组合键快速切换、跳转会话,并补充 Control+J 全量列表与双击 Option(Windows/Linux 为 Alt)的字母点击提示层。许可证为 MIT;源码与说明见 GitHub 仓库,社区目录页为 skillhub.cn 条目。

核心功能

按住 Control:前九个会话显示序号

按住 Control 时,左侧前 9 个对话行首显示 1…9;当前会话序号以品牌色高亮。第 10 个及以后不再编号(没有对应单键就不显示)。macOS 上同样使用 Control,不是 Command。

有运行、等待审批或未读完成状态的行优先显示宿主状态点,该行不显示编号。归档会话、子代理会话和空的「新会话」行不参与编号。编号占用每行标题左侧 16px 座位,按住 Control 不会让标题左右跳动。

Control + Tab:循环切换对话

  • Control + Tab:下一个对话
  • Control + Shift + Tab:上一个对话

二者均循环。顺序跟随当前渲染出来的侧边栏行(Workspace 分组、In one list、手动排序、固定、折叠或归档过滤变更后,按你看到的行顺序重排)。折叠分组和「显示更多」里尚未渲染的会话不参与 Control+Tab 轮转。

Control + 1…9:直达对应序号

Control + 1…9 直接打开对应序号的对话,序号与按住 Control 时看到的徽标一致。

Control + J:全部会话跳转面板

Control + J 打开会话跳转面板,列出全部会话(含折叠分组、「显示更多」未渲染行及其它分组)。列表顺序与侧边栏一致:前 9 项序号与徽标一一对应,其余接在后面。

在面板中可输入序号前缀(如 12)或标题片段过滤;用 ↑↓ / Tab 移动,Enter 打开,Esc 或再按一次 Control + J 关闭;关闭后焦点回到原处。面板打开期间冻结一次快照,避免输入时后台刷新导致列表重排。

会话超过 9 个时,按住 Control 约 0.3 秒会在底部提示 ⌃J · 全部 N 个对话,用以提示可用 Control+J 访问其余会话;快速短按 Control(例如组合成 Control+C)不会触发该提示。

Option + Enter:聚焦输入框

Option + Enter 从任意位置把光标聚焦到当前输入框;若设置、Review 等主面板盖住会话,会先关闭面板再聚焦。

双击 Option:字母点击提示层

双击 Option(⌥)打开或关闭点击提示层:窗口内可点击控件在左上角显示字母胶囊,样式与侧边栏 1…9 编号一致。提示层保持时,每个控件显示两字母提示码:输入第一字母保留并高亮命中项,输入第二字母才触发点击;Backspace 回退,Esc 或点击任意处关闭。该层与 Control 的会话编号、轮转互不影响。

与「新建会话」的关系

插件只使用 Control 组合,不占用 Command+N(macOS)或宿主默认的 Ctrl+N(Windows/Linux)新建会话。四个相关快捷键会出现在「设置 → 键盘快捷键」的只读分组中,便于查找。

安装与启用

npm 安装(资料原文命令如下):

dsh plugin --profile web add @hellokidder/dsh-hotkey

本地目录开发安装:

dsh plugin --profile web add "link:/absolute/path/to/dsh-hotkey"

DSH 目前没有官方插件市场;可通过自定义索引源在「发现」中安装。仓库在每次 GitHub Release 后更新 format 1 索引:

https://raw.githubusercontent.com/hellokidder/dsh-hotkey/main/market/index.json
  1. 打开「插件」页,在「实验性插件」旁点「更多」,启用「自定义插件市场」。
  2. 切到「发现」→「添加索引源」→ 粘贴上述 URL。
  3. 搜索 DSH Hotkey 并安装。

安装后在插件管理中启用;修改 client.js 后刷新页面即可加载(在带 pnpm run dev:web watcher 的 checkout 中可自动重载)。直接 dsh plugin add 仍是 README 推荐的主安装方式。

典型用法

  1. 安装并启用插件后,打开 DSH Web 客户端(桌面 App 相对浏览器更少快捷键冲突)。
  2. 按住 Control,确认前 9 个可见会话左侧出现 1…9,当前会话高亮。
  3. 用 Control + Tab / Control + Shift + Tab 在已渲染的侧边栏行之间循环。
  4. 用 Control + 3(示例)跳到第 3 个会话。
  5. 会话较多或含折叠/未渲染项时,按 Control + J,用序号或标题过滤后 Enter 打开。
  6. 需要从别处回到输入框时按 Option + Enter;需要鼠标少点按时双击 Option 启用字母提示层。

适用场景与注意

适合谁:经常在 DSH 里开多条并行会话、希望键盘切换接近编辑器或浏览器标签习惯的开发者。

平台与冲突:

  • macOS 上 Control+1…9 可能被系统「切换桌面」占用;数字跳转无反应时,可在 系统设置 → 键盘 → 键盘快捷键 → 调度中心 关闭对应桌面切换;Control+Tab / Control+Shift+Tab 一般不受影响。
  • 在 Chrome / Safari 中直接打开 Web GUI 时,Control+Tab / Control+Shift+Tab 可能被浏览器标签切换占用,Control+1…9、Control+J 也可能与浏览器快捷键冲突;README 建议桌面 App 更稳妥。

实现依赖:编号与轮转依赖会话行 DOM 上的 data-row-key="session:<id>"。DSH 升级若改动该结构,顺序可能回退到服务端默认(按 Workspace 分组 + 最近使用),需同步更新插件;插件不修改侧边栏 DOM。

安全与权限:插件以当前 DSH 进程与 Web 客户端权限运行,安装前请查阅 源码 与 MIT 许可证,自行判断是否纳入工作流。

结尾

dsh-hotkey 把 DSH 里与会话切换相关的一组 Control 快捷键和 Option 辅助操作收拢到单包,并预留同一仓库扩展更多快捷键的路径。需要安装说明与行为细节时,以 README 为准;社区索引与包元数据分别见目录页与 npm 包名 @hellokidder/dsh-hotkey。

  • 目录页:https://www.skillhub.cn/plugins/hellokidder/dsh-hotkey
  • GitHub:https://github.com/hellokidder/dsh-hotkey
羽毛球分组比赛记分
小程序二维码

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

Xiaoye