dsh-message-rewind:在 DSH 裏編輯已發消息並回滾後續輪次

前言

用 DeepSeek Harness(DSH)做智能體對話時,常見做法是發一條用戶消息後,模型連續多輪改代碼、跑命令。一旦某條用戶消息寫錯、說偏,或想從中間某一步重來,原生界面往往只能新開對話或手動複製粘貼,很難「從這條消息改起,後面整段對話當作沒發生過」。若那一輪還動過工作區文件,消息回滾和磁盤狀態也容易脫節。

下面介紹社區插件 dsh-message-rewind(維護者 xCube007,GitHub 倉庫 xCube007/dsh-message-rewind):在自己發出的消息氣泡上增加 編輯 與 刪除,截斷該消息之後的所有 turn,並在有記錄時可選 連文件一起回滾。插件分類爲客戶端,面向 DSH Web 界面。

這是什麼

dsh-message-rewind 是 DeepSeek Harness 的客戶端插件:給「自己發出的消息」增加編輯、刪除能力;刪除或編輯並重發時,會去掉這條消息之後的對話,並可選擇是否把該段對話期間記錄到的文本文件改動一併還原。官方簡介爲:edit sent messages and roll back the following turns, optionally restoring recorded file changes。

插件以 npm 包 dsh-message-rewind 發佈(資料中 package.json 版本爲 1.2.1),許可證 MIT。宿主要求 DSH 0.2.1-rc.3 及以上(0.2.x)、Node.js ≥ 20;README 註明已在 0.2.1-rc.5 上驗證,低於 engines.dsh 要求時宿主啓動會拒絕加載。

核心功能

編輯已發送消息

點消息氣泡下方的鉛筆,在按鈕下方彈出編輯小窗;改完點 保存並重發。這條消息之後的內容會被截斷,然後按改後的內容重新開始。帶附件的消息不支持編輯(附件作爲消息內容的一部分存儲),但可以刪除。

刪除消息及後續對話

點垃圾桶,確認後刪除該條消息及其後的全部對話。

可選的文件回滾

編輯或刪除時,小窗會讀取「這條消息之後」記錄到的文件改動:默認摺疊爲一行「已記錄 N 處文件改動」,展開可看路徑。若有改動,可用二選一開關選擇:

  • 只回滾消息(默認):文件保持現狀;
  • 連文件一起回滾:文件恢復成該消息之前的內容。

能回滾的:文本文件的新建、修改、刪除(含同一輪裏先新建再刪掉等組合)。

無法回滾或會報錯的情況(README 表格摘要):二進制文件;工作區不在 Git 倉庫內且文件由 shell 命令修改(可在該目錄 git init 後完整記錄);會話重啓後快照過期(提示「部分改動快照已不可用」,此時只能只回滾消息);記錄在案之後文件又被改過(回滾會被拒絕);會話沒有工作區時只能只回滾消息。

安全與界面約束

有未結束的輪次時操作會被拒絕,避免與正在執行的 turn 搶寫;排隊中的消息會隨被刪記錄一起作廢,小窗會提示。只有 自己發出的消息 纔有編輯/刪除;「複製」按鈕仍在,位置不變。快照失效、非 Git 工作區等限制會在小窗裏直接標出。

底層實現上,DSH 會話日誌只追加、沒有「刪掉中間一段」的 API,插件會 fork 出截斷後的分支並處理原會話;側邊欄仍是一條同名對話,但會話 ID 會變,若在別處引用過舊 ID 需重新獲取。原會話日誌正常情況下會被刪除,僅當日志目錄佔用刪不掉時會留在歸檔裏。

安裝與啓用

需要 DSH 0.2.1-rc.3+ 與 Node.js ≥ 20。推薦從 npm 安裝,包也在社區插件市場 awesome-dsh-plugin.com 條目 中列出(社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係)。

最省事的一條命令(README 原文):

dsh plugin --profile web add dsh-message-rewind

也可在 DSH 內:設置 → 插件 → 搜索 dsh-message-rewind。

手動安裝等價於三步:在 profile 的 ~/.dsh/profiles/<profile>/package.json 增加依賴 "dsh-message-rewind": "^1.2.0";在同 profile 的 cordis.patch.yml 插入 id: message-rewind、name: dsh-message-rewind;在該 profile 目錄執行 pnpm install 後重啓 DSH 或在設置裏啓用。

裝好後,啓動日誌裏應出現 message-rewind 且狀態爲 active;刷新頁面後,自己消息氣泡下方會出現 編輯 / 刪除 / 複製。

卸載:從 package.json 去掉依賴,刪除 cordis.patch.yml 裏對應 insert 段,pnpm install 後重啓 DSH。

典型用法

  1. 點鉛筆 → 在小窗中修改正文 → 按需選擇「只回滾消息」或「連文件一起回滾」→ 保存並重發。
  2. 點垃圾桶 → 確認 刪除 → 同樣可選是否連文件回滾。
  3. 若提示「當前有未結束的輪次」,先停止正在運行的任務再操作。

小窗跟隨按鈕定位;靠近視口底部時會翻到按鈕上方,窄屏會收窄寬度,亮色主題與暗色共用同一套層級。點窗外或按 Esc 收起。

適用場景與注意

適合經常在 DSH Web 里長對話、需要改口或從中間某條用戶消息重試的開發者。需要與磁盤狀態一致時,在工作區爲 Git 倉庫、且改動爲文本文件的前提下,「連文件一起回滾」纔有意義;二進制或 shell 改文件等場景 README 已說明限制。

插件隨當前 DSH profile 加載,以 當前 dsh 進程權限 運行;安裝前建議查看 GitHub 源碼 與 MIT 許可證,確認符合你的安全策略。問題與功能建議可走 Issues。

結尾

dsh-message-rewind 把「改已發消息、刪後續輪次、可選還原文件」收進消息氣泡下的兩個按鈕,減少重開對話和手工對齊工作區的成本。目錄頁:skillhub.cn 插件頁;源碼與完整說明:github.com/xCube007/dsh-message-rewind。

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

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

小夜