前言¶
在 DeepSeek Harness (DSH) 的對話流程中,如果需要修改之前的用戶輸入並重新生成回覆,通常需要手動截斷歷史或新建會話。dsh-plugin-edit-regenerate 插件通過在用戶氣泡下提供「編輯」按鈕,允許你直接修改歷史消息。確認修訂後,系統會 Fork 一個新會話,從修訂後的提示開始重新生成。
插件定位¶
這是 StabCut 維護的一個 DSH 插件,歸類爲「工作流」。它的核心作用是允許你編輯對話歷史中的用戶消息,並基於修訂後的文本在 Fork 的會話中重新生成回覆。
核心功能¶
- 編輯與重新生成:點擊用戶氣泡下的「✎ 編輯」按鈕,修改文本後確認,系統會丟棄當前點之後的所有內容,並在新會話中重新生成。
- Fork 會話策略:
- 非首條消息:在當前回合末尾 Fork 新子會話。
- 首條消息:創建空白會話,使用修訂文本作爲開場。 - 附件處理:帶有附件的消息在修訂後會作爲純文本重新發送,附件本身不會保留。
- 功能保留:保留原有的「複製」功能(⧉ 複製按鈕與 ✎ 編輯並存)。
- 存儲機制:會話存儲採用追加式日誌,不支持就地截斷。
安裝與啓用¶
安裝後需重啓 DSH 才能生效。插件通過 --profile 參數指定安裝目標。
# DSH Desktop app (Electron)
dsh plugin --profile desktop add file:./dsh-plugin-edit-regenerate
# Official launcher / CLI (dsh web)
dsh plugin --profile web add file:./dsh-plugin-edit-regenerate
如果需要手動安裝,需在對應 Profile 的 package.json 中添加依賴並執行 pnpm install。
典型用法¶
- 在對話界面中,找到任意一條用戶消息。
- 點擊消息氣泡下方的「✎ 編輯」按鈕。
- 修改文本內容(或移除附件)。
- 確認修訂。
- 系統將 Fork 一個新會話,使用修訂後的文本重新生成回覆。
適用場景與注意事項¶
該插件適合需要在對話過程中修正上一輪提示的場景。使用時需注意以下幾點:
- 會話加載限制:Fork 的會話在重啓 DSH 後可能無法加載,如果父會話中包含 Harness 不識別的事件(例如
session/distill-review-request),會報錯SessionFormatUnsupportedError。遇到此問題需運行修復腳本。 - 附件丟失:修訂後的消息將不再包含附件,僅保留文本。
- 存儲不可截斷:由於存儲是追加式日誌,無法在本地直接刪除中間內容,Fork 是 DSH 平臺原生的「編輯並重新生成」實現方式。
- 更新機制:由於
pnpm會將file:依賴複製到node_modules,git pull更新源碼後,已安裝的 Profile 需手動刷新其node_modules中的副本。
故障排查¶
如果重啓 DSH 後 Fork 的會話無法加載,通常是因爲父會話日誌中包含 Harness 不識別的事件。可以使用插件提供的修復腳本處理:
node scripts/repair-session-logs.mjs
此腳本會遍歷 $DSH_HOME/sessions 下的日誌文件,將不兼容的事件標記爲 ignorable: true 並備份原文件。
總結¶
該插件通過在 UI 層提供編輯入口,配合 Fork 機制,實現了對話歷史中特定節點的重新生成。對於需要精細化控制上下文的開發者,這是一個實用的輔助工具。