dsh-command-palette:DeepSeek Harness 的键盘优先命令面板

前言

DeepSeek Harness (DSH) 的核心设计理念是插件化。在使用过程中,频繁切换会话、查找设置或管理工作区通常依赖鼠标点击。dsh-command-palette 插件提供了一个键盘优先的命令面板,旨在减少鼠标操作,通过快捷键快速访问核心功能。

功能

该插件为标准版 DSH 提供了一个统一的命令入口,主要包含以下能力:

  • 双 Shift 唤起:在 DSH Web 窗口内连续按下两次 Shift 键即可唤起面板。插件不注册系统级全局快捷键,仅监听当前获得焦点的窗口。
  • 会话管理:面板默认展示最近更新的六个有效会话,支持按标题、工作目录、Agent 预设或 ID 进行搜索。
  • 工作区与设置:支持在工作区之间切换或绑定,并提供设置页面的直达入口。插件会自动读取 DSH 已注册的设置菜单,因此其他插件新增的设置菜单也会自动出现在“设置”分组中。
  • 自定义指令:允许保存常用 Prompt。指令启用“复用专属会话”后,首次执行会创建会话并保存绑定;后续执行继续向同一会话发送内容。如果绑定会话已经归档或不可用,插件会自动创建新会话。
  • 扩展接口:插件在 Client Context 中提供了 commandPalette 服务,允许其他插件注册附加命令或触发面板。

安装与启用

使用官方安装命令将插件添加到 Web Profile:

dsh plugin --profile web add dsh-command-palette

安装完成后,重启当前的 DSH Web 进程。随后打开 设置 → 命令面板 即可管理自定义指令。

使用方法

  1. 唤起面板:在 DSH Web 窗口内连续快速按两次 Shift。
  2. 选择与执行:输入关键词筛选命令,使用箭头键选择目标,按 Enter 执行,按 Esc 关闭。
  3. 管理指令:在设置菜单中添加、编辑或删除自定义指令。

技术实现与接口

本插件不依赖 Electron、DSH Desktop preload 或任何 window.dshDesktopCommandPalette 全局对象。所有会话、工作区、设置和 UI 均通过标准 DSH Client 服务实现。

自定义指令的数据存储在 DSH 设置系统的 command-palette.commands 中,不单独创建数据库。

对于开发者,插件提供了以下服务接口供扩展使用:

  • registerProvider(provider):注册命令 Provider,返回卸载函数。
  • collect(context?):收集当前所有扩展命令。
  • open() / close() / toggle() / isOpen():面板状态控制。
  • subscribe(listener):监听打开状态或 Provider 变化。

扩展插件可以通过 inject commandPalette 服务来实现命令注册:

exports.inject = ['commandPalette']

exports.apply = (ctx) => {
  ctx.inject(['commandPalette'], (scope) => {
    scope.effect(() => scope.commandPalette.registerProvider({
      id: 'my-plugin',
      collect: () => [{
        id: 'open-dashboard',
        group: 'features',
        icon: '⌘',
        title: '打开控制台',
        subtitle: '由扩展插件提供',
        keywords: ['dashboard'],
        run: () => openDashboard()
      }]
    }))
  })
}

注意事项

  • 兼容性:本插件兼容标准版 DeepSeek Harness、@deepseek-ai/dsh 版本 0.1.1-rc.2 及 Web Profile。
  • 权限范围:插件仅监听当前获得焦点的窗口,不涉及桌面原生浏览器标签、Electron IPC 协调或原生视图的协调。
  • 开发验证:项目包含 npm test 和 npm run check 脚本用于验证。

结语

dsh-command-palette 通过统一的命令面板简化了 DSH 的日常操作流程,特别是对于需要频繁切换上下文或使用特定指令的用户。它通过标准的扩展接口保持了与 DSH 生态的兼容性。

更多详情与源码,请访问:GitHub 仓库 | 社区目录

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

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

小夜