dsh_PromptRecall:在 DSH Web 輸入框用 ↑/↓ 召回歷史 prompt

前言

在 DSH Web GUI 裏調試智能體,prompt 很少一次寫對。想找回幾輪之前輸入過的一段提示詞,只能向上翻聊天記錄、手動複製再粘貼;切換會話或重啓之後,連可翻的地方都沒有。終端裏有 history,Web 輸入框此前沒有對應物。

dsh_PromptRecall 解決的就是這個問題:仿照 Codex 的交互,在會話輸入框按 ↑/↓ 瀏覽歷史 prompt,且歷史跨會話、跨重啓持久保留。

DSH 的理念是「一切皆插件」,輸入歷史這類交互增強同樣以插件形式接入。下面按功能、存儲設計、安裝步驟依次介紹。

這是什麼

dsh_PromptRecall 是一個仿 Codex 的 DSH Web GUI 輸入歷史插件,由 liguanyu 維護,許可證爲 MIT,package.json 標註版本 1.0.0。需要說明的是,倉庫與 README 中的名稱寫作 dsh_PromptRecall,而 package.json 中的包名是 dsh-prompt-recall,兩種寫法指向同一個項目,覈對來源時以 GitHub 倉庫爲準。

它解決的問題很具體:讓會話輸入框獲得類似終端 history 的能力,並且歷史在頁面刷新、進程重啓之後仍然可以召回。

鍵位與交互

安裝後無需額外配置,常用按鍵如下:

按鍵 行爲
↑(空草稿) 進入歷史瀏覽,從最新條目開始
↑ / ↓(瀏覽中) 向舊 / 向新移動;最舊處不迴繞
↓(最新項再按) 清空輸入框並退出瀏覽
↑ / ↓(非空草稿、正文中間、有選區、彈窗打開) 交還編輯器,只移動光標或候選
Esc(非空草稿) 清空草稿並存入歷史,按 ↑ 可找回
Esc(瀏覽中) 退出瀏覽;草稿爲空時不做任何事

這裏的「空草稿」指語義空:文本、附件、mention 全空纔算空,此時按 ↑ 纔會進入瀏覽。

按鍵接管有明確的邊界:只要草稿非空、光標停在多行正文中間、存在選區,或彈窗處於打開狀態,方向鍵一律交還編輯器,絕不誤傷你正在寫的草稿。

Esc 草稿保險值得單獨一提:寫了一大段草稿又決定清空重來時,Esc 會把這段文本存入歷史(僅文本),之後按 ↑ 就能找回。

瀏覽歷史時,輸入框上方會出現一個位置 pill,顯示當前所處位置,例如 ↑ 2/38。

當前對話優先

歷史不是簡單的全局時間線。回到某個對話時,插件先召回該對話自己的歷史;繼續按 ↑,才進入其他對話的歷史。

README 給了一個可復現的順序示例:會話 A 依次輸入 a、b、c,切到會話 B 輸入 e、f,再切回 A 後按 ↑ 的順序是 c → b → a → f → e。也就是當前對話優先,全局歷史兜底。

兩層歷史設計

歷史分爲兩層:

1、持久層:跨會話的 JSONL 文件,只存文本;

2、局部層:當前會話的召回列表,包含 Esc 暫存的草稿。

每條記錄帶穩定單調 ID,裁剪只刪最舊整行、不重編號。局部層相鄰且完全相同的條目會摺疊爲一條,持久層則保留重複記錄。

數據存儲與容量

歷史寫入 DSH 主目錄下的 prompt-history.jsonl(未設置 DSH_HOME 時默認 ~/.dsh/prompt-history.jsonl),每行一條 JSON 記錄。只保存純文本,不保存圖片、mention 綁定或其他附件內容。歷史目錄不存在時會在首次寫入時自動創建,無需手動準備。

容量限制:

  • 持久文件約 10 MB,超限時刪除最舊整行,永遠保留最新一條;
  • 當前會話的局部召回列表上限 200 條 / 256 KB,從最舊淘汰。

想清空全部歷史,點擊位置 pill 上的 × 兩次(3 秒內):第一次點擊按鈕變爲「確認?」,第二次執行清空,包括持久文件。

安裝與啓用

前置條件:一個已安裝 pnpm 的 DSH 環境,dsh plugin 內部會把安裝動作轉發給 pnpm。

從 GitHub 安裝,執行:

dsh plugin --profile web add github:liguanyu/dsh_PromptRecall

這條命令會把插件裝入 web profile。如果想改源碼,走本地安裝:

git clone https://github.com/liguanyu/dsh_PromptRecall
cd dsh_PromptRecall
pnpm install          # link 安裝沿倉庫真實路徑解析依賴,需先在倉庫內安裝
dsh plugin --profile web add .

本地安裝使用 pnpm 的 link: 協議,改代碼後重啓即生效、無需重裝;由於 Node 會解析鏈接的真實路徑,要先在倉庫內執行一次 pnpm install,讓運行時依賴就位。github: 安裝不需要這一步,依賴隨包一起裝入 profile 樹。

經過上面的步驟,重啓 DSH Web 即可生效:

dsh web

插件會成爲 web 組合中的一行,隨啓動自動加載,無需任何手動 define/run 步驟。

適用場景與注意事項

適合的場景:

  • 經常在 DSH Web 裏迭代長 prompt,需要找回幾輪之前的版本;
  • 多會話並行工作,希望每個對話優先召回自己的歷史;
  • 習慣寫完又清掉重寫,需要 Esc 草稿保險兜底。

幾點注意:

1、插件以當前 dsh 進程的權限運行,能讀寫 DSH 主目錄下的歷史文件。安裝前建議先查看源碼與許可證(本項目爲 MIT),確認無誤再裝。

2、歷史只存純文本,但已發送和 Esc 暫存的內容都會落盤;如果 prompt 中包含敏感信息,可隨時用 pill 上的 × 清空。

3、歷史跨會話共享,其他會話按 ↑ 也能走到當前會話的記錄,介意這一點的話需要自行清空歷史。

小結

dsh_PromptRecall 把終端 history 的使用習慣帶到了 DSH Web:一個 ↑ 就能找回上一條 prompt,歷史跨會話、跨重啓都在,且按鍵路由和裁剪策略都做了明確邊界。如果你日常在 Web GUI 裏調 prompt,值得裝一份試用。

  • GitHub:https://github.com/liguanyu/dsh_PromptRecall
  • 目錄頁:https://www.skillhub.cn/plugins/liguanyu/dsh_PromptRecall

需要說明的是,上述目錄頁爲社區站點,與 DeepSeek、幻方無官方從屬關係。

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

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

小夜