dsh-fork-inbox-guard: 丟棄分叉會話繼承的待領提示詞

前言

在 DeepSeek Harness(DSH)的工作流中,分叉(Fork)會話是一個常用操作。當源會話處於運行狀態或存在排隊消息時,如果直接進行分叉,子會話會繼承源會話的待領提示詞。這導致子會話優先執行源會話遺留的命令,而你剛剛發送的新提示詞被推遲到下一輪。這不僅造成指令重複執行,還打亂了預期的對話流程。

dsh-fork-inbox-guard 是一個 Host 插件,它通過清理分叉後繼承的待領消息隊列,確保子會話的第一次交互直接響應當前發送的提示詞。

核心功能

  • 丟棄繼承消息:在創建子會話時,移除從源會話繼承來的待領提示詞。
  • 優先響應新提示:保證子會話的第一個回合回答的是你當前發送的消息。
  • 日誌記錄:將被丟棄的消息標記爲 outcome: canceled,保留 agent/inbox/spliced 事件記錄。
  • 入口覆蓋:攔截側邊欄的 Fork 會話入口以及消息菜單的 Branch 入口,防止誤操作導致繼承舊隊列。

安裝與啓用

在插件目錄下執行以下命令進行安裝:

dsh plugin --profile web add "link:$(pwd)"

安裝完成後重啓 dsh web 服務。卸載時使用:

dsh plugin --profile web remove dsh-fork-inbox-guard

本插件僅修改 Host 半區邏輯,不註冊 Client 模塊,因此不需要重新構建前端。

典型用法

插件生效後,可以通過子會話的日誌確認行爲。在分叉出的會話日誌中查找 agent/inbox/spliced 事件,其 outcome 字段應爲 canceled,且 removedCount 爲 1。這條記錄對應的是被丟棄的繼承消息,隨後的 user/message 事件則是你新發送的提示詞。

插件本身會輸出一條日誌信息,表明丟棄了某個帶種子會話的待領 Inbox:

fork-inbox-guard: dropped the pending inbox of seeded session "session-xxxx"

默認的 web profile 未安裝控制台日誌插件,該信息不會顯示在終端。若需在終端查看,需要掛載 @deepseek-ai/cordis-plugin-logger-console。

適用場景與注意

  • 生效範圍:僅對新建的子會話生效,不會反向修復已經建立的歷史會話。
  • Fork 算法:不修改 Harness 內部的 fork 切點算法,因此子會話日誌中仍會先出現源會話的 insert 事件,緊接着纔是 canceled 的 splice 事件。
  • API 依賴:依賴 Harness 的公開 API(在 1.0 之前版本不保證穩定),升級 DSH 後建議重跑 just test。
  • 衝突處理:上游如果在 fork 時直接清空了子會話的 inbox,本插件檢測到空隊列時會跳過操作,不會產生衝突。
  • Resume 與無 Seed:resume 操作不受影響;對於沒有新 seed 的新會話,插件也不會進行干預。

短結尾

該插件通過清理繼承隊列,解決了 Fork 操作中指令錯位和重複執行的問題,適合需要精細化控制會話繼承行爲的場景。

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

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

小夜