前言¶
在 DeepSeek Harness (DSH) 的生態中,當模型請求在緩慢或不穩定的端點中途失敗時,默認的 dsh-llm-retry 會重建同一個請求並從零開始重新運行。這意味着已經流式傳輸的文本(包括長推理鏈)會被丟棄,一個多分鐘的嘗試可能會被重複執行多次。dsh-resume-turn 改變了這一行爲,它從部分輸出中恢復中斷的回覆。
這是什麼¶
dsh-resume-turn 是 DeepSeek Harness (DSH) 的一個插件,由 Harris Logic 維護。它屬於模型推理類別,採用 MIT 許可證。該插件的核心作用是:在模型回覆因網絡中斷或超時半途失敗時,自動把已生成的部分輸出帶進下一輪,讓模型從中斷處繼續,而不是從零全量重跑。
核心功能¶
- 從部分輸出恢復:自動從已流式傳輸的可見文本和推理塊中收集內容,而非重新生成。
- 可見引導消息:注入一條可見的“自動恢復”引導消息,引用部分輸出並指示模型繼續。
- 接管恢復流程:使用
{ kind: 'retry' }接管恢復邏輯。 - 支持特定失敗碼:支持 TIMEOUT、TRANSPORT、SERVER、RATE_LIMIT 等失敗代碼。
安裝與啓用¶
安裝插件需要使用 DSH 的包管理器。執行以下命令即可完成安裝:
npx @deepseek-ai/dsh plugin --profile web add github:Harris-Logic/dsh-resume-turn
安裝後,重啓配置文件(或 Web 主機)以激活插件。該插件聲明瞭 dsh.bundle.patch,安裝程序會自動將其附加到 dsh.profile.bundles 中,並自動應用其 cordis.patch.yml 插件行,無需手動編輯文件。
配置¶
插件沒有強制要求的配置項。可選的配置項(在配置文件的 cordis.patch.yml 行 config 中或作爲 bundle 配置)如下:
| key | default | meaning |
|---|---|---|
maxResumesPerTurn |
3 |
每一輪的最大自動恢復次數;超過後默認重試接管 |
resumeCodes |
["TIMEOUT","TRANSPORT","SERVER","RATE_LIMIT"] |
有資格進行恢復的失敗代碼 |
initialDelayMs |
2000 |
第一次恢復前的退避時間(每次嘗試加倍,上限 30s) |
maxPartialChars |
12000 |
引用進恢復消息的最大部分輸出字符數 |
工作機制與交互¶
插件在 agent/request-error 階段介入:
* 條件判斷:如果是用戶取消、非瞬時性錯誤、沒有部分輸出、正在工具調用中或已用完恢復預算,則委託給默認處理邏輯。
* 恢復流程:收集當前嘗試的塊(助手/塊事件),設置可取消的退避,調用 agent.steer(resume message)(可見的自動恢復行,包含部分輸出和繼續指令),最後返回 { kind: 'retry' }。
* 與 dsh-llm-retry 的交互:
* 在 retryPolicy 爲 mode: always 的提供商上,插件會優先介入。返回 { kind: 'retry' } 會短路重試鏈。
* 在 mode: normal 提供商上,插件只有在重試鏈順序位於 llm-retry 之前時纔會被諮詢。
限制與注意事項¶
- 邊界句子重述:恢復會將部分輸出引用到上下文中,繼續的回答可能會重新表述邊界句子(通過“不要重複”指令緩解)。
- 連續失敗計數:如果端點在恢復後立即再次失敗,嘗試次數會計入每輪預算。預算用完後默認重試接管。
- 內存狀態重置:主機重啓會重置內存中的恢復預算/邊界(存儲的日誌保持可讀)。
結語¶
對於在慢速或不穩定端點部署的智能體,dsh-resume-turn 能顯著減少因網絡波動導致的算力浪費。更多詳情可參考:GitHub | 社區目錄。