前言¶
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 進程。隨後打開 設置 → 命令面板 即可管理自定義指令。
使用方法¶
- 喚起面板:在 DSH Web 窗口內連續快速按兩次 Shift。
- 選擇與執行:輸入關鍵詞篩選命令,使用箭頭鍵選擇目標,按 Enter 執行,按 Esc 關閉。
- 管理指令:在設置菜單中添加、編輯或刪除自定義指令。
技術實現與接口¶
本插件不依賴 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 生態的兼容性。