dsh-turn-fork:DeepSeek Harness 會話的按回合編輯、重試與版本樹導航

前言

在 DeepSeek Harness(下稱 DSH)中,一個已確定(settled)的用戶消息往往不是孤立文本,而是後續所有回合的前置條件。對於需要修正提示、重跑任務或比較不同分支結果的 DSH 使用者來說,核心問題不是“再發一條新消息”,而是:能否回到某個已確定的用戶消息,修改它,並讓會話從該回合重新運行?

dsh-turn-fork 就是針對這個問題提供的 DSH 插件。它圍繞“回合”組織編輯、重試、重新生成和版本樹導航,並強調分支日誌在 dsh 進程重啓後仍可讀取。

這是什麼

ruby1304/dsh-turn-fork 是面向 DeepSeek Harness 會話的插件,許可證爲 MIT。它的核心定位是 turn-atomic:圍繞單個已確定用戶消息做編輯與重跑,而不是簡單地在會話末尾追加新消息。

基礎信息如下:

  • 插件名:dsh-turn-fork
  • 許可證:MIT
  • 安裝命令:dsh plugin add dsh-turn-fork
  • 插件目錄頁:https://www.skillhub.cn/plugins/ruby1304/dsh-turn-fork
  • GitHub:https://github.com/ruby1304/dsh-turn-fork

package.json 中與本次介紹相關的關鍵配置如下,說明它面向 DSH web 客戶端,並注入若干 DSH 客戶端模塊:

{
  "version": "0.1.0",
  "dsh": {
    "client": {
      "platform": "web",
      "inject": [
        "@deepseek-ai/dsh-client-connection",
        "@deepseek-ai/dsh-client-runtime",
        "@deepseek-ai/dsh-client-ui-conversation"
      ]
    }
  }
}

插件通過 dsh-client-locale 服務提供中文/英文雙語界面。

核心功能

下面介紹插件已提供的能力。

編輯已確定用戶消息

插件支持編輯已確定(settled)的用戶消息,並從該回合重新運行對話。

操作路徑是:打開 Turn Fork 標籤,選擇一條用戶消息,修改文本,選擇下游策略,然後保存。保存後,會從已完成前綴創建新分支會話,並重跑該回合。

下游策略有兩種:

1、truncate:丟棄編輯回合之後的所有內容。
2、preserve:重放編輯回合及之後的每個回合,並在確認前顯示將重放的回合數。

重試歷史回合與重新生成最新回覆

插件提供三類操作入口:

  • 標籤中的 per-turn 按鈕,用於重試任意歷史回合;
  • 助手回覆上的 per-message 按鈕,用於重新生成對應回覆;
  • session header 的 regenerate 按鈕,用於重新生成最新助手回覆。

版本樹 Timeline

插件提供版本樹 Timeline,用於查看和管理不同分支。

版本樹標籤會:

  • 列出每個分支及操作摘要;
  • 標記當前版本;
  • 提供 Undo / Redo 導航;
  • 提供 Open 操作;
  • 對運行中的分支顯示警告,並提供 Stop 控件。

分支日誌持久化

插件的分支日誌在 dsh 進程重啓後仍可讀取。資料指出,它修復了 dsh-message-edit 的 P0 持久化缺陷。

僅使用官方插槽

插件只使用以下官方插槽:

  • Timeline 標籤;
  • session-header 操作;
  • 每條助手消息操作。

它不做 DOM 注入,也不通過文本猜測來定位消息。

安裝與啓用

先安裝插件:

dsh plugin add dsh-turn-fork

然後重啓 dsh。

安裝完成後,插件會註冊 Turn Fork 標籤、session header 操作,以及每條助手消息上的操作。

典型用法

下面給出可復現的使用路徑。

編輯一條用戶消息

1、打開 Turn Fork 標籤。
2、選擇要修改的用戶消息。
3、修改消息文本。
4、選擇下游策略:truncate 或 preserve。
5、保存。

保存後,插件會從已完成前綴創建新分支會話,並重跑該回合。

重試或重新生成

可以按目標選擇入口:

  • 使用標籤中的 per-turn 按鈕,重試某個歷史回合;
  • 使用助手回覆上的 per-message 按鈕,重新生成該回復;
  • 使用 session header 的 regenerate 按鈕,重新生成最新回覆。

查看版本樹

在 Turn Fork 標籤中查看版本樹:

  • 查看每個分支及其操作摘要;
  • 查看當前版本標記;
  • 使用 Undo / Redo 在分支間導航;
  • 使用 Open 打開某個分支;
  • 如果分支正在運行,查看警告並使用 Stop 控件。

選擇級聯策略

編輯保存前,需要選擇下游策略:

  • truncate:丟棄編輯回合之後所有內容;
  • preserve:重放編輯回合及之後的每個回合,並在確認前顯示將重放的回合數。

適用場景與注意

適合誰

適合在 DSH 會話中需要修正歷史用戶消息、重跑某個回合、比較不同分支結果的開發者。尤其適合反覆調整提示或任務輸入,並希望保留分支譜系的場景。

權限與許可證

插件以當前 dsh 進程權限運行,安裝前應檢查源碼、許可證和它暴露的接口。

許可證爲 MIT;客戶端 bundle preset vendored 自 DeepSeek Harness 倉庫(MIT,© DeepSeek)。

不支持助手消息編輯

本插件明確不支持助手消息編輯。資料指出,助手編輯會僞造 source: {kind:'model'} 並丟棄 tool calls,因此該能力被排除。

分支刪除與垃圾回收

平臺當前沒有 session-delete API,分支暫不能 GC。版本樹只是譜系展示,不代表分支可以被平臺回收。

從 dsh-message-edit 遷移

舊損壞事件格式日誌會被持久層拒絕,無法就地修復。升級前需使用官方導出流程,或等待上游修復。

HTTP 信任圍欄

/turn-fork 路由有信任圍欄要求:

  • 瀏覽器 Origin 必須是 localhost、127.0.0.1 或 [::1],且端口精確匹配;
  • 僅在服務器以 0.0.0.0 顯式遠程暴露時放寬端口匹配;
  • 無 Origin 時,要求 loopback Host;
  • POST 請求必須使用 application/json,且 body 不超過 64 KiB。

測試口徑

dsh-test --suite full 在 local runner 下報告 flaky,原因是每次嘗試的絕對路徑/時間戳不同。quick suite 是權威生命週期 gate,CI 在 Docker 中運行。

結尾

dsh-turn-fork 的價值,是把“修改歷史用戶消息並重跑”變成 DSH 會話中一個可操作、可回退、可追蹤的分支流程。它圍繞回合、分支和持久化日誌組織功能,適合作爲 DSH 會話調試和分支比較場景中的客戶端插件。

相關地址:

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

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

小夜