前言¶
在 DeepSeek Harness(DSH)裏調試智能體,經常遇到「走了一步才發現前面的提示詞寫錯了」或者「改完文件後想回到上一次交互點」。如果手動刪掉、重寫,日誌就斷了,搜索和導出都不方便。現有的 DSH 交互方式只能新建分支,無法「就地」回退並保持歷史完整。
dsh-rewind-lite 插件提供的是「就地回退」能力:在當前會話窗口內,把對話回退到任意更早的用戶消息,只追加一條標記,不新建分支、不刪改歷史。被撤回的提示詞會回填到輸入框,可以修改後直接重發。同時,它還支持文件還原:回退時把 AI 改過的文件恢復成改動前的狀態。
這是什麼¶
dsh-rewind-lite 是一個 DeepSeek Harness 插件,由用戶 280832849 獨立維護。它不修改 DSH 客戶端代碼,而是通過官方擴展點(session.append、surfaceOp.replace、commands、slots、commandUi.decorate、tools/* 事件)實現功能。核心語義與 Claude Code 的 /rewind 一致,但只做一件事:就地回退,不建分支、不留副本。
核心功能¶
- 命令入口:提供
/rewind和/undo命令,打開官方 popupSelect 選擇目標。 - 回退到任意更早用戶消息:撤回目標及其之後的所有內容,模型上下文截斷到目標之前。
- 提示詞回填:原提示詞回到輸入框,可修改後直接重發。若
setDraft失敗,會嘗試 DOM 回填。 - 界面隱藏:被撤回的聊天行在界面中隱藏,持久化刷新/換會話/重啓後仍然隱藏。
- 只追加不刪改:日誌保留全部原文,可搜索、可導出。
- 併發與狀態守衛:生成中先取消再回退、併發回退加鎖、被壓縮遮蔽的目標拒絕、子會話拒絕。
- 二次確認:消息旁「↶」按鈕,可選擇「只回退對話」或「對話+文件」。
- 文件還原:回退時把 AI 改過的文件還原,刪掉目標之後新建的文件。
- 撤銷回退:設計如此,不可撤銷。
安裝與啓用¶
要求:DSH >=0.2.1-rc.2 <0.3.0-0,Node 22+。
方式一:從 GitHub 安裝(推薦)
dsh plugin --profile desktop add "github:280832849/dsh-rewind-lite"
方式二:本地打包安裝
npm install && npm run build && npm pack
dsh plugin --profile desktop add "file:$PWD/dsh-rewind-lite-0.4.0.tgz"
安裝完成後重啓 DSH,再刷新頁面。
卸載
dsh plugin --profile desktop remove dsh-rewind-lite
典型用法¶
- 在對話中輸入
/rewind或/undo,彈出候選列表(最新的在前)。 - 選擇一條消息,執行回退:模型上下文截斷到這條消息之前,界面隱藏這條及其之後的行,原提示詞回到輸入框。
- 修改後直接發送。
也可以手動輸入 /rewind @123 指定目標(seq 見候選列表),效果相同。
點擊消息旁的「↶」按鈕,會彈出確認對話框,可選擇「只回退對話」或「對話+文件」。
適用場景與注意¶
適合需要「在當前會話內回退並保持歷史完整」的場景,例如調試提示詞、糾正文件改錯、重新組織對話流程。
插件以 DSH 進程權限運行,安裝前建議查看源碼與許可證(MIT)。
已知限制:
- 回退不可撤銷,想恢復只能重新發消息。
- 目標消息被壓縮遮蔽後不能再回退。
- 回退標記會短暫出現在模型上下文裏,重發後與新消息並存。
- 文件備份從插件加載後開始記錄,插件裝上之前的改動沒有備份。
- 「對話+文件」會覆蓋你在 AI 之後又手動改過的文件。
短結尾¶
dsh-rewind-lite 通過「追加標記 + 表面截斷 + 文件快照」的方式,實現了同窗口內的就地回退與文件還原,保持了歷史日誌的完整性。它不修改 DSH 客戶端代碼,通過官方擴展點實現,適合需要頻繁調整交互流程的開發者。
- 目錄頁:https://www.skillhub.cn/plugins/280832849/dsh-rewind-lite
- GitHub:https://github.com/280832849/dsh-rewind-lite