DeepSeek Harness (DSH) 採用了插件化架構。在常規對話中,默認的輸入框足以滿足需求。但在處理 Markdown、代碼塊或需要精確縮進的場景時,傳統輸入框的交互限制會變得明顯。DSH-Codinput 修改了 conversation.composer.bar 槽位,將聊天輸入框替換爲類似代碼編輯器的面板,提供更接近編輯器的輸入體驗。
核心功能¶
插件通過接管宿主的原有槽位,提供以下能力:
- 三態單實例:輸入入口只有三種形態,任一時刻恰好一個,絕不與官方輸入框共存。
- 普通模式:默認接管卡片在原輸入位。
- 懸浮模式:按住卡片頂部行空白區拖動。脫出爲懸浮窗,可拖動位置與尺寸,位置與尺寸會被記憶。
- 側欄模式:打開右側欄的「Codinput」標籤。側欄收起時不讓位,由標題欄下方的圓形小球喚回。在側欄裏輸入
/codinput可直接退回官方輸入框並關閉本標籤。
- 編輯器式輸入:基於 CodeMirror 6。支持行號(可關)、當前行與行號高亮、軟換行、Tab 縮進、行列指示。
- 編輯與預覽分屏:支持 Markdown 實時渲染,嚴格對半分屏顯示。
- 撤銷歷史跨形態保留:拖成懸浮、切到側欄再回來,
Ctrl+Z依舊有效。三態共用同一臺官方輸入機,草稿即唯一事實源。 /@觸發管線:完全走官方鏈路(track → 官方 menu store → 逐項復刻的 MenuView)。候選菜單、鑽取、crumbs 與官方逐一對齊。- 模型與權限讀取:模型與思考強度讀官方共享目錄(與
/model同一狀態源);權限爲官方三預設,含完全權限的風險確認模態。 - 附件支持:支持 slash「添加 · 文件」、粘貼圖片、拖文件進卡片。點圖片縮略圖可彈原圖預覽。
- 語音輸入同步:官方桌面版的輸入框帶語音按鈕時,Codinput 在一模一樣的位置渲染一模一樣的按鈕。
- 性能與用量:復刻官方 stats dock。顯示輪次/步數 · tok/s、累計 tok · 緩存命中、上下文佔用小圈。
安裝與啓用¶
使用官方包管理器安裝,一條命令即可完成:
dsh plugin --profile web add dsh-codinput
安裝後啓用。設置 → Codinput 中可配置啓用接管、行號、字體、快捷鍵等。未啓用時,打開右側欄的 Codinput 標籤即直接啓用。
典型用法¶
- 切換懸浮模式:按住卡片頂部行空白區拖動。
- 切換側欄模式:打開右側欄的「Codinput」標籤。
- 退出側欄模式:在側欄裏輸入
/codinput。
注意事項與限制¶
插件依賴較多宿主內部結構,升級宿主後需按 TESTING.md 測試。
- 無語法高亮:產品決策(輸入面板不是代碼閱讀器)。
- 無 Esc 功能。
- 輸入入口唯一:Codinput 標籤存在期間主輸入整體隱藏(唯一輸入入口約定,瀏覽同欄其他標籤也不恢復)。
- 標籤限制:同一 pane 複製出第二個「Codinput」標籤時,第二個面板只出提示、不渲染第二個編輯面。
- 手勢限制:懸浮模式的手勢只保留「拖回底部輸入區 = 普通」。
- 第三方依賴:CodeMirror 6(MIT)、marked(MIT)、DOMPurify(Apache-2.0 / MPL-2.0)。
結語¶
DSH-Codinput 解決了 DSH 標準輸入框在複雜輸入場景下的體驗割裂問題,通過復刻官方鏈路與接口,實現了無縫接入。適合需要在 Harness 中進行代碼編寫、長文排版或精細化交互的用戶。項目源碼與詳情見 GitHub。