前言¶
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 本身仍然可用(使用上次保存的勾選狀態)。
典型用法¶
- 點 刷新模型:拉取最新的模型清單。首次安裝會自動執行一次。
- 勾選需要的模型:只有被勾選的模型纔會出現在模型選擇器裏。
- 單模型測試:點某個模型右邊的 測試,發送一個真實尺寸請求(96 token 上限)。幾百毫秒到幾十秒會給出結論。
- 批量測試:點 測試已勾選(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 倉庫。