whitewatercn/dsh-hotkeys-platform

whitewatercn★ 0TypeScript最后同步: 2026-08-20

在 GitHub 打开

README 摘要

正在开发中,还不能使用 dsh-hotkeys-platform DeepSeek Harness(DSH)Web 插件:快捷键设定平台。 把「每个插件各自拦截键盘、各写各的设置」升级为 一个注册表服务 ctx.hotkeys : - 任何插件通过 ctx.hotkeys.registerAction(...) 注册「动作 → 处理器」; - 动作的默认键、触发范围(scope)、描述由插件声明; - 用户的 显式改键 统一持久化在平台; - 设置页(DSH 设置 → 快捷键)与 /hotkeys 命令提供统一配置。 架构与 dsh-better-sidebar 同构:平台 ctx.provide('hotkeys', service) ,业务动作由消费插件注册(吃狗粮),能力对等。 使用示例:docs/example.md 快速开始(消费插件) 要点: - inject = ['hotkeys'] 让 Cordis 在平台就绪后才激活你的插件( ctx.hotkeys 恒存在); - registerAction 返回 disposer, 必须 包在 ctx.effect(...) 里(HMR-safe); - id 建议包前缀( my-plugin:xxx ),避免冲突。 关键点说明 点 说明 ctx.get('hotkeys') + 判空 平台是可选项,读不到就跳过;不要用 inject 之外的 ctx.hotkeys 直接访问 ctx.effect 包裹 registerAction 返回 disposer,fiber 卸载(HMR/禁用)时自动撤销注册,否则下次激活抛 already registered id 用包前缀 dsh-better-archive:open-archived ,避免与别的插件冲突 scope: 'global' 任意处可触发;若动作只在输入框有意义,改 scope: 'input' ;提问卡内用 question-card ;精确判定用 custom + target(el) handler 返回 false 表示「不消费这次按键,放行给 DSH 原生/后续动作」——例如你想让某键只在特定条件下生效,条件不满足时 return false 需要 host 能力的动作 如果某个快捷键动作要触发 host 侧能力 (读写文件、执行命令、归档会话等),平台 不承载 这些逻辑——由你的插件自带 host 路由,handler 里 fetch 即可。例如 better-archive 的「清空全部归档」动作可以这样写: 这正是平台「host 仅可选扩展」的设计:host 半只留一个可选的 hotkeys 设置命名空间,业务 host 能力一律由各插件自己的 /路由 提供。 验证 1. 重启 dsh web (peer 依赖新增需重…

在 GitHub 查看完整 README →
工具/开发deepseekdeepseek-harnessdeepseek-harness-plugindshdsh-bundledsh-plugindsh-plugin-marketdsh-plugins

分类