dsh-input-history:在 DSH Composer 裏用方向鍵回溯已發送消息

前言

在 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

核心功能

方向鍵回溯與恢復草稿

輸入框爲空時:

  1. 按 ↑:從最近一條已發送消息開始,逐條向更早的消息移動;到達最舊一條後停止。
  2. 按 ↓:向更新的方向返回;越過最新一條後,恢復開始按 ↑ 之前輸入框裏的草稿。

回溯過程中,界面右下角會顯示當前位置,例如 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 相同會話事件序號下的緩存時間

典型用法

  1. 在 DSH Web 界面打開一場對話,確認 Composer 輸入框爲空且焦點在輸入框內。
  2. 按 ↑:上一條、上上條……已發送的用戶消息會依次出現在輸入框中,右下角顯示 當前序號/總數。
  3. 按 ↓:向更新的消息前進;繼續按到越過最新一條後,會回到你開始按 ↑ 之前的草稿內容。
  4. 需要改字時直接編輯即可退出回溯;若輸入框裏已有內容或掛了附件,用 ↑ 移動光標即可,不會進入歷史模式。

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。

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

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

小夜