dsh-nonead-prompt-rewind:同窗口就地回退對話與可選文件還原

前言

在 DeepSeek Harness(DSH)裏做 Agent 開發時,常見做法是發錯指令、想從某條用戶消息重來,或模型改了一輪文件後希望對話和磁盤狀態一起回到更早的點。DSH 默認可以通過「在新對話中分支」繼續探索,但會新開分支或換窗口,容易留下副本、打斷當前會話節奏。若還要手動用 Git 或自己記改了哪些文件,成本更高。

下面介紹社區插件 dsh-nonead-prompt-rewind(維護者 NoneadChina,分類:工作流)。它在同一窗口、同一會話內,把對話回退到任意更早的用戶消息,並可在確認後一併還原插件追蹤過的 workspace 文件,語義對齊 Claude Code 的 /rewind,不依賴 Git 整樹快照。

這是什麼

dsh-nonead-prompt-rewind 是發佈在 npm 的 DSH 插件(包名 dsh-nonead-prompt-rewind)。刻意只做一件事:就地回退到任意遠的用戶消息,並可選擇通過輕量寫前備份還原被工具改過的文件。

核心功能

就地消息回退

目標用戶消息及其之後的內容,會同時從模型上下文和界面渲染的對話中撤回;目標消息的文本會自動回填到輸入框。全程在當前會話內完成,不新建分支、不產生殘留會話副本。

實現上遵循會話日誌 append-only:回退不刪改歷史,只在日誌末尾追加一條與官方 /compact 同類的「隱藏 + 替換」標記,把後續內容遮蔽掉。被撤回的內容仍完整留在日誌中,可在「軌跡」等面板審計;禁用插件時也可僅讓界面重新顯示(不影響日誌本身)。

輕量文件還原(可選)

對齊 Claude Code 檢查點思路:局部追蹤寫類工具(write、edit)編輯過的文件,寫前備份;每條用戶消息邊界會重掃已跟蹤文件,外部變更(命令、手改)也會被記錄。回退確認時,對話與文件一次確認、同時生效,沒有「只退對話」或「只退文件」的分模式。

限制與邊界見倉庫文檔(例如單文件默認超過 8 MiB 不備份、未被工具碰過的文件不還原、子代理編輯不追蹤)。快照關閉期間的新改動無法還原。

交互與命令

  • 每條用戶消息操作行有 ↶ 回退 按鈕;確認框會列出將被還原或刪除的文件清單。
  • 命令:/rewind(別名 /undo)打開候選列表;/rewind @<序號> 直接指定目標。
  • 設置 →「回退歷史」:按工作區保留最近 10 次回退(可通過配置項 historyLimit 調整),可標註完成 / 部分完成 / 未完成;對當前會話最新且未撤銷的那一次,可「恢復到回退之前」——只還原文件、不恢復對話,且每條只能撤一次;若回退後又改過相關文件,撤銷會被拒絕。

存儲與安全(摘要)

  • 快照默認目錄:<dsh home>/rewind-snapshots/(默認 ~/.dsh/rewind-snapshots/);回退歷史:<dsh home>/rewind-history/。
  • 快照備份可在插件配置卡關閉;另有默認關閉的快照自動清理,可通過 /snapshot-auto-cleanup 查看與配置。
  • 插件聲明:不觸碰 Git 倉庫、無網絡請求、不訪問憑據;文件備份與還原經安全加固。詳見倉庫 SECURITY.md。

界面文案跟隨 DSH 語言,內置多種 locale;插件與 DSH 均處開發者預覽階段,生產環境建議 pin 精確版本。

安裝與啓用

安裝前確認本機 DSH 版本,並在 Releases 選擇與本機 DSH 適配的插件版本。倉庫 package.json 聲明宿主支持 dsh:>=0.2.1-0 <0.3.1-0,Node.js >=24.9.0。

命令行(將 <name> 換成你的 Profile 名,<版本> 換成 Releases 中的版本號,例如資料中的 npm 包當前版本爲 0.5.1,仍以 Releases 說明爲準):

dsh plugin --profile <name> add dsh-nonead-prompt-rewind@<版本>

圖形界面:側欄「插件」→「添加插件」→ 填寫 dsh-nonead-prompt-rewind@<版本> → 安裝 → 重啓 DSH。

npm 上的 dsh-rewind 屬於其他作者,請使用 dsh-nonead-prompt-rewind。從舊包名升級時,插件條目 id 與相關設置不會自動遷移,需重新安裝;/rewind、/undo、快照目錄名與已有快照數據保持不變。

插件以當前 DSH 進程權限運行,安裝前應自行查看源碼與 MIT 許可證,評估是否適合你的工作區。

典型用法

  1. 在對話中找到要回退的用戶消息,點擊旁邊的 ↶;或輸入 /rewind / /undo 從列表選擇;已知序號時用 /rewind @<序號>。
  2. 在確認框中查看將被還原或刪除的文件列表,點擊「回退」確認。
  3. 回退立即生效:界面與模型上下文回到目標消息當時的狀態,目標消息文本已在輸入框中,修改後可重新發送。

候選列表支持方向鍵與 Enter/Esc;確認框默認焦點在「取消」,可用 ⌘/Ctrl+Enter 直接確認。

快照與歷史相關命令示例(完整說明見 README):

/snapshot-auto-cleanup                 查看狀態
/snapshot-auto-cleanup on|off          開啓 / 關閉自動清理
/snapshot-auto-cleanup max-age <天數>  設置失活閾值
/snapshot-auto-cleanup run [--apply]   預演,或加 --apply 執行

卸載插件:

dsh plugin --profile <name> remove dsh-nonead-prompt-rewind

如需刪除本地數據,可另行刪除 rewind-snapshots、rewind-history 等目錄(見 README「卸載」一節)。

適用場景與注意

適合:在同一 DSH 會話裏頻繁「從某條 prompt 重來」、且希望 Agent 寫過的文件儘量隨回退一起還原的開發者;不強制依賴 Git 的普通目錄工作流。

不適合或需另尋方案:整工作樹 / Git 級快照;子代理會話內的編輯回退;替代 DSH 內置的「在新對話中分支」。

注意:

  • /export 導出的 JSONL 仍包含已撤回內容,插件無法改動導出行爲。
  • 回退目標早於已加載歷史時,對話區可能暫時空白,需「加載更早」後再看歷史。
  • 明確不做 fork/分支回退、不做子代理備份追蹤。

與默認 DSH 行爲對比(摘自 README):

維度 默認行爲 本插件
對話回退 新建分支對話 就地回退,不切窗口
文件還原 手動 / Git 寫前輕量備份,確認後一併還原
還原依賴 常依賴 Git 或重型快照 不依賴 Git 倉庫
歷史 無統一記錄 按工作區保留最近回退,最新一次可撤銷文件改動

結尾

dsh-nonead-prompt-rewind 把「從任意用戶消息重來」收束爲同窗口的一次確認操作,並用 append-only 日誌遮蔽與寫前文件備份,在 Agent 工作流裏補齊接近 Claude Code /rewind 的體驗。

SkillHub 爲社區插件目錄站點,與 DeepSeek / 幻方無官方從屬關係;DSH 生態理念是「一切皆插件」,選用插件時請自行覈對版本與權限邊界。

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

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

小夜