前言¶
在 DeepSeek Harness(DSH)裏和模型對話時,Composer 輸入框通常只保留當前草稿。想重發上一條指令、或在幾條相近 prompt 之間切換對比,只能手動複製聊天記錄或憑記憶重打。終端裏 Shell 的「空行按 ↑ 回溯歷史」是常見習慣,但 Web 對話界面默認不會把已發送消息掛到方向鍵上。
dsh-input-history 是維護者 Dogtiti 發佈的客戶端類 DSH 插件:在 Composer 輸入框爲空時,用 ↑ / ↓ 按時間順序回溯本會話裏你已發送的用戶消息,並寫回草稿;越過最新一條後可以恢復開始回溯前的草稿。下面介紹它的能力、安裝方式與使用邊界。
這是什麼¶
插件 npm 包名爲 dsh-input-history,當前資料中的版本爲 1.1.3,許可證 MIT,要求 DSH 引擎 ^0.2.1-0。它通過客戶端注入攔截鍵盤事件,並在 Host 側調用 POST /api/composer.history 從會話日誌提取符合條件的用戶文本,再用公開的 inputActions.setDraft() 回填,與手動輸入共用同一條草稿鏈路(可撤銷、按會話持久化),不直接改 DOM。
社區目錄頁:https://www.skillhub.cn/plugins/Dogtiti/dsh-input-history
源碼與說明:https://github.com/Dogtiti/dsh-input-history
核心功能¶
方向鍵回溯與恢復草稿¶
輸入框爲空時:
- 按
↑:從最近一條已發送消息開始,逐條向更早的消息移動;到達最舊一條後停止。 - 按
↓:向更新的方向返回;越過最新一條後,恢復開始按↑之前輸入框裏的草稿。
回溯過程中,界面右下角會顯示當前位置,例如 3/19 表示在由新到舊排序的第 3 條,共 19 條可用歷史。
一旦你在回溯狀態下手動編輯輸入內容,即退出回溯模式。
何時不會接管方向鍵¶
插件刻意不與編輯器、菜單搶鍵位:
| 條件 | 行爲 |
|---|---|
| 輸入框已有文字或附件 | ↑ 仍用於光標與選區移動 |
| 焦點不在 Composer 輸入框 | 不處理 |
| 組合鍵帶 Alt / Ctrl / Cmd / Shift | 不處理 |
/ 或 @ 菜單已接管輸入 |
方向鍵歸菜單 |
歷史從哪裏來¶
Host 通過 sessions.get(id) 與 session.deriveMessages() 拉取會話消息,只保留 role: user 且 source.kind === 'user' 的文本;runtime-context、skill-catalog、time-context、user-approval 等來源會排除。相鄰完全相同的消息會合併爲一條。相同會話事件序號下的結果會緩存,默認緩存時間由配置項 cacheTtlMs 控制(默認 30000 毫秒)。
安裝與啓用¶
DSH 生態採用「一切皆插件」的思路;SkillHub 等社區目錄是獨立站點,與 DeepSeek / 幻方無官方從屬關係。安裝插件前建議自行查看倉庫源碼與 MIT 許可證——插件在當前 DSH 進程權限下運行。
方式一:實驗性市場 bundle¶
在 DSH 中打開 設置 → 插件 → 啓用實驗性市場 bundle → Discover,添加上述市場索引地址,再安裝 dsh-input-history:
https://raw.githubusercontent.com/Dogtiti/dsh-predict/main/market-index.json
方式二:npm¶
在項目或環境中安裝包:
npm i dsh-input-history
然後在 DSH 的 Plugins 頁使用「添加」,填寫包名 dsh-input-history。
配置示例¶
在插件 insert 配置中可調整行爲(以下爲 README 中的 YAML 示例形狀;各鍵默認值以文檔表格爲準):
- insert:
- id: composer-history
name: 'dsh-input-history'
config:
limit: 50
| 鍵 | 默認 | 說明 |
|---|---|---|
enabled |
true |
總開關;關閉後路由返回 503,客戶端不接管按鍵 |
limit |
200 |
保留的歷史條數(取最近) |
maxChars |
2000 |
單條消息最大字符數(保留頭尾) |
cacheTtlMs |
30000 |
相同會話事件序號下的緩存時間 |
典型用法¶
- 在 DSH Web 界面打開一場對話,確認 Composer 輸入框爲空且焦點在輸入框內。
- 按
↑:上一條、上上條……已發送的用戶消息會依次出現在輸入框中,右下角顯示當前序號/總數。 - 按
↓:向更新的消息前進;繼續按到越過最新一條後,會回到你開始按↑之前的草稿內容。 - 需要改字時直接編輯即可退出回溯;若輸入框裏已有內容或掛了附件,用
↑移動光標即可,不會進入歷史模式。
README 中的效果示意(節選):
3/19 ← 當前第 3 條(由新到舊),共 19 條
↑ 然後再開發一個插件 就是在輸入框按上下鍵 能按順序回填之前發過的消息
↑ 換
↓ 換
↓ (恢復原草稿)
適用場景與注意¶
適合:在同一 DSH 會話裏反覆微調 prompt、重發相近指令、或在幾條歷史輸入之間快速切換,而不必去滾動聊天記錄複製粘貼。
注意:
- 依賴 DSH
^0.2.1-0及公開的inputActions.setDraft();升級 DSH 後若接口變化,需關注插件倉庫 Issue。 - 歷史條數與單條長度受
limit、maxChars限制;極長消息會被截斷保留頭尾。 - 與 dsh-predict(Tab 採納預測佔位)等同屬 Dogtiti 的 Composer 增強插件,可按需組合安裝。
結尾¶
dsh-input-history 把 Shell 式的 prompt 歷史搬到 DSH Composer:空輸入框時 ↑ / ↓ 回溯本會話用戶消息,編輯即退出,並在不打擾 /、@ 菜單和已有內容編輯的前提下工作。若要安裝或查變更,可訪問目錄頁 skillhub.cn/plugins/Dogtiti/dsh-input-history 與 GitHub 倉庫 github.com/Dogtiti/dsh-input-history。