dsh-edit-rerun:編輯歷史提示詞並在分支會話重跑

前言

在 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 與壓縮投影都由此派生。本插件走官方支持的路徑:

  1. 讀會話日誌,取出每條 user/message 且 data.source.kind === "user" 的提示詞(記憶注入、系統提醒、技能目錄、時間上下文等同類型但 source.kind 不同,不計入);
  2. 用 sessions.fork({ atSeq }) 在目標提示詞之前的 turn/end 處切分支;
  3. 子會話標題自動遞增,改好的原文寫入輸入框草稿,不自動發送。

原會話零寫入。

核心功能

  • 輸入框右側增加回環箭頭按鈕,列出當前會話第 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 在啓動時組裝模塊圖。

典型用法

  1. 打開任意有歷史的會話,點輸入框右側迴環箭頭;
  2. 在面板中選擇要改的一輪提示詞;
  3. 在 textarea 中修改文案;
  4. 點「在分支會話重跑」——新會話打開,輸入框已是改後內容;
  5. 回車發送。

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。

羽毛球分组比赛记分
小程序二维码

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

小夜