dsh-freemodels-opencode:接入 OpenCode 免費車道並測試連通性

前言

DeepSeek Harness(DSH)通過插件擴展能力。接入第三方模型時,往往需要從上游清單中過濾付費項、確認哪些可用、再決定是否啓用。OpenCode Zen 免費車道有大量模型,但上游返回的 86 個模型中大部分是付費的,手動篩選既繁瑣又容易漏掉變化。dsh-freemodels-opencode 插件把 OpenCode 免費車道接入 DSH,提供一鍵刷新清單、勾選啓用、連通性測試與人工評級排序的能力,讓模型選擇和驗證過程更可控。

這是什麼

dsh-freemodels-opencode 是一個 DSH 插件,維護者爲 xiean676,分類爲聯網工具。它把 OpenCode Zen 免費車道的模型接入 DSH 的模型選擇器,解決”這堆模型到底哪個能用”的問題。插件獨立實現 provider opencode,與原插件 @opencode2dsh/dsh-plugin 可以共存。

核心功能

  • 刷新模型:從上游重新拉取模型清單,包含 models.dev 的上下文窗口與棄用標記。
  • 勾選啓用:勾上的模型纔會以 provider opencode 出現在模型選擇器裏;不勾選則不顯示。
  • 測試連通性:對單個或全部已勾選模型發送真實尺寸請求,給出九檔結論。
  • 按能力排序:每個模型帶人工評級徽章(S/A/B/C),卡片和選擇器按同一順序排列。

安裝與啓用

桌面版安裝命令:

dsh plugin --profile desktop add dsh-freemodels-opencode

從源碼安裝:

git clone https://github.com/xiean676/dsh-freemodels-opencode.git
cd dsh-freemodels-opencode
npm install --ignore-scripts
npm run build
dsh plugin --profile desktop add .

安裝完成後重啓 DSH,進入 設置 → 模型 頁面,滾動到最底部即可看到「opencode 免費模型」卡片。

如果卡片顯示”讀不到插件狀態”,說明桌面端沒有把 webServer 服務暴露給插件,此時勾選和探測功能不可用,但 provider 本身仍然可用(使用上次保存的勾選狀態)。

典型用法

  1. 點 刷新模型:拉取最新的模型清單。首次安裝會自動執行一次。
  2. 勾選需要的模型:只有被勾選的模型纔會出現在模型選擇器裏。
  3. 單模型測試:點某個模型右邊的 測試,發送一個真實尺寸請求(96 token 上限)。幾百毫秒到幾十秒會給出結論。
  4. 批量測試:點 測試已勾選(N),串行測試已勾選的模型。遇到「需付費」「車道額度用盡」或帶較長 retry-after 的「被限流」會立即停止,避免繼續消耗額度。

批量測試會先彈出確認對話框:「確認測試 N 個模型?」,因爲它會真的發起 N 次請求。同一個模型在 60 秒內不會重複測試,重複點擊只會顯示”剛測過”。

探測結論與應對

插件給出九檔結論與對應建議:

結論 含義 建議
可用 上游完整響應了請求 使用該模型
被限流 429 FreeUsageLimitError,額度暫時用完 等到建議的時間點再測
車道額度用盡 403 FreeTierError,按客戶端指紋拒絕 換模型或等上游放開
需付費 401/403 AuthError,匿名車道無憑據 換免費車道模型
區域受限 403 RegionError,當前出口 IP 被拒 換網絡出口
上游不提供 400,模型 id 不存在或協議不匹配 不選該模型
上游臨時故障 5xx Upstream request failed 等待後重測
剛測過 60 秒內測過同一模型 等待一分鐘後重測
未測出 超時或空響應 重測

「被限流」與「可用」分開,因爲探測請求從 ping 改成了真實任務(96 token 上限),能證明整條鏈路剛剛完整響應過一次。結論只在當前會話裏存在,不落盤,避免限流過期後仍然顯示”不可用”。

排序與評級

卡片上方提供三個排序按鈕:

  • 按能力:按人工評級從高到低,評級相同再按上下文窗口,與模型選擇器順序一致。
  • 按名稱:按模型名字母排序。
  • 按上下文:按上下文窗口從大到小排序。

左邊的 S/A/B/C 徽章是人工評級,不是跑分結果。評級基於模型”幹長活兒穩不穩”的判斷:S(90+)、A(80+)、B(70+)、C。鼠標懸停可查看具體理由。想調整順序,編輯 src/rank.ts 文件。

未在人工表裏的新模型會走關鍵詞啓發式打分(基於版本號和 flash/preview 等檔位詞),分數上限爲 63,低於最低人工分(64),因此不會頂掉人工評級模型。啓發式按 - / _ / . 分詞後整詞匹配,避免早期版本中子串匹配導致的誤判。

推理檔位

免費模型全部聲明支持推理檔位,但各自能選的檔位不同。space-bunny-free / beam-free 支持 low/medium/high/xhigh/max;nemotron-3.5-super-vl-free 支持 none → xhigh;deepseek-v4.1-flash-free / glm-5.3-flash-free 支持 low/high/max;big-pickle / mimo-v2.6-flash-free / longcat-2.5-preview-free / nemotron-3.5-lightning-free 上游未聲明,插件默認提供 off/low/high/max 四檔。

默認四檔是實測可接受的寫法,故意去掉了 medium 檔(寫錯會導致每次都硬 400)。檔位配置在 src/adapter.ts 的 DEFAULT_EFFORT_LADDER。DSH 自帶的 dsh-thinking-slider 插件補齊四檔功能不適用於此 provider,因爲 opencode 是本插件自己的 provider。

如果模型在 DSH 裏看不到檔位選項,先點 刷新模型 重新拉取元數據,再重啓 DSH。檔位來自 models.dev 元數據,目錄未刷新就不會出現在選擇器裏。

models.dev 是一個 5.8 MB 的大文檔,解析需要約 15 秒。插件將超時放寬到 90 秒並重試一次,即使失敗也會沿用上次成功拉取的檔位和上下文窗口,避免需要重新配置。點「刷新模型」只拉 Zen 清單(秒回),models.dev 元數據在後臺補全,卡片會在 15 秒 / 60 秒 / 150 秒自動跟進刷新。

Zen 清單拉取本身也可能失敗(如 DNS 解析間歇性超時)。插件增加了 1 次重試 + 1.5 秒退避,超時放寬到 45 秒,並將錯誤翻譯成人話(DNS 失敗 / 連接重置 / TLS 協商失敗 / 證書校驗失敗 / 請求超時),而不是隻顯示 fetch failed。

會話失敗時的重試策略

在 DSH 會話中發送消息時,如果遇到限流,插件會聲明自己的重試策略:

  • RATE_LIMIT 不重試:限流窗口是分鐘到小時級,重試沒有意義。
  • AUTH、LANE_EXHAUSTED、REGION_BLOCKED、MODEL_UNAVAILABLE 不重試:這些原因換 key、換模型或等待都無法自動解決。
  • 只對 EMPTY_RESPONSE、TIMEOUT、TRANSPORT 重試 1 次。

這樣避免對限流錯誤重複重試,浪費額度。失敗消息會帶上上游給出的等待窗口(如「opencode: Rate limit exceeded. Please try again later.(上游建議 20 小時後再試)」),不需要猜測。

實現與維護

插件源碼結構如下:

文件 作用
src/zen-ids.ts 免費車道要求的 ses_* 會話 id 與 7 個僞裝頭
src/rank.ts 人工評級表與能力排序(調整順序只需改此文件)
src/catalog.ts 拉取 Zen 清單 + models.dev 元數據,過濾付費模型後合併
src/probe.ts 單模型探測與九檔分類,永不拋異常,流式判級
src/net-errors.ts 將 fetch failed 翻譯成人話
src/store.ts $DSH_HOME/data/dsh-freemodels-opencode/state.json,串行寫、原子替換
src/adapter.ts provider opencode 的 LlmAdapter,只列勾選模型,流式轉發
src/bridge.ts 四條同源路由:/status /refresh /select /probe(探測走 NDJSON 流式返回)
src/index.ts 宿主入口:註冊 adapter、加載清單、掛路由
src/client/ 瀏覽器入口 + 卡片

模型清單的權威由插件自己提供:LlmAdapter.listModels() 返回勾選集,勾選爲空時返回 [],於是模型選擇器不顯示任何模型。選擇器順序也由 rank.ts 的能力序決定,任一變化都會觸發重新發布。

適用場景與注意

適合需要接入 OpenCode 免費車道、希望批量測試模型可用性、依賴人工評級排序的開發者。

插件以當前 DSH 進程權限運行,安裝前應檢查源碼與許可證。許可證爲 MIT,第三方依賴來自 opencode2dsh 項目。

結尾

dsh-freemodels-opencode 通過清單過濾、勾選控制、連通性測試與人工評級排序,讓 OpenCode 免費車道在 DSH 中更易用。如需更多信息,可訪問插件目錄頁或 GitHub 倉庫。

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

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

小夜