06 · 模型與供應商策略
在 OpenCode 中按任務風險、成本、速度和資料邊界選擇 provider、model、variant 與預設模型。
📖 本篇術語速查表
| 英文 / 縮寫 | 中文 | 一句話解釋 |
|---|---|---|
| Provider | 供應商 | 提供模型的服務方。 |
| 模型選型 | model choice | 按任務和成本選模型。 |
| 多模型策略 | mix | 不同任務配不同模型。 |
不想讀完?把下面這段提示詞丟給 AI 幫你跑完——幫你給 OpenCode 規劃模型供應商策略(按任務和成本選)。
你是 OpenCode 模型選型顧問。
【角色】
OpenCode 模型選型顧問,按最小夠用、安全優先的原則給可落地方案,每條結論都落到能照做的步驟或示例,不停留在空泛建議。
【輸入】
- 我做的任務型別:___
- 對成本 / 速度 / 質量的偏好:___
- 已有的供應商賬號:___
- 是否需要本地 / 私有模型:___
- 經驗水平:___
【工作流程】
1. 梳理任務對模型的要求
2. 按成本 / 質量給選型
3. 設計多模型分工
4. 說明怎麼切換
5. 給驗證
【輸出規範】
▌一、任務要求
▌二、選型建議
▌三、多模型分工
▌四、切換 + 驗證
【硬約束】
- 按任務選模型,不一刀切
- 簡單任務用便宜模型
- key 安全存放不外洩
- 不要替我臆測情況或編造不存在的功能,資訊不全先問清
- 不確定的設定或介面一律以官方文件為準,禁止照搬過時寫法
- 給的每條結論都要落到具體可照做的步驟或示例,不停留在「建議」「考慮一下」這類沒法直接執行的空泛表述OpenCode 支援切換 provider 和 model,但“可切換”不是讓你每天追最新模型。真正穩定的策略,是把任務風險、模型能力、呼叫成本、資料邊界和團隊預設值放在一起判斷。
這一篇用 12 分鐘換什麼:你會知道 provider、model、credential 怎麼分層,第一次只該接幾個 provider,預設模型為什麼不要選最貴的,什麼時候用高推理 variant,以及團隊長期使用時怎麼降低排障成本。
先給結論:先有主力模型,再擴充套件備選
預設模型應該是穩定、成本可接受、能完成真實 coding agent 任務的主力模型。高風險任務再切高推理模型;輕量任務交給 small_model 或低成本模型;provider 數量先少後多,否則排障會變成猜供應商、猜網路、猜憑據、猜模型能力。
flowchart LR
Task["任務型別"] --> Risk["判斷風險"]
Risk --> Provider["選擇 provider"]
Provider --> Model["選擇 model"]
Model --> Variant["需要時切 variant"]
Variant --> Verify["只讀 / 小改 / 測試驗證"]
Verify --> Default["穩定後再寫預設設定"]
style Risk fill:#fef3c7,stroke:#f59e0b
style Verify fill:#dcfce7,stroke:#22c55e,stroke-width:2px
style Default fill:#dbeafe,stroke:#3b82f6
如果一個模型只能聊天,不能穩定讀檔案、改檔案、呼叫 shell、處理長上下文和解釋 diff,它就不適合作為 OpenCode 的主力 coding 模型。
1. 先分清三層
OpenCode 裡最容易混的是 provider、model 和 credential。
| 層級 | 負責什麼 | 常見入口 |
|---|---|---|
| Provider | 模型從哪裡來,例如 OpenAI、Anthropic、Zen、OpenRouter、本地模型或企業閘道器 | /connect、provider 設定 |
| Model | 具體用哪個模型,是否使用 variant | /models、model、--model |
| Credential | 怎麼證明你有許可權呼叫它 | /connect、環境變數、本機 auth store |
/connect 更適合儲存本機憑據,專案級 opencode.json 更適合寫預設模型、provider options 和團隊偏好。真實 API key 不應該進儲存庫、截圖、記錄或教學示例。
憑據洩露不是“以後再修”的問題。只要 key 出現在設定、diff、CI 記錄、分享會話或教學截圖裡,就應該立即輪換。
2. 第一次只接一個 provider
新手最常見的錯誤,是同時接入多個 provider,然後不知道故障來自哪一層。第一次用 OpenCode,先跑通一條最短閉環:
/connect
↓
選擇 provider 並完成認證
↓
/models
↓
選擇一個 coding 主力模型
↓
只讀解釋專案結構
↓
低風險單檔案改動provider 選擇可以這樣判斷:
- 新手快速跑通:OpenCode Zen 或你已有賬號的主流 provider。
- 統一賬單 / 國內網路:聚合 provider 或團隊內部 gateway。
- 企業許可權 / 合規:Bedrock、Azure、Vertex 或內部 AI gateway。
- 隱私 / 離線實驗:Ollama、LM Studio、llama.cpp 等本地入口。
- 團隊統一體驗:同一 provider + 專案級預設模型。
OpenCode Zen 是官方提供的可選 provider,用來降低模型組合試錯成本。它不是使用 OpenCode 的前提;如果你已經有穩定 provider,可以繼續用自己的 key。
3. 模型先過五項驗證
不要只看模型排行榜。OpenCode 是工具驅動的 coding agent,模型要在真實專案裡驗證。
| 維度 | 要驗證什麼 |
|---|---|
| 程式碼能力 | 能不能讀懂專案結構、寫出可執行改動 |
| 工具呼叫 | 能不能穩定呼叫檔案、shell、MCP、LSP 等工具 |
| 上下文能力 | 能不能處理多檔案、多輪任務和長輸出 |
| 延遲和限流 | 會不會頻繁卡住、超時、被 rate limit |
| 成本 | 能不能支撐日常高頻使用 |
官方 Models 頁會給推薦模型,但這類列表會隨時間變化。更穩的做法是保留自己的驗證閉環:只讀解釋專案結構、定位一個小 bug、改一個低風險檔案、執行測試或給出可驗證結果,再 review diff。
模型名、價格、上下文、免費期和可用性變化很快。寫設定前用 /models 和 Models.dev 複核,不要從舊教學複製模型 ID。
4. 按任務風險分層
不要用同一個模型處理所有任務。更合理的是按風險和成本分層:
| 層級 | 任務 | 模型策略 |
|---|---|---|
| L1 低風險 | 文件整理、摘要、命名建議、簡單解釋 | 快速低成本模型 |
| L2 中風險 | 小 bug、區域性重構、測試補充、設定調整 | 穩定 coding 主力模型 |
| L3 高風險 | 架構遷移、安全、資料、釋出、跨模組改動 | 高推理模型 + 人工確認 |
| L4 批處理 | 批次分類、格式修正、生成報告 | 低成本模型 + command 模板 |
模型越強,不代表越適合所有任務。小 README 修改交給最高推理模型通常只是浪費;跨模組遷移交給便宜小模型,風險會轉移到後續排錯上。
5. 預設模型不要設成最貴模型
預設模型應該是你最常用、最穩定、成本可接受的 coding 主力。它不是賬號裡最貴的模型。
專案設定可以這樣表達分工:
{
"$schema": "https://opencode.ai/config.json",
// provider-id/model-id 的實際值用 `/models` 命令列出,或參 https://opencode.ai/docs/models
"model": "provider-id/main-coding-model",
"small_model": "provider-id/lightweight-model"
}model 是主力模型。small_model 用於標題生成等輕量任務;如果沒有單獨設定,OpenCode 會嘗試使用 provider 裡的便宜模型,否則回退到主模型。
個人偏好更適合放全域設定。只有當團隊確實需要同一預設模型時,才把 model 寫進專案級設定。
6. 模型 ID 和載入優先順序
OpenCode 的模型 ID 通常是:
provider_id/model_id排錯時先看兩件事:provider 是否已經連線並有許可權,model ID 是否存在且被目前 provider 支援。
OpenCode 啟動時按這個順序找模型:命令列 --model / -m 優先,其次是 OpenCode config 裡的 model,再其次是上次使用的模型,最後才是 OpenCode 內部優先順序選出的第一個模型。
這能解釋一個常見困惑:你明明改了設定,但目前命令列引數或會話狀態仍然覆蓋了它。
7. Variant 和 agent 繫結只在必要時用
Variant 是同一模型的不同設定形態,例如更高 reasoning、更低 verbosity 或更大 thinking budget。
適合切 variant 的場景:
- 快速解釋、小修小補:低 reasoning / fast。
- 複雜 review、遷移、架構判斷:高 reasoning。
- 少數高價值任務:更高預算或最大 thinking。
Agent 也可以繫結模型。比如 docs 用低成本穩定模型,review 用推理強的模型,security 用高推理且許可權收緊的模型。這個能力適合角色差異明確的團隊,不適合為了“看起來專業”給每個 agent 都配不同模型。
8. 不要在長任務中途隨便切模型
這些情況不建議中途切模型:
- 目前模型已經讀了很多上下文。
- 任務依賴前面的工具輸出和修復假設。
- 工作區已經產生未提交 diff。
- 你只是因為輸出慢而臨時焦慮。
確實要切時,先讓目前模型寫交接摘要:
請輸出一份交接摘要:
1. 目前任務目標。
2. 已閱讀和修改的檔案。
3. 已驗證的事實。
4. 尚未完成的步驟。
5. 需要避免誤改的邊界。新模型接手時,從摘要和目前 diff 開始,不要讓它靠猜繼續。
9. Provider 出錯先按層級排
Provider 出問題時,不要一上來換模型。
| 現象 | 優先檢查 |
|---|---|
/models 看不到模型 | /connect 是否成功、key 是否有效、provider 是否可用 |
| 認證失敗 | API key、企業許可權、環境變數、auth store |
| 請求 404 | baseURL、provider ID、model ID |
| 頻繁超時 | provider 網路、限流、timeout / chunkTimeout |
| 能聊天但不會改程式碼 | 工具呼叫能力、模型是否適合 coding agent |
| 本地模型失敗 | OpenAI-compatible endpoint、上下文和 tool calling 支援 |
先回到官方預設 provider 或一個已知可用模型,確認 OpenCode 本身沒問題,再排自定義 endpoint、代理、企業閘道器和本地模型。
10. 一個可執行起點
如果你不知道怎麼開始,先用這套策略:
- 普通閱讀和文件:快速低成本模型。
- 區域性程式碼編輯:穩定 coding 主力模型。
- 跨模組 bug 和重構:高推理模型。
- 安全、釋出、資料:高推理模型 + 人工確認。
- 批次重複任務:低成本模型 + command 模板。
- 標題和摘要:
small_model。
這套策略的目標不是永遠最省錢,也不是永遠最強,而是讓任務風險、模型能力和成本結構匹配。
接下來去哪
選擇模型
確認 `/models`、`provider_id/model_id`、variant 和預設模型的官方設定邊界。
設定模型供應商
理解 provider、credential、baseURL、本地模型和自定義 endpoint 的分工。
OpenCode Zen
判斷是否使用官方精選模型入口,以及如何核對價格、隱私和團隊限額。
Agents、Skills、Plugins
當模型策略需要落到角色和許可權時,繼續看 agent 分工。
官方資料
- OpenCode Models:https://opencode.ai/docs/models
- OpenCode Providers:https://opencode.ai/docs/providers
- OpenCode Zen:https://opencode.ai/docs/zen
- Models.dev:https://models.dev