dsh-zen-spoof:直連 OpenCode Zen 免費模型的 DeepSeek Harness 插件

前言

OpenCode Zen 的免費檔僅對官方客戶端開放,服務端通過特定的 HTTP Headers 判斷請求來源。DeepSeek Harness(DSH)內置的 dsh-llm-pi-ai 適配器雖然理論上支持注入這些 headers,但由於其 requestHeaders() 方法會覆蓋用戶自定義的 User-Agent,導致 opencode 檢測永遠失敗,headers 永遠不被注入。

dsh-zen-spoof 插件直接註冊爲 opencode provider,完全繞過 pi-ai,自行控制所有請求 headers。它不依賴任何補丁或特定版本,適用於任何 DSH 版本。

安裝與配置

執行以下命令安裝插件:

dsh plugin --profile web add dsh-zen-spoof

安裝後,由於插件註冊了 opencode 路由,與 pi-ai 的同名路由衝突,必須手動編輯配置文件以避免 DUPLICATE_ADAPTER 錯誤。

  1. 找到 settings.yaml 文件位置:
    • Windows: <dsh安裝目錄>\.dsh\settings.yaml
    • macOS / Linux: ~/.dsh/settings.yaml
  2. 註釋掉 llm-pi-ai 下方的 opencode provider 配置:
    llm-pi-ai:
      providers:
        # opencode: 已由 dsh-zen-spoof 插件接管
        opencode-go:
          # ... 其他 provider 配置保持不變 ...

功能特性

  • 完全自包含:不依賴 pi-ai 補丁或特定版本,不依賴 dsh 安裝器提供的補丁。
  • 模型自動發現:啓動時從 Zen API 獲取最新免費模型列表,失敗時回退到內置列表。
  • 思考模式:自動透傳 reasoning_effort 參數,並解析 reasoning_content 字段,在 DSH UI 中展示思考過程。
  • 自動 fallback:遇到 429 或 5xx 錯誤時,在候選池內輪換模型,支持指數退避和 Retry-After 響應頭。
  • 憑據熱更新:逐請求解析 API Key,無需重啓即可更換 Key。
  • 錯誤碼對齊:錯誤處理與 DSH 自帶重試機制兼容。
  • 多 block 輸出:正確處理流式響應中 reasoning -> text -> tool-call 的組裝順序。

使用方法

啓動 DeepSeek Harness Web UI:

dsh web

在會話設置中選擇 provider: opencode,並選擇以下任意免費模型:

模型 ID 說明
mimo-v2.5-free MiMo V2.5(默認)
deepseek-v4-flash-free DeepSeek V4 Flash
ling-3.0-flash-free Ling 3.0 Flash
nemotron-3-ultra-free Nemotron 3 Ultra

插件啓動時會自動獲取模型列表,上表僅供參考。

API Key 默認複用 DSH 憑據庫中 OPENCODE_API_KEY 的值。

配置項

字段 默認值 說明
apiKey 空 留空則自動讀取 dsh 憑據庫
apiKeyRef OPENCODE_API_KEY 憑據引用名
baseURL https://opencode.ai/zen/v1 網關地址
providers ["opencode"] 註冊的路由名
spoofClient cli x-opencode-client 值
project dsh x-opencode-project 值
userAgent opencode/1.18.30 User-Agent,須含版本號
enableAutoFallback true 受限時自動換模型
maxFallbackAttempts 5 單次最多換幾個
initialBackoffMs 1000 退避起點(毫秒)
maxBackoffMs 30000 退避上限(毫秒)
timeoutMs 120000 空閒超時(毫秒),0 不限

通過 cordis 配置覆蓋時須重述全部鍵。

注意事項

  • 僞裝風險:僞裝客戶端頭屬於灰色手段,官方可能收緊策略或標記非官方流量。建議使用小號 Key。
  • 手動配置:安裝後必須手動編輯 settings.yaml 註釋掉 opencode provider,否則會報錯。
  • 憑據查找:可在 dsh web UI「設置」頁或執行 dsh config 命令查找 settings.yaml 位置。
羽毛球分组比赛记分
小程序二维码

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

小夜