前言¶
在使用 DeepSeek Harness (DSH) 調用 OpenCode Go 模型時,需要 x-opencode-session 請求頭來處理會話路由和提示緩存。DSH <= 0.1.2-rc.1 在默認配置下不發送該頭,導致所有 OpenCode Go 請求返回 400 MissingSessionID 錯誤。上游修復方案尚未發佈,此插件填補了這一本地修復的空白。
插件介紹¶
dsh-opencode-session-header 是一個爲 DeepSeek Harness (DSH) 編寫的插件,由 beihzb 維護。它通過注入 x-opencode-session 頭部,修復了 OpenCode Go 的會話校驗錯誤,同時保持原有的路由和緩存優化機制。
核心功能¶
- 單會話注入:爲每個 DSH 會話注入獨立的
x-opencode-session頭。 - 修復報錯:解決
400 MissingSessionID拒絕問題。 - 優化保留:保持 OpenCode 的按會話路由和提示緩存優化。
- 嚴格範圍:僅對
opencode.ai域名生效,不影響其他 Provider。 - 無需重啓:通過配置文件即時開關,無需重啓 DSH。
- 零依賴:不引入額外的第三方庫。
安裝與啓用¶
在終端執行以下命令安裝插件:
dsh plugin --profile web add dsh-opencode-session-header
安裝後,需要重啓一次 dsh web 服務以加載插件。啓動日誌中應顯示插件加載信息。
運行時開關¶
插件提供運行時開關功能,無需重啓服務即可生效。
開關文件位於:
<DSH_HOME>/plugins/dsh-opencode-session-header.json
默認內容爲:
{ "enabled": false }
false:關閉注入,請求頭保持原樣。true或文件缺失:開啓注入。- 插件會在每次 LLM 請求時讀取該文件,修改後立即生效。
注意事項¶
- 版本要求:插件已針對 DSH
0.1.2-rc.1驗證。 - 依賴環境:依賴 DSH 使用進程全局的
fetch進行 LLM 流量轉發。如果未來 DSH 更換網絡棧,插件將失效。 - 退役計劃:當 DSH 官方支持原生按會話注入會話頭(討論 #5495)時,建議卸載此插件。
總結¶
該插件通過攔截並修改 HTTP 請求頭,爲 DSH 中的 OpenCode Go 請求補全了必要的會話信息,解決了報錯問題。它不破壞現有功能,且配置簡單,適合需要在當前版本 DSH 下使用 OpenCode Go 的場景。