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
使用說明¶
- 生效範圍:僅對命中規則的 provider 和模型生效。未被規則命中的請求(如官方 API)完全不受影響。
- 修復邏輯:當檢測到
STREAM_CLOSED錯誤且滿足“內容已到、tool-call 參數合法 JSON”的條件時,插件會吞掉該錯誤,讓流正常結束。 - 不掩蓋錯誤:對於參數殘缺、空響應、真斷網、鑑權失敗等錯誤,插件會原樣放行或照常拋錯,不會掩蓋真正的錯誤。
注意事項¶
- 版本要求:需要 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 官方無從屬關係,僅供開發者根據自身需求集成使用。