dsh-atuin:把 DSH 裏的每條 prompt 記入 atuin 歷史

前言

用 DeepSeek Harness(dsh)幹活時,prompt 都是在會話裏輸入的,不經過 shell。想回溯“這個問題當時我是怎麼問的”“那段調優提示詞的原文是什麼”,只能一條條翻會話記錄。如果你平時已經用 atuin 管理 shell 歷史,一個自然的想法是:這些 prompt 也能進同一個歷史庫,用 atuin search 和 Ctrl-R 直接搜。

dsh-atuin 做的就是這件事。下面介紹它的原理、安裝和配置。

這是什麼

dsh-atuin 是一個 DSH 插件,由 RealAlexantuereAI 維護——更正:作者是 RealAlexandreAI,當前版本 0.1.1,MIT 許可證。它把你在 dsh web 界面中輸入的每條 prompt 追加進 atuin 的 shell 歷史,之後可以用 atuin search 和 shell 集成(Ctrl-R)搜索。

它是 pi-atuin 的移植版。dsh 沒有終端 UI,這個插件就是 dsh 與 atuin 之間的橋接。

工作原理

插件監聽 session/event → user/message 事件,對每條用戶輸入執行兩條 atuin 命令:

atuin history start -- "<prompt>"
atuin history end --exit 0 <ID>

start 啓動一條歷史記錄並返回 ID,end 以退出碼 0 結束這條記錄。

兩點值得注意:

  • 只記錄你自己輸入的 prompt,回覆、工具調用、文件內容一律不記錄。
  • 缺少 atuin 或 daemon 沒在運行時,插件靜默跳過,會話永遠不會因此中斷。

安裝與啓用

先確認本機裝好 atuin,並且 daemon 在運行(標準 atuin 安裝的一部分)。然後在 dsh 中執行:

dsh plugin --profile web add dsh-atuin

--profile web 表示安裝到 web profile。

配置

插件提供四個配置項,示例寫法如下:

- id: atuin
  name: dsh-atuin
  config:
    # atuin_bin: /opt/homebrew/bin/atuin
    # deny: "^/clear$,password"
    # max_len: 2000
    # session_match: "project-x"
配置項 作用
atuin_bin atuin 二進制路徑,默認取 PATH 上的 atuin
deny 逗號分隔的正則,匹配的 prompt 不記錄,例如上例會屏蔽以 /clear 開頭的輸入和含 password 的輸入
max_len 長 prompt 的截斷長度,默認 2000,設爲 0 關閉截斷
session_match 逗號分隔的正則,只記錄標題匹配的會話,留空表示全部記錄

隱私與數據存放

  • 只記錄你輸入的 prompt;回覆、工具調用、文件內容從不寫入。
  • deny 可以屏蔽敏感 prompt,比如包含密碼、密鑰的輸入。
  • 條目保存在本地 atuin 數據庫 ~/.local/share/atuin/history.db,數據不離開本機。

開發與測試

如果要改代碼或自己構建,倉庫提供了標準流程:

npm install
npm run typecheck
npm test          # 覆蓋文本提取、deny 規則、截斷
npm run build

針對真實 atuin 數據庫做實測(需要 daemon 在運行):

node --import tsx tests/real/real-atuin.mjs

適用場景與注意事項

適合同時使用 dsh(web profile)和 atuin 的開發者:想把散落在 dsh 會話裏的 prompt 沉澱進一個可搜索的本地歷史庫,方便複用和回溯。使用前注意以下幾點:

  1. 插件以當前 dsh 進程的權限運行。安裝任何第三方插件前,建議先讀一遍源碼和許可證(本插件爲 MIT)。
  2. 插件包要求 Node.js >= 20.0.0(package.json 的 engines 字段)。
  3. 依賴標準 atuin 安裝和運行中的 daemon。atuin 缺失或 daemon 停止時插件會靜默跳過——不報錯,但也不會有記錄,排查時先確認 daemon 狀態。
  4. 默認 max_len: 2000 會截斷長 prompt,需要完整原文就把值調大或設爲 0。

結尾

dsh-atuin 解決的問題很具體:讓 dsh 裏的 prompt 和 shell 命令共用同一份 atuin 歷史,搜索、複用都在熟悉的 atuin search 和 Ctrl-R 裏完成。實現剋制,隱私邊界清楚,壞環境下也不影響會話本身。

最後提醒:社區目錄是獨立站點,與 DeepSeek、幻方無官方從屬關係。DSH 的理念是「一切皆插件」,dsh-atuin 是這個思路下一個小而完整的例子。

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

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

小夜