前言¶
在 DeepSeek Harness(DSH)裏做多輪對話時,常見需求是:某一輪用戶提示詞寫錯了或想換說法,希望從那一輪重新跑,而不是整條會話推倒重來。就地改寫已寫入會話日誌的消息,在 DSH 裏並不合適——會話日誌是 append-only 事件流,改寫會破壞 seq 連續性與投影語義。社區插件 dsh-edit-rerun(維護者 jinchenwu1220,分類:客戶端)提供的是另一種路徑:在 Web GUI 輸入框旁增加「編輯並重跑」入口,選中歷史中的真實用戶提示詞、改字後,在官方 sessions.fork 切出的新分支裏預填草稿,由你自己按回車發送;原會話只讀,不會被寫入。
這是什麼¶
dsh-edit-rerun 是 DSH Web GUI 插件,npm 包名 dsh-edit-rerun,當前版本 1.0.0,MIT 許可證。一句話定位:編輯當前會話裏較早的一條用戶提示詞,從該輪之前 fork 出新會話,把改好的文本放進新會話輸入框,重跑由你手動提交。
與 ChatGPT「編輯並重新發送」的相似之處在於「改詞再跑」;不同之處在於結果落在新分支會話,而不是原地改寫歷史。
爲什麼用 fork 而不是改歷史¶
DSH 會話日誌(session.v4.jsonl.zstd)是單調遞增的事件流,fork、resume、replay 與壓縮投影都由此派生。本插件走官方支持的路徑:
- 讀會話日誌,取出每條
user/message且data.source.kind === "user"的提示詞(記憶注入、系統提醒、技能目錄、時間上下文等同類型但source.kind不同,不計入); - 用
sessions.fork({ atSeq })在目標提示詞之前的turn/end處切分支; - 子會話標題自動遞增,改好的原文寫入輸入框草稿,不自動發送。
原會話零寫入。
核心功能¶
- 輸入框右側增加回環箭頭按鈕,列出當前會話第 1..N 輪真實用戶提示詞(首行摘要)。
- 選擇一條後在面板 textarea 中編輯,點擊「在分支會話重跑」打開新會話,改後文本已預填。
- 宿主半提供
GET /dsh-edit-rerun/turns?sessionId=…,瀏覽器半註冊到conversation.input.right槽位。 - 零 npm 依賴、無構建產物,宿主只讀日誌並調用 fork;不接觸
sessionPersistence等寫路徑。
安裝與啓用¶
前置:DSH 0.2.x(Web GUI / 桌面版),Node ≥ 22;package.json 中 engines 要求 dsh 爲 >=0.2.1-rc.5 <0.3.0-0。
npm 安裝(已發佈)¶
dsh plugin --profile desktop add dsh-edit-rerun
也可從 v1.0.0 Release 下載 dsh-edit-rerun-1.0.0.tgz 後本地安裝。無論哪種方式,裝完後須把 dsh-edit-rerun 加入 dsh.profile.bundles(或在 GUI 裏通過 plugin_manager 的 install_bundle 一次完成包安裝與 bundle 註冊)。
其他方式¶
GUI 中可讓 agent 克隆倉庫後用 install_bundle 裝入當前 profile;命令行也可 dsh plugin --profile desktop add 指向本地目錄,並在 ~/.dsh/profiles/desktop/package.json 的 dsh.profile.bundles 中登記包名。開發時可軟鏈到 node_modules 並同樣加入 bundles。
裝完必須重啓 DSH 一次:瀏覽器半 bundle 在啓動時組裝模塊圖。
典型用法¶
- 打開任意有歷史的會話,點輸入框右側迴環箭頭;
- 在面板中選擇要改的一輪提示詞;
- 在 textarea 中修改文案;
- 點「在分支會話重跑」——新會話打開,輸入框已是改後內容;
- 回車發送。
Esc 或點擊面板外可關閉面板。
邊界與同類插件¶
| 情形 | 行爲 |
|---|---|
| 第 1 輪提示詞 | 不可重跑(前面無已完成 turn 可 fork),按鈕顯示「第一輪不可重跑」並禁用 |
| 正在跑的一輪 | 可選,邊界取上一個 turn/end |
用過 /compact |
提示詞仍從日誌讀取,行爲不變 |
| 自動發送 | 不做,僅預填草稿 |
社區另有 dsh-plugin-message-edit,提供版本樹與分支後自動提交;若需要最小實現、絕不往原會話寫、也不代按發送,選本插件即可。
適用場景與注意¶
適合:已在 DSH Web GUI 里長對話、需要從中間某輪改 prompt 做 A/B 對比或糾錯,且希望原會話審計鏈不被改寫的開發者。
安裝前請自行查看 GitHub 源碼 與 MIT 許可證;插件以當前 DSH 進程權限運行,安裝即信任維護者代碼。會話日誌格式大版本升級時,可能需要同步調整 log.js 中的 turnsFromEvents。
結尾¶
dsh-edit-rerun 用官方 fork 把「改歷史提示詞」表達爲「分支 + 預填重跑」,接觸面小、原會話只讀。目錄頁:https://www.skillhub.cn/plugins/jinchenwu1220/dsh-edit-rerun;倉庫:https://github.com/jinchenwu1220/dsh-edit-rerun。