前言¶
在 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、幻方無官方從屬關係。