dsh-redo:編輯或重試已發送消息並原地重新生成

前言

DeepSeek Harness(DSH)是一個 append-only 的會話系統:消息一旦發出去,原生沒有”改一下再發”的入口。dsh-redo 把這件事補上——選中任意一條自己發過的消息,改文字、刪圖、加圖,或者原樣再來一次,模型上下文會原地回到那條消息之前並重新生成,而不是開一個新會話。

這是什麼

dsh-redo 是一個 DSH 客戶端插件,由 Imzl-zl 維護。它的核心價值是:在不新建會話、不重開對話的前提下,編輯或重試已發送的用戶消息,並原地重新生成。

DSH 0.2.x 系列中,消息一旦提交即追加到會話日誌,沒有撤銷或重寫的原生入口。dsh-redo 通過擴展點實現了一個完整的”撤回重發”流程:選中的消息連同它的回答立刻從對話裏消失,文字和圖片回到底部輸入框,改完正常按發送就開始新的問答。

核心功能

  • 重新生成:任意一條用戶消息都能重發,不限於失敗的消息——一鍵,不經過輸入框。
  • 編輯重發=點一下就地撤回:那條消息連同它的回答立刻從對話裏消失,不再回來;文字和圖片原樣回到底部輸入框,改完正常按發送就開始新的問答。用的就是原生 composer,不是插件自己的彈窗。
  • 圖片跟着走:存的圖讀回字節、重新掛成草稿,發送時一起上送;文件附件除外。
  • 舊內容真正離開上下文:被重寫的區間由 surface replace 遮蔽,舊消息和它之後的回答不再進入模型請求。
  • 整輪從時間線撤掉:被重寫的那一輪——你的消息、回答、工具卡、用量行——當場消失,新消息落在同一個位置,看起來就像這條消息原地重新生成。/redo 命令卡也一起隱藏。刷新後依然如此:區間是從會話日誌的 surface replace 讀回來的,不靠內存。
  • 原生操作行:時間、複製、重新生成、編輯重發排在一起,尺寸、圓角、間距、懸停行爲對齊原生。
  • 破壞性操作有確認:撤回中段消息前會提示「之後的 N 輪對話會離開上下文」;輸入框裏本來有內容時再問一句是否替換。
  • 不會誤觸發:撤回隻影響你點的那條消息及其之後;其餘會話、其餘窗口不受影響。
  • 生成中禁用:回答還在生成時兩個按鈕置灰,先停止再重發——不會把重發塞進輸入框的排隊區。

不支持

  • 文件附件:prompt 的文件通道只接受本次會話上傳換來的 receipt,客戶端沒有”按引用讀取舊文件”的 RPC,所以帶文件的消息兩個按鈕置灰,而不是靜默丟內容。
  • 太久以前的撤回不留痕:區間是從事先加載的會話窗口裏讀的。一次重寫如果發生在很早以前、已經落到窗口之外,刷新後那批舊消息會重新出現——模型上下文仍然是對的,丟的只是界面上的「撤掉」。
  • 命令行手動輸入 /redo 也會被藏:命令卡按「它撤回的目標是否已被遮蔽」判斷,插件發起的和你手敲的記錄長得一樣,所以一起隱藏。
  • 賬本里仍留着原文:會話日誌是隻追加的,撤回追加一條 replace,不刪原來那行。對模型和界面都已生效,但 dump-session 或任何回放仍能看到你撤回掉的那條文本。

安裝與啓用

需要 DSH >= 0.2.0-rc.1 < 0.3.0,並在 Web GUI 中使用。

從 npm 裝(發佈物已含構建好的 lib/,無需自己 build):

dsh plugin --profile <profile> add dsh-redo
dsh --profile <profile> --dump-config | grep redo   # 應看到 "== dsh-redo" 層
dsh --profile <profile>

或者從源碼裝(改代碼、跟進未發佈提交時用):

git clone https://github.com/Imzl-zl/dsh-redo.git
cd dsh-redo
npm install
npm run build

dsh plugin --profile <profile> add <本倉庫絕對路徑>

裝完重啓 GUI。想先拿獨立 profile 試,可以用:

dsh --profile redo-test --from-default-profile web --dump-config
dsh plugin --profile redo-test add <本倉庫絕對路徑>
dsh --profile redo-test --no-open --port 3111

典型用法

  1. 鼠標移到任意一條自己發的消息上,氣泡下方出現操作行。
  2. 點「重新生成」原樣重發:一鍵,不經過輸入框。
  3. 點「編輯重發」:這條消息立刻從對話裏撤掉,文字和圖片回到底部輸入框。該問的會先問(中段消息說明之後還有幾輪會跟着離開;輸入框本來不是空的問是否替換)。
  4. 在輸入框裏改完(增刪圖片、改文字都行),正常按發送——這一次發送就是在重寫那段對話,新的那條落在被撤掉的位置。撤掉這件事不設期限,草稿留着多久都行。

編輯不彈插件自己的對話框:內容進的是原生 composer,@ 引用、斜槓命令、圖片預覽、Esc 撤銷全是原生行爲。

帶文件(非圖片)的消息兩個按鈕置灰,因爲客戶端沒有按引用讀回舊文件的 RPC。

適用場景與注意

適合這些場景:

  • 消息發錯了(錯字、貼錯內容、圖配錯)→ 改完重發。
  • 回答不滿意 / 渠道抽風 → 原樣重發,不必等失敗才能點。
  • 想換一個問法繼續同一段對話 → 從任意一條消息重寫,後面的內容作廢。

插件以當前 DSH 進程權限運行,安裝前應檢查源碼與許可證。MIT 許可證允許自由使用與修改。

結尾

dsh-redo 通過擴展點在 DSH 0.2.x 中實現了”撤回重發”的能力,讓 append-only 的會話系統有了可編輯的入口。適合需要頻繁修正消息或重試回答的場景。

  • 插件目錄頁:https://www.skillhub.cn/plugins/Imzl-zl/dsh-redo
  • GitHub 倉庫:https://github.com/Imzl-zl/dsh-redo
羽毛球分组比赛记分
小程序二维码

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

小夜