dsh-keynav:DSH Web 面板的键盘导航

前言

在 DeepSeek Harness(DSH)的 Web 端,提问卡、计划审阅与审批卡会接管 Composer 区域。这类面板选项多、需要逐项确认时,纯鼠标操作效率偏低。Claude Code 一类环境里常见的「方向键走位 + 空格选中 + 回车提交」习惯,在默认 DSH Web 面板里并不完整:例如问题卡在选项上按 Enter 时,宿主往往按整批提交处理,前面仍有未答题目时会报 incomplete。

下面介绍社区客户端插件 dsh-keynav(维护者 quoc187),为上述面板补齐键盘导航,且不改动宿主 React 状态、不 fork 原生组件。

这是什么

dsh-keynav 是纯客户端插件:监听面板上的 data-* 钩子(如 data-question-key、data-option-row、data-plan-review-key、data-approval-key),维护焦点并通过真实 click 驱动已有按钮。分类为客户端;当前 GitHub 星标为 0。许可证 MIT,package 版本 0.1.0。

若未来 DSH 重命名这些钩子,插件会静默失效而不是破坏 Composer——这是有意为之的容错策略。

核心功能

问题卡(Question card)

按键 行为
↑ ↓ 沿选项环行走,再进入自由文本框;两端可循环
← → 上一题 / 下一题(不循环);在文本框内仅当光标已在边缘时生效
Space 多选切换;单选则选中当前项
Enter 先提交当前高亮单选项,再点卡片自带的 Next/Submit
1–9 激活对应编号选项

焦点规则(卡片出现或回到某题时):

  1. 若已有选中项,聚焦第一个已选选项;
  2. 否则若自由文本框是唯一答案,聚焦文本框;
  3. 否则聚焦第一个选项。

插件会拦截选项上的 Enter:避免宿主一次性提交整批导致 incomplete,改为先提交高亮选项再点 Next/Submit。

计划审阅 / 审批卡(Plan review / approval)

按键 行为
↑ ↓ ← → 在决策按钮之间移动焦点
Space / Enter 激活当前聚焦按钮

两类卡片默认聚焦主按钮。当前聚焦行使用卡片自带 hover 背景 + 细 accent 内描边,与卡片的「已选中」状态(背景 + 淡边框)区分开,避免键盘光标被误认为选中态。

安装与启用

插件在 web profile 下安装;bundle 列表在进程启动时读取,仅刷新页面不会加载新插件,安装后须重启 profile。

从 GitHub 安装

dsh plugin --profile web add github:quoc187/dsh-keynav
node install.mjs --bundle-only    # adds "dsh-keynav" to dsh.profile.bundles

本地 checkout(非 git clone 场景下的开发链接)

若你已有本地源码目录,可用仓库提供的链接方式:

node install.mjs                  # link the package and register the bundle
dsh plugin --profile web install  # materialise the link

辅助命令:

node install.mjs --check          # is the profile pointing here?
node install.mjs --revert         # restore the pre-install package.json

指定 profile 目录:

DSH_PROFILE_DIR=/path/to/profile node install.mjs

安装后重启 DSH web profile,再在提问 / 计划审阅 / 审批面板中试用方向键与 Enter。

典型用法

在已启用插件的 Web Composer 中:

  1. 出现提问卡时,用 ↑ ↓ 在选项与文本框间移动;单选用 Space 或 Enter,多选用 Space 切换。
  2. 需跳题时用 ← →(不绕回)。
  3. 计划审阅或审批卡出现时,用方向键在按钮间切换,Space 或 Enter 确认。

调试时可在浏览器控制台开启日志:

localStorage.setItem('dsh-keynav:debug', '1');

会输出每次焦点决策与主按钮点击,便于对照面板 DOM 钩子是否仍与当前 DSH 版本一致。

适用场景与注意

适合谁:长期在 DSH Web 端处理多步提问、计划审阅与审批、希望少移鼠标、习惯键盘流的操作者。

权限与安全:客户端插件随当前 DSH 进程在浏览器侧运行,安装前建议阅读 GitHub 仓库 源码与 MIT 许可证,确认符合你的环境策略。

生态说明:DSH 奉行「一切皆插件」;社区目录 skillhub.cn 为独立站点,与 DeepSeek / 幻方无官方从属关系。

测试(仓库维护者自测方式,供核对行为):

npm install --no-save jsdom
node test/keynav.test.mjs

结尾

dsh-keynav 在不侵入宿主组件的前提下,为 DSH Web 提问、计划审阅与审批面板补齐方向键、空格、回车与数字键操作,并单独处理问题卡 Enter 以避免整批 premature 提交。需要时可从目录页或 GitHub 获取安装说明并重启 web profile 后使用。

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

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

小夜