dsh-plugin-undo:DeepSeek Harness 會話原地撤銷插件

前言

在使用 DeepSeek Harness(DSH)進行對話調試或智能體開發時,回退對話步驟是常見需求。大多數現有的回退插件通過 sessions.fork 將歷史前綴複製到新會話中,這會導致側邊欄出現冗餘會話,且原會話與 fork 會話的上下文管理變得複雜。

dsh-plugin-undo 提供了另一種方案:它直接在當前會話表面進行撤銷操作。這種方式不需要分叉會話,也不會修改項目文件,保持了會話 ID 的唯一性。

插件簡介

名稱:dsh-plugin-undo
作者:wang-xudong
類型:客戶端插件
協議:MIT

該插件的核心價值在於“原地撤銷”。它通過修改會話表面(surface),將最後 \(n\) 輪對話從模型可見的歷史中移除,同時在 Web UI 中將這部分內容摺疊爲緊湊的頁眉。原始會話日誌保持追加寫入(append-only)狀態,未被重寫。

核心功能

  1. 撤銷最後 \(n\) 輪:支持撤銷最近 1 輪、多輪或全部可見輪次。
  2. 無分叉會話:操作在當前會話進行,Session ID 保持不變,側邊欄不會出現重複會話。
  3. 日誌追加寫入:底層的原始會話日誌僅追加新內容,不進行重寫。
  4. UI 摺疊展示:Web 界面將已撤銷的輪次摺疊爲 ↩ 第 N 輪已撤銷 · 點擊展開 的緊湊頭部,點擊即可展開或摺疊。
  5. 模型上下文隔離:僅重置模型可見的對話歷史,項目文件不受影響。

安裝與啓用

插件通過本地文件路徑安裝。請將下載好的插件文件放置在目標路徑。

dsh plugin --profile <profile> add file:/path/to/dsh-plugin-undo

安裝完成後,重啓 profile 即可生效:

dsh --profile <profile>

典型用法

在會話處於空閒狀態時,在輸入框輸入以下命令:

  • /undo:撤銷最後 1 輪對話。
  • /undo 1:同上。
  • /undo 3:撤銷最後 3 輪對話。
  • /undo all:撤銷當前模型可見的所有對話輪次。

注意:命令執行時,會話必須處於空閒狀態。如果 UI 顯示當前有正在運行的輪次,需先停止該輪次再執行撤銷。

實現細節

插件通過以下機制工作:

  1. 表面操作:主機根據 turn/start 和 turn/end 推導當前模型可見的輪次,對尾部輪次應用 surfaceOp: { op: 'replace', start, end }。
  2. 檢查點機制:在輪次邊界外創建一個空的助手消息作爲檢查點。由於消息推導會跳過空內容,模型將只看到保留的歷史。
  3. UI 摺疊:客戶端讀取 /undo 命令節點,利用 DOM 和 CSS 將已撤銷的輪次摺疊,隱藏命令卡片本身,僅保留摺疊後的頁眉供用戶交互。

適用場景與注意

該插件適合需要在單一會話流中快速修正對話走向的場景。使用時需注意:

  • 僅支持撤銷連續的尾部輪次,不支持任意中間輪次的撤銷。
  • 僅影響模型可見的對話歷史,不會修改或刪除項目文件。
  • 必須在會話空閒時執行命令。

生態背景

DeepSeek Harness 採用插件化架構,允許開發者通過社區目錄或本地文件擴展功能。該插件收錄於社區目錄,與 DeepSeek 或幻方無官方從屬關係。

參考資料

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

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

小夜