dsh-hotkeys-platform

前言

DeepSeek Harness(DSH)Web 插件:快捷鍵設定平臺。

把“每個插件各自攔截鍵盤、各寫各的設置”升級爲一個註冊表服務 ctx.hotkeys。任何插件通過 ctx.hotkeys.registerAction(...) 註冊“動作 → 處理器”。動作的默認鍵、觸發範圍(scope)、描述由插件聲明。用戶的顯式改鍵統一持久化在平臺。設置頁與 /hotkeys 命令提供統一配置。

核心功能

  • 註冊表服務 ctx.hotkeys。
  • 通過 ctx.hotkeys.registerAction 註冊動作。
  • 動作描述符:id, title, description, group, scope, defaultKey, handler。
  • Scope 支持:global, input, question-card, command-palette, custom。
  • Handler 返回 false 放行。
  • 用戶綁定持久化在 localStorage 鍵 dsh.hotkeys.v1。
  • 設置頁統一配置(DSH 設置 → 快捷鍵)。
  • 命令 /hotkeys。

安裝

dsh plugin --profile web add dsh-hotkeys-platform

安裝後重啓 dsh web。

典型用法

export const inject = ['hotkeys']

export function apply(ctx: Context): void {
  ctx.effect(() =>
    ctx.hotkeys.registerAction({
      id: 'my-plugin:send-message',
      title: () => t('發送'),
      description: '發送當前消息',
      group: '消息',
      scope: 'input',
      defaultKey: 'Control+Enter',
      handler: (event, h) => {
        h.dispatchEnter(h.target ?? event.target)
      },
    })
  )
}

關鍵點說明

  • ctx.hotkeys 可選:平臺是可選項,讀不到就跳過;不要用 inject 之外的 ctx.hotkeys 直接訪問。
  • ctx.effect 包裹:registerAction 返回 disposer,fiber 卸載(HMR/禁用)時自動撤銷註冊,否則下次激活拋 already registered。
  • id 包前綴:建議 my-plugin:xxx,避免衝突。
  • Scope:global 任意處,input 文本區,question-card 提問卡,command-palette 命令菜單,custom 自定義判定。
  • Handler 返回 false:表示不消費按鍵,放行給 DSH 原生行爲。

架構與 Host 能力

架構與 dsh-better-sidebar 同構:平臺 ctx.provide('hotkeys', service),業務動作由消費插件註冊(喫狗糧),能力對等。

平臺不承載 host 能力(讀寫文件等)。如果某個快捷鍵動作要觸發 host 側能力(如執行命令、歸檔會話),由你的插件自帶 host 路由,handler 裏 fetch 即可。

配置

  • 設置頁:DSH 設置 → 快捷鍵。支持可視化編輯和錄製。
  • 命令:輸入 /hotkeys。
  • 鍵位三態:未改過(使用 defaultKey)/ 已錄製(用戶綁定)/ 已禁用(連默認也關掉)。

狀態

正在開發中,還不能使用。

鏈接

https://github.com/whitewatercn/dsh-hotkeys-platform

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

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

小夜