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