DeepSeek Harness 插件:修復第三方 API 缺失 message_stop 的重複重試

DeepSeek Harness (DSH) 是一個插件化的智能體運行時。當對接的第三方網關(如 pi-ai)在流式傳輸內容結束後未發送終止事件 message_stop 或 done 時,DSH 會誤判爲 TRANSPORT 錯誤,並在同一步驟內觸發最多 5 次指數退避重試。本插件通過監聽 llm/stream 水平瀑布,對“內容已到但缺終止信號”的情況進行修復,使回覆正常提交,避免無效重試。

核心功能

  • 監聽並修復流事件:監聽 dsh host 端的 llm/stream 水平瀑布,對特定錯誤進行攔截。
  • 條件性丟棄錯誤:僅在內容已完整到達、且未閉合的 tool-call 參數爲合法 JSON 時,才丟棄錯誤並乾淨結束流。
  • 精準生效範圍:支持通過配置指定 provider 和 models,不影響其他接口。
  • 不接觸憑據:僅作爲流包裝層,不發起額外網絡請求,不涉及敏感信息。

安裝

安裝前請確保 dsh web 版本滿足要求(>= 0.1.0-rc.6)。

dsh plugin --profile web add dsh-missing-stop-heal

安裝完成後需要重啓 dsh 進程(profile bundle 在啓動時讀取)。

配置

配置分爲行內配置(agent.cordis.yml)和設置頁(GUI)兩種方式。核心配置項爲 rules 數組,每條規則包含 provider 和 models。

方式 A:GUI 設置頁(推薦)

安裝爲 web profile bundle 後,dsh web 的設置側欄會出現「流重試修復」入口。在設置頁中:
- Provider:下拉選擇或手動填寫 provider 標識(如 xjhc)。
- Models:支持 * 通配符,填寫具體模型或留空表示全部模型。
- 啓用:勾選啓用該規則,點擊保存後立即生效。

方式 B:YAML 行內配置

在 agent preset 的 agent.cordis.yml 末尾添加:

- id: missing-stop-heal
  name: './heal.mjs'
  config:
    rules:
      - provider: xjhc
        models: ['*']
        enabled: true

使用說明

  1. 生效範圍:僅對命中規則的 provider 和模型生效。未被規則命中的請求(如官方 API)完全不受影響。
  2. 修復邏輯:當檢測到 STREAM_CLOSED 錯誤且滿足“內容已到、tool-call 參數合法 JSON”的條件時,插件會吞掉該錯誤,讓流正常結束。
  3. 不掩蓋錯誤:對於參數殘缺、空響應、真斷網、鑑權失敗等錯誤,插件會原樣放行或照常拋錯,不會掩蓋真正的錯誤。

注意事項

  • 版本要求:需要 dsh web >= 0.1.0-rc.6。
  • 規則生效:配置修改對當前正在進行的請求不追溯,僅對下一條請求生效。
  • 許可協議:MIT 許可證。

驗證方式

通過查看 $DSH_HOME/sessions/.../session.jsonl 日誌判斷修復效果:
- 修復前:可見 llm/retry、TRANSPORT、Anthropic stream ended before message_stop。
- 修復後:assistant/message 的 sourceEventSeqs 爲單次連續區間,不再出現 llm/retry 事件。

生態背景

DeepSeek Harness 的理念是“一切皆插件”。本插件由社區維護,與 DeepSeek 官方無從屬關係,僅供開發者根據自身需求集成使用。

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

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

小夜