dsh-rewind:恢復選中輪文件並在 DSH 新會話中繼續

前言

在 DSH 裏做多輪智能體任務時,常見訴求不是單純撤銷一條回覆,而是把某條用戶消息引入後的工作區改動退回去,再從這條消息繼續。文件改動和對話歷史需要一起處理:文件要恢復,對話要能繼續。

dsh-rewind 是面向 DSH 的會話回退插件。它恢復被選中輪改變的文件,並通過 DSH 的 sessions.fork / sessions.create 在新會話中繼續。下面介紹它的能力、安裝方式和需要注意的邊界。

這是什麼

  • 倉庫:2501136589/dsh-rewind
  • 許可:MIT
  • 定位:DSH 會話回退插件
  • 目標場景:非 git 工作區中,按輪次恢復文件,並在 fork 出的新會話裏繼續對話

核心能力

  • 通過 sessions.fork / sessions.create 新建會話,把對話續到選中輪之後。
  • 在非 git 場景使用 sha256 內容尋址快照恢復文件,支持新增、刪除、修改、權限、文本與二進制。
  • 在用戶消息下方提供回退按鈕,點擊後預覽將被恢復的文件改動。
  • 提供 /rewind 命令,支持 rewind、list-files、dry-run 子命令。
  • /rewind list 或 /rewind 可列出本會話所有可回退的用戶消息。
  • fork 會話可以沿 header.parentSession 血緣鏈繼續回退父會話消息。
  • 回退範圍限制爲該會話碰過的文件,提供跨會話隔離。
  • 默認歸檔原會話;可用 archiveOriginalSession: false 關閉。

安裝與啓用

安裝要求 dsh 與 pnpm 在 PATH 上。

進入插件倉庫目錄後,執行:

dsh plugin --profile web add .

README 中還提到 npm 發佈後的安裝方式;由於是否已發佈可用未明確,若包可安裝,可嘗試:

dsh plugin --profile web add @xiaoxin/dsh-rewind

注意:bundle 行需要用 - insert: 包裹在 cordis.patch.yml 中,否則 loader 可能靜默忽略,導致按鈕不出現。

安裝後,需要完全停掉再啓動 dsh web,然後在瀏覽器裏執行 Ctrl+F5 強刷。

瀏覽器回退流程

1、打開會話,找到用戶消息下方的回退按鈕。

2、點擊按鈕,預覽將被恢復的文件改動。

3、確認後,插件先恢復文件,再通過 sessions.fork / sessions.create 新建會話。

4、新會話輸入框中填入該條用戶消息原文,可以修改後重新發送。

5、默認歸檔原會話;歸檔後原會話從側欄和搜索消失,但數據仍在磁盤。若不想歸檔,可以設置:

archiveOriginalSession: false

命令回退流程

列出本會話可回退的用戶消息:

/rewind list

也可以直接執行:

/rewind

執行回退:

/rewind <messageSeq|messageId> rewind

只預覽文件改動:

/rewind <messageSeq|messageId> list-files

或者:

/rewind <messageSeq|messageId> dry-run

注意:seq 是會話日誌的原始事件流水號,可用 /rewind list 獲取可用值。

回退邊界

  • 只能回退到開啓採集之後的 turn;啓用插件之前的輪次沒有快照,無法回退。
  • 快照邊界爲 turn;首輪沒有上一輪 turn/end,會走 sessions.create。
  • 工作區遍歷跳過 .git、node_modules 和臺賬目錄;超大或超總量會明確失敗。
  • 跨會話隔離是啓發式的;最後一個 turn 的 shell 改動可能不被歸因,會話事件缺失時退回全量差異。
  • 兩個會話改過同一個文件時,後回退的一方可覆蓋另一方的該文件改動。

適用場景與注意

適合:

  • 使用 DSH web 做多輪開發,希望從某條用戶消息重新出發。
  • 工作區不是 git 倉庫,或不想依賴 git 狀態做文件回退。
  • 需要在腳本或無 UI 環境中用 /rewind 命令完成預覽和回退。

注意:

  • 插件會以當前 dsh 進程權限運行;安裝前建議檢查源碼與 MIT 許可證。
  • DSH 沒有刪除單個會話的 RPC;默認歸檔後,原會話從側欄和搜索消失,但數據仍在磁盤。
  • 跨會話隔離依賴會話事件和快照漂移;共享工作區、shell 副作用和併發修改都可能影響回退範圍。
  • 社區目錄頁是獨立站點,不是官方應用商店;選擇插件時應自行覈對倉庫與許可。

相關鏈接

  • GitHub:https://github.com/2501136589/dsh-rewind
  • 社區目錄頁:https://www.skillhub.cn/plugins/2501136589/dsh-rewind
羽毛球分组比赛记分
小程序二维码

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

小夜