dsh-composer-autopair:DSH 聊天輸入框括號與引號自動配對

前言

在 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 確認是否生效。

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

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

小夜