前言¶
在 DeepSeek Harness(DSH)裏寫長提示詞時,默認行爲是:在聊天輸入框按 Enter 會直接發送。寫到一半想換行分段,消息卻已經發出去了。社區插件 dsh-enter-newline 只改這一處交互:Enter 插入換行,發送交給界面上的發送按鈕;Shift+Enter 與中文輸入法組合輸入期間的 Enter 行爲按 README 說明保持不變。
這是什麼¶
dsh-enter-newline 是 DSH 的客戶端插件,維護者爲 KunKun24(package.json 中作者署名爲「困困」)。分類上屬於在 Web 端注入客戶端邏輯的插件:通過 Cordis patch 與 @deepseek-ai/dsh-client-ui-slots 注入,平臺爲 web。許可證爲 MIT;當前 package.json 版本爲 1.1.0,運行環境要求 Node >= 22.13.0。
核心功能¶
下面是對 README 與 package.json 中已寫明能力的歸納。
-
Enter 換行、不發送
在 Harness 的 composer 輸入框內,單獨按 Enter 只插入一行換行,不會觸發發送。 -
發送方式不變
需要發出消息時,仍使用發送按鈕(README 未改動 DSH 其它發送快捷鍵的表述,此處不延伸)。 -
Shift+Enter保持原樣
插件通過把真實鍵盤事件的shiftKey改寫爲true,讓 Lexical 走Shift+Enter的換行路徑;dsh 提交邏輯裏對event.shiftKey === true會直接return false,從而不發送。 -
中文輸入法
組合輸入過程中按 Enter,README 寫明不會被攔截。 -
側邊欄開關
側邊欄提供「換行設置」,可開關行爲;設置保存在本機localStorage,鍵名爲dsh-enter-newline。 -
作用範圍
僅作用於 composer 內、帶[data-lexical-editor]的輸入框;會話改名、設置頁等其它輸入框不受影響。
實現要點(爲何不用 execCommand)¶
DSH 的輸入框基於 Lexical 富文本編輯器,內容由 Lexical 數據模型管理。README 記錄了早期踩坑:用 document.execCommand('insertLineBreak') 直接改 DOM 會繞過模型,Lexical 在 reconcile 時會把 DOM 重置回模型,連帶把剛粘貼進去的內容沖掉。
當前做法是不碰 DOM,只在鍵盤事件上把 shiftKey 設爲 true,交給 Lexical 處理換行。Lexical 側按 Shift+Enter 走 INSERT_LINE_BREAK_COMMAND;dsh 提交處理器在 event.shiftKey === true 時不提交。兩條路徑同時滿足時,實現「換行且不發送」。
安裝與啓用¶
DeepSeek Harness 生態採用「一切皆插件」思路;插件可在 DSH 內置市場或社區目錄發現。社區目錄頁:dsh-enter-newline(SkillHub)。源碼與說明:GitHub - KunKun24/dsh-enter-newline。
安裝前請自行查看倉庫源碼與 MIT 許可證;插件在當前 dsh 進程權限下運行,與使用任何第三方 DSH 插件的通用注意一致。
方式一:插件市場(README 推薦)¶
在 dsh 的「插件市場」裏搜索包名 dsh-enter-newline 直接安裝。README 未給出額外的 CLI 市場安裝單行命令,此處不臆造。
方式二:Release 壓縮包¶
README 示例使用 profile web 與本地 tgz 路徑:
dsh plugin --profile web add ./dsh-enter-newline-1.0.0.tgz
說明:示例文件名中的版本號爲 README 安裝示例原文;若你從 Release 下載,請以實際壓縮包文件名爲準。
方式三:手動裝到 profile¶
# 1. 複製到 profile 的 vendor 目錄
cp -r dsh-enter-newline ~/.dsh/profiles/web/vendor/dsh-enter-newline
# 2. 在 profile 的 package.json 里加一條依賴(file: 指向 vendor)
# "dependencies": { "dsh-enter-newline": "file:./vendor/dsh-enter-newline" }
# 3. 裝依賴並重啓
cd ~/.dsh/profiles/web && pnpm install && dsh web
典型用法¶
- 按上述任一方式安裝並啓動
dsh web(或你使用的 profile)。 - 打開 Harness 聊天 composer,在輸入框裏輸入多行內容:需要換行時按 Enter。
- 確認消息未自動發送後,點擊發送按鈕發出。
- 若不需要該行爲,在側邊欄「換行設置」關閉;設置寫入
localStorage: dsh-enter-newline。
需要保留「Enter 即發送」習慣時,關閉側邊欄開關即可,無需卸載。
卸載¶
README 給出的步驟:
從 profile 的 package.json 的 dependencies 和 dsh.profile.bundles 裏刪掉 dsh-enter-newline,再執行 pnpm install 並重啓 dsh。插件本身不寫業務數據。
適用場景與注意¶
適合誰: 經常在 Harness composer 裏寫長 prompt、需要 Enter 分段、又不希望誤觸發送的 Web 端用戶。
注意:
- 僅 Web 客戶端(
dsh.client.platform爲web);README 未聲明其它平臺。 - 行爲綁定 Lexical composer 輸入框;其它頁面的輸入框不受影響。
- 社區目錄與 DeepSeek / 幻方無 README 所述的官方從屬關係,安裝來源請自行覈對。
結尾¶
dsh-enter-newline 用最小侵入的方式對齊「寫提示詞時 Enter 換行」的常見編輯器習慣,實現上依賴 Lexical 與 dsh 對 Shift+Enter 的既有約定,避免直接改 DOM。進一步瞭解或提 Issue,請訪問 SkillHub 目錄頁 與 GitHub 倉庫。