前言¶
在 DSH(DeepSeek Harness)裏寫提示詞、貼代碼片段或 JSON 時,括號、方括號、引號成對出現是常態。編輯器本身未必會像 IDE 那樣自動補全右半邊並把光標留在中間;手動補符號、再挪光標,在頻繁對話場景裏會反覆打斷思路。社區插件 dsh-composer-autopair(維護者 lov0vo)專門作用於 DSH 聊天輸入框([data-composer-input]),在輸入左半邊符號時自動補上右半邊,並把光標停在兩者之間;同時處理退格刪空對、選中文字包裹、中文輸入法提交等邊界。下面介紹它的能力、安裝方式與使用注意。
這是什麼¶
dsh-composer-autopair 是 DSH 的客戶端插件(dsh.client + dsh.bundle.patch),當前包版本 0.5.1(MIT)。分類上屬於客戶端側增強,不改動服務端邏輯。
一句話定位:在 DeepSeek Harness 聊天 composer 裏,對半角與全角共 17 組括號、引號做自動配對;設置頁輸入框、終端、右側欄編輯器、文件樹不在作用範圍內。輸入法正在組字(composition)期間插件不干預。
核心功能¶
自動配對與光標¶
輸入左半邊符號時,自動插入對應右半邊,光標落在兩個符號中間。配對錶如下(資料原文):
( ) [ ] { } " " ' ' ` `
( ) [ ] { } 【 】 《 》 〈 〉 「 」 『 』 〔 〕 “ ” ‘ ’
常見交互(README 行爲表)¶
| 場景 | 行爲 |
|---|---|
光標已在 () 中間再按一次 ) |
越過右半邊,不會變成 ()) |
光標在空引號 “” 中間再按引號 |
再嵌一對 → ““””(適配中文輸入法只給右引號 ” 的情況) |
| 引號內已有內容,再按引號收尾 | 越過右引號,正常收尾 |
選中文字後按 ( |
變爲 (選中文字),並保持原文選中 |
在 () 中間按退格 |
左右半邊一起刪除 |
中文輸入法提交 ( |
同樣補右半邊 ) |
輸入法提交右半邊 ) 且右側已有 ) |
越過,不會變成 ()) |
實現要點(便於排查)¶
插件在 document capture 階段監聽 beforeinput,主要走 Lexical 模型層(從 [data-composer-input].__lexicalEditor 取實例);拿不到編輯器或選區含 @ 引用 chip 等裝飾節點時,回退 DOM 兜底。不含 / 斜槓命令與 @ 引用能力——那是 DSH 自帶行爲,插件不覆蓋。
安裝與啓用¶
倉庫已帶構建產物 lib/client.js。官方 README 給出的安裝流程是克隆倉庫後執行 deploy.mjs(構建 + 安裝,並自動選擇 Loader 掛載方式):
git clone https://github.com/lov0vo/dsh-composer-autopair
cd dsh-composer-autopair
node deploy.mjs # 構建 + 安裝(自動選擇掛載方式)
node deploy.mjs --check # 只看會做什麼,不寫盤
node deploy.mjs --remove # 卸載(可逆)
deploy.mjs 會:由 src/autopair.mjs 生成 lib/client.js;把包複製到 <DSH_HOME>/plugins/dsh-composer-autopair/ 與 profile 的 node_modules;在 profile 的 package.json 登記 file: 依賴;並按 profile 是否已在 dsh.profile.bundles 登記本包,在 bundle 路線與 user-patch 路線之間二選一掛載 Loader 條目(兩條都插會導致 composer-autopair id 重複,dshmarket 靜態檢查可能回滾整次更新)。
環境變量:DSH_HOME(默認 ~/.dsh)、DSH_PROFILE_DIR(默認 $DSH_HOME/profiles/desktop)。
- bundle 路線(profile 已登記本包):需重啓 DSH 後 bundle 列表生效。
- user-patch 路線(profile 未登記本包):若 profile 聲明
patchReload: live,插入托管塊後可熱生效。
安裝前請自行閱讀倉庫源碼與 MIT 許可證;客戶端插件在當前 DSH 桌面進程內運行,與宿主同權限,僅安裝未審計的第三方包時需自行評估風險。
典型用法與開關¶
臨時關閉(無需卸載)¶
在 DevTools 控制台:
__dshComposerAutoPair.setEnabled(false); // 關
__dshComposerAutoPair.setEnabled(true); // 開
localStorage.setItem('dsh-composer-autopair:enabled', 'off'); // 重啓後仍然關
自檢與診斷¶
插件約每 3 秒向 localStorage 寫入自檢報告。常用鍵:dsh-composer-autopair-report(能力、統計、日誌、事件 trace)、dsh-composer-autopair:probe(裝載探針)、dsh-composer-autopair:error、dsh-composer-autopair:enabled(on / off)。
從磁盤讀取報告(默認 DSH 桌面端 Local Storage 路徑):
node tools/read-report.mjs
node tools/read-report.mjs "<leveldb 目錄>"
正常情況統計裏 viaEditor 應增長、viaDom 爲 0;imeNotSettled 持續大於 0 可能表示 DSH 輸入鏈路與插件假設不一致。LevelDB 落盤有延遲,剛操作完可等 1~2 分鐘再讀,或在控制台執行 JSON.parse(localStorage['dsh-composer-autopair-report'])。
裝好後若 caps.composerReady 爲 true,說明聊天輸入框錨點對齊;依賴 Lexical 內部字段,DSH 升級後若失效,報告中的 caps.lexicalEditor / caps.editorError 可輔助判斷,並會退回 DOM 兜底。
適用場景與注意¶
適合誰:長期在 DSH 聊天框裏寫代碼塊、結構化提示、帶中文標點對話的用戶,希望括號引號行爲接近常見編輯器自動配對習慣。
邊界(README 已知限制):
- 僅聊天輸入框;組字期間不處理。
- 依賴 Lexical 若干內部 API,大版本升級後可能需等待插件更新。
- 在 DSH 桌面端 profile
desktop(Windows)有實測記錄;其他使用同一套 Lexical composer 的版本理論上適用,以自檢報告爲準。
DSH 生態強調「一切皆插件」;社區目錄 SkillHub 插件頁 爲獨立站點,與 DeepSeek / 幻方無官方從屬關係,安裝來源以你信任的目錄或 GitHub 倉庫爲準。
結尾¶
dsh-composer-autopair 把 IDE 裏常見的括號、引號自動配對搬到 DSH 聊天 composer,並單獨處理了中文輸入法與空引號嵌套等細節。若你已在用 DSH 寫提示詞,可按 README 執行 node deploy.mjs 安裝,用 node deploy.mjs --check 預覽變更,用報告腳本或 localStorage 確認是否生效。