dsh-voice-ptt:在 DSH 輸入框裏按住單鍵說話,鬆手即寫入草稿

前言

在 DeepSeek Harness(DSH)裏寫提示詞,鍵盤仍是主路徑;偶爾需要口述長句或不想打斷思路時,若只能點按鈕開錄、再點結束,或要記住組合鍵,成本會偏高。官方快捷鍵服務只分發 keydown,且對無修飾鍵綁定有限制,「按住說話、鬆開結束」很難做成 Settings 裏的一條快捷命令。

下面介紹社區插件 dsh-voice-ptt(維護者 eicon-xyz):在 Web 端輸入框(composer)聚焦時,按住一個鍵說話,鬆開鍵,識別結果插入當前光標處的草稿,不自動發送。插件歸類爲客戶端,當前 GitHub 星標爲 1。

這是什麼

dsh-voice-ptt 是面向 DeepSeek Harness 的 Push-to-talk 聽寫插件:在 composer 裏按住單個鍵錄音,鬆開後轉寫,文本落在草稿裏供你審閱後再發送。

宿主側(lib/index.js) intentionally 爲空;行爲都在瀏覽器端(lib/client.js),通過 dsh.client 掛載。許可證爲 MIT,npm 包版本 0.1.0(以倉庫 package.json 爲準)。

核心功能

默認交互(F2)

  1. 光標在 composer 內且草稿爲空時,工具欄會出現淡色提示:Hold F2 to dictate(界面語言隨 DSH 的 en / zh)。
  2. 按住 F2:開始錄音,提示變爲 Recording — release F2 to finish。
  3. 鬆開 F2:音頻轉寫後,文本插入光標位置。

無需記憶組合鍵;README 概括爲:Hold F2, release, done.

錄音過程中的取消與邊界

  • 按 Esc,或在錄音時按下其他鍵(例如本打算輸入的字母),會取消並丟棄本次錄音。
  • 窗口失焦或切走標籤頁會取消錄音,避免錄到無關聲音。
  • 超過識別器時長上限會自動停止並轉寫已錄部分。

更換按住鍵

提示文案本身是可點的按鈕:點開候選鍵,選一項後立即生效,並寫入 localStorage 記住。

內置候選包括 F2(默認)、F4、Insert、Right Ctrl、Right Shift 等;文檔說明了各鍵的取捨(例如 Right Shift 在 Windows 上連按可能觸發粘滯鍵)。插件能識別「按住鍵本身是修飾鍵」,不會誤當成組合鍵把事件放行出去。

若要擴展候選,需改 lib/client.js 頂部的 KEY_OPTIONS({code, labelKey} 數組,code 爲 KeyboardEvent.code,labelKey 對應同文件 zh/en 字典項)。

與官方快捷鍵的分工

@deepseek-ai/dsh-client-shortcuts 只處理 keydown,沒有 keyup 來結束「按住」;且無修飾鍵綁定會被拒絕,Web 端和絃也受平臺白名單約束。因此「單鍵按住說話」無法註冊成快捷命令;本插件在 document 級監聽 keydown / keyup 自行處理鍵盤,代價是不會出現在 Settings → Shortcuts,改鍵在 composer 提示裏完成。

文檔還說明了焦點不在 composer、終端內、對話框打開、或 Ctrl+F2 等帶修飾鍵按下時的行爲(不搶錄、讓行、不攔截等)。

技術要點(簡述)

  • 插入草稿:通過會話級 inputActions(captureInsertion + insertText),在 conversation.input.left 註冊常駐項,負責狀態行、焦點提示與改鍵 UI。
  • 錄音:MediaRecorder 經 OfflineAudioContext 重採樣爲 16 kHz 單聲道 PCM16 WAV(與官方 voice-input 一致),再調用宿主 speech.transcribe。

安裝與啓用

插件聲明瞭 dsh.bundle.patch,安裝命令會把層疊寫入 profile 的 bundle 並掛載,無需手改 cordis.patch.yml。

Web profile 安裝:

dsh plugin --profile web add dsh-voice-ptt

若從 Git 檢出並固定 revision(資料原文格式,<commit> 換實際提交):

dsh plugin --profile web add 'github:eicon-xyz/dsh-voice-ptt#<commit>'

依賴語音識別能力:需安裝並啓用 @deepseek-ai/dsh-experimental-voice-input-bundle,並一次性準備模型(約 230 MB)。識別器未就緒時,按住鍵會在狀態行顯示可見原因,而不是靜默失敗。

插件以當前 DSH 進程權限運行;安裝前請自行查看源碼與 MIT 許可證,確認符合你的環境策略。

典型用法

  1. 完成上述安裝與 voice-input bundle、模型準備。
  2. 在 Web DSH 中打開對話,焦點放入 composer。
  3. 看到 Hold F2 to dictate(或中文等價文案)後,按住 F2 說話,鬆手等待轉寫寫入草稿。
  4. 檢查文本,按需編輯,再自行發送(插件從不自動發送)。
  5. 若 F2 衝突,點工具欄提示打開候選,改用 F4、Right Ctrl 等。

草稿非空時仍可使用(測試用例 nonempty-draft.cjs 覆蓋追加行爲)。轉寫結果在松鍵之後纔出現,無流式字幕。

適用場景與限制

適合:主要在 Web 端使用 DSH、希望口述進輸入框且保留「人工確認再發送」的流程;需要單鍵 PTT、不想綁複雜快捷鍵的開發者或寫提示詞較多的用戶。

限制(README 明確列出):

  • 僅 Web 表面;桌面原生鍵盤橋未接此插件。
  • 無流式字幕,松鍵後纔出字。
  • 同時只支持一個按住鍵,候選列表外需改 KEY_OPTIONS。
  • Node 引擎要求 >=20(包元數據)。

社區目錄頁:skillhub.cn/plugins/eicon-xyz/dsh-voice-ptt。該目錄爲獨立社區站點,與 DeepSeek / 幻方無官方從屬關係;DSH 生態強調「一切皆插件」,本插件是其中一條客戶端擴展路徑。

結尾

dsh-voice-ptt 把「按住—說話—鬆開—進草稿」收進 composer 一側:默認 F2,可點提示改鍵,並依賴官方 experimental voice-input 做轉寫。若你的場景是 Web 寫 agent 提示、口述長段再改字發送,可按 README 安裝 bundle 與本插件後直接在輸入框試用。

  • 目錄頁:https://www.skillhub.cn/plugins/eicon-xyz/dsh-voice-ptt
  • 源碼與說明:https://github.com/eicon-xyz/dsh-voice-ptt
羽毛球分组比赛记分
小程序二维码

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

小夜