在 DeepSeek Harness (DSH) 的使用場景中,開發者經常需要在不同的對話會話間切換,或者快速重用之前的輸入。如果依賴全局的歷史記錄,切換會話時舊的輸入內容往往會干擾當前會話,導致輸入污染。dsh-session-input-history 解決了這一問題。
這是一個由 czhzz 維護的純客戶端插件,旨在爲當前會話提供 Shell 風格的輸入歷史導航能力。
核心功能¶
該插件主要提供以下能力:
- 會話隔離的輸入歷史導航:歷史記錄嚴格限定在當前會話內,不受其他會話或工作區輸入污染。切換會話後,歷史記錄自動重置爲新會話的內容。
- Shell 歷史式交互:在對話輸入框中,使用
↑和↓方向鍵即可遍歷當前會話發送過的消息。 - 純客戶端實現:無後端交互,無 UI 常駐組件。
- 不落盤存儲:歷史數據僅存在於內存中,關閉頁面即清空。
安裝與配置¶
安裝該插件需要通過 DSH 的命令行工具執行。
dsh plugin --profile web add dsh-session-input-history
安裝完成後,插件會自動掛載到輸入框左側的插槽 conversation.input.left,並依賴 @deepseek-ai/dsh-client-ui-conversation 組件。
交互方式¶
插件接管方向鍵的邏輯如下:
- ↑(上箭頭):在草稿爲空時,載入最新的一條歷史消息。再次按下則繼續向前(更舊)。
- ↓(下箭頭):在瀏覽歷史時向後翻頁。當瀏覽到最新一條消息後再次按下,將清空輸入框並退出瀏覽狀態。
- 編輯與發送:在瀏覽歷史的過程中,可以直接編輯當前消息內容,或直接發送當前載入的消息。發送或編輯操作會立即退出瀏覽狀態。
技術實現與注意事項¶
- 依賴關係:插件依賴
@deepseek-ai/dsh-client-ui-conversation,需確保該依賴已正確安裝。 - 鍵盤事件:插件僅在輸入框獲得焦點時接管方向鍵,且不處理任何組合鍵(如 Ctrl、Alt、Shift 等),保證編輯器的原生功能不受影響。
- 實現架構:插件分爲 Host 側(空 apply,無額外行爲)和 Client 側。Client 側包含一個純邏輯的歷史提取模塊和一個狀態機,負責處理鍵盤輸入與輸入框草稿的讀寫。
- 卸載:如需移除,可執行:
dsh plugin --profile web remove dsh-session-input-history
結語¶
dsh-session-input-history 提供了一種輕量級、無狀態的方式來管理 DSH 中的輸入歷史,特別適合需要頻繁切換會話的開發者。通過命令行即可完成安裝,無需額外的配置文件。