dsh-undo:DSH 會話回溯與重編輯工具

前言

在 DSH 會話中,一旦提示詞發送,通常無法直接回退編輯。這導致開發者需要複製文本並重新生成,效率低下。dsh-undo 插件通過回溯和分叉機制,允許開發者返回到任意歷史提示詞進行重編輯。

簡介

dsh-undo 是一個爲 DSH 會話提供撤銷按鈕和側邊尺子的插件。它基於 Cordis 的可逆性範式工作:會話日誌即上下文,撤銷提示詞即恢復到之前的上下文前綴(Withdrawal),而不改變原始日誌。由 tofe98 維護,開源協議爲 MIT。

核心功能

插件提供了兩種交互方式:

  1. 會話頭部的 ↶ 按鈕
    在會話頭部顯示撤銷按鈕。懸停後會出現下拉菜單,列出之前的提示詞軌跡(按時間倒序,每條用戶或引導消息一項)。選擇其中一項,會在該提示詞的邊界前分叉會話,打開子會話並預填充提示詞文本。

  2. 左側邊尺
    在對話左側顯示一條邊尺,每條用戶或引導消息對應一個刻度。點擊刻度可跳轉到該消息,右鍵點擊刻度則執行撤銷操作(需確認)。

安裝與啓用

通過插件市場或直接運行以下命令安裝:

dsh plugin --profile web add github:tofe98/dsh-undo

典型用法

  1. 在會話中發送幾條提示詞。
  2. 懸停會話頭部的 ↶ 按鈕,選擇一條較早的提示詞。
  3. 系統會打開一個分叉的子會話,對話狀態回退到該提示詞之前,編輯器中預填充了該提示詞文本。
  4. 編輯文本並重新發送,或者直接右鍵點擊左側邊尺上的對應刻度,執行撤銷(需確認)。

技術說明

  • 分叉語義:原始會話保持不變,撤銷操作本質上是創建了一個子會話(Fork)。根據 Cordis 的範式,這被稱爲“Withdrawal”(恢復),不破壞原始日誌。
  • 重建機制:子對話通過 DSH 的投影機器重建。
  • 副作用保留:被撤銷回合的外部副作用(如文件編輯、Web 調用)不會被撤銷。這些副作用位於系統邊界之外,插件僅負責恢復對話狀態。
  • 實現細節:撤銷調用 sessions.fork({ sessionId, atSeq: boundary }) 並使用 inputActions.setDraft 預填充文本。

結尾

dsh-undo 通過分叉機制解決了 DSH 會話中無法回退編輯的痛點,適合需要在長對話中調整早期輸入的開發者。

  • 插件目錄:https://www.skillhub.cn/plugins/tofe98/dsh-undo
  • 源碼倉庫:https://github.com/tofe98/dsh-undo
羽毛球分组比赛记分
小程序二维码

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

小夜