前言¶
在 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)¶
- 光標在 composer 內且草稿爲空時,工具欄會出現淡色提示:
Hold F2 to dictate(界面語言隨 DSH 的en/zh)。 - 按住 F2:開始錄音,提示變爲
Recording — release F2 to finish。 - 鬆開 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 許可證,確認符合你的環境策略。
典型用法¶
- 完成上述安裝與 voice-input bundle、模型準備。
- 在 Web DSH 中打開對話,焦點放入 composer。
- 看到
Hold F2 to dictate(或中文等價文案)後,按住 F2 說話,鬆手等待轉寫寫入草稿。 - 檢查文本,按需編輯,再自行發送(插件從不自動發送)。
- 若 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