在 DeepSeek Harness (DSH) 開發智能體時,可能會遇到一種情況:流式內容正常輸出,但對話回合結尾必定報錯。這通常是因爲 DSH 使用的 pi-ai SDK 強制要求流式響應以 finish_reason 收尾,而部分聚合端點未發送該信號。
dsh-model-fix 是一個 DSH 插件,由 Retr67 維護。它專門修復 opencode 聚合端點上 muse-spark-1.2 和 gpt-5.6-luna 的流式收尾缺陷。
核心功能¶
該插件作用於 DSH 的 llm/stream waterfall 階段。當流式響應中已輸出內容,但結尾因端點缺陷(未發送 finish_reason 或 [DONE])導致錯誤代碼爲 TRANSPORT / STREAM_CLOSED 時,它會將結束狀態改寫爲正常的 stop。
它僅修復這一特定場景:
1. 內容已輸出(存在 text-delta / reasoning-delta 等)。
2. 錯誤信息明確爲“缺少終止事件”(如 Stream ended without finish_reason)。
對於真實的傳輸故障(如 Socket 關閉)或空響應,插件不會介入,保持原有邏輯。
安裝與啓用¶
使用 DSH 官方命令行工具安裝插件。安裝後必須重啓目標 profile 才能生效。
npx -y @deepseek-ai/dsh plugin --profile web add github:Retr67/dsh-model-fix
安裝完成後,重啓運行該 profile 的服務(例如 dsh web)。
配置¶
插件通過 cordis.patch.yml 文件進行配置。主要涉及兩個配置項:modelPattern 和 providers。
| 字段 | 默認值 | 說明 |
|---|---|---|
modelPattern |
^(muse-spark\|gpt-5\.6-luna) |
對模型 ID 進行匹配的正則表達式,僅修復匹配到的模型。 |
providers |
[] |
Provider 路由鍵的白名單。留空則匹配所有 provider 中符合條件的模型。 |
配置示例¶
在 cordis.patch.yml 中添加以下配置:
- id: model-fix
name: dsh-model-fix
config:
modelPattern: '^(muse-spark|gpt-5\.6-luna)'
providers: []
自定義範圍:
- 若只想修復 gpt-5.6-luna,可將 modelPattern 改爲 '^gpt-5\.6-luna'。
- 若只想限定特定路由,可添加 providers: ['opencode-go']。
適用場景與注意¶
技術要求¶
- Node.js 版本:插件依賴 Node.js,要求版本爲
^22.19.0或>=24。
隱私與設置說明¶
使用該插件修復流式收尾缺陷,無需在 opencode 平臺開啓“Allow models that train on request data”開關。
- 該開關涉及數據訓練授權,屬於隱私敏感項,不應爲了使用模型而開啓。
- 本插件修復的是流式傳輸協議的缺失,與該隱私開關無關。
總結¶
dsh-model-fix 解決了因 opencode 聚合端點未發送標準 finish_reason 導致 DSH 智能體對話失敗並觸發重試的問題。修復後,模型直連即可正常使用,避免了不必要的 token 消耗。
項目地址:https://github.com/Retr67/dsh-model-fix