AI 程式設計教程中文版
官方教程中文版模型與供應商

選擇模型

基於 OpenCode 官方 Models 文件,幫助新手理解 provider、model、variant 和預設模型的選擇邊界。

OpenCode 透過 AI SDK(Vercel 維護的 JS/TS 模型呼叫庫,把不同 provider 的 API 差異統一成一套介面)和 Models.dev(社群維護的 LLM 後設資料目錄,OpenCode 從這裡拉模型 ID、引數、上下文長度、價格等公開資訊)支援 75+ LLM provider,也支援本地模型。模型頁真正要解決的不是“哪個模型最新”,而是怎麼確認 provider 已連上、模型 ID 寫對、預設模型合適、variant(變體——同一模型的不同推理強度配置,比如"高思考預算"和"快速"兩套)沒有濫用。

這一篇用 10 分鐘換什麼:你會知道 /models 用來確認什麼、provider_id/model_id 怎麼寫、官方推薦模型清單為什麼不能死記、variant 怎麼切,以及 OpenCode 啟動時按什麼優先順序載入模型。

先給結論:先驗證模型能完成 OpenCode 任務

一個模型適不適合 OpenCode,不只看聊天質量,還要看它能否穩定使用工具。

flowchart LR
    Connect["/connect 新增 provider 憑據"] --> Models["/models 檢視可用模型"]
    Models --> Pick["選擇 coding 主力模型"]
    Pick --> Read["只讀解釋專案結構"]
    Read --> Edit["低風險單檔案修改"]
    Edit --> Verify["執行測試 / 檢查 diff"]
    Verify --> Default["再設為預設模型"]

    style Models fill:#dbeafe,stroke:#3b82f6,stroke-width:2px
    style Verify fill:#dcfce7,stroke:#22c55e
    style Default fill:#fef3c7,stroke:#f59e0b

不要在還沒跑通 provider 和工具呼叫之前,就把某個模型寫成全域性預設。

1. Provider 和 model 先分清

Provider 是模型從哪裡來,例如 OpenAI、Anthropic、Google、OpenCode Zen、本地模型、企業閘道器或自定義 provider。

Model 是具體模型。OpenCode 裡的完整模型 ID 通常是:

provider_id/model_id

如果你用 OpenCode Zen,官方示例寫法是:

opencode/gpt-5.1-codex

如果使用自定義 provider,provider_id 來自配置裡 provider 的 key,model_id 來自該 provider 下的 models key。

2. 用 /models 選擇模型

配置好 provider 以後,在 TUI 輸入:

/models

這一步用於確認三件事:

  • provider 憑據是否可用。
  • 當前 provider 能看到哪些模型。
  • 你準備寫進配置的模型 ID 是否真實存在。

如果 /models 看不到模型,先排 /connect、API key、provider 許可權和網路,不要直接改 model ID。

3. 官方推薦模型怎麼讀

官方 Models 頁會列出若干適合 OpenCode 的模型,並明確說明清單不完整,也不一定永遠最新。當前官方頁列出的例子包括:

  • GPT 5.2
  • GPT 5.1 Codex
  • Claude Opus 4.5
  • Claude Sonnet 4.5
  • Minimax M2.1
  • Gemini 3 Pro

這類列表適合當起點,不適合當永久結論。OpenCode 需要的是“程式碼生成 + 工具呼叫”都穩定的模型。一個模型如果只會聊天,但不會穩定讀檔案、改檔案、跑命令,就不適合作為主力 coding 模型。

模型名、價格、上下文和可用性都變化很快。寫配置前用 /models 和 Models.dev 複核,不要從舊教程裡複製模型 ID。

4. 設定預設模型

預設模型寫在 OpenCode config 的 model key:

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "model": "provider_id/model_id"
}

默认模型应该是你日常最常用、最稳定、成本可接受的 coding 主力,不是账号里最贵的模型。

项目配置只在团队确实需要同一个默认模型时使用。个人偏好更适合放全局配置;临时实验用 /models 或命令行参数覆盖。

5. 配置模型 options

可以在 provider.models 下给模型设置全局 options,例如 reasoning、verbosity、thinking budget 等。具体字段取决于 provider 和模型,不是所有模型都支持同一组选项。

opencode.jsonc
{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "openai": {
      "models": {
        "gpt-5": {
          "options": {
            "reasoningEffort": "high",
            "textVerbosity": "low"
          }
        }
      }
    }
  }
}

Agent 级配置可以覆盖这里的全局 options。只有当某类 agent 确实需要不同模型行为时,再把 options 下沉到 agent;不要为了“看起来高级”给每个模型都写一套 options。

6. Variant 怎么用

Variant 是同一模型的不同配置形态。官方文档列出的内置方向包括:

Provider常见 variant
Anthropichighmax
OpenAInoneminimallowmediumhighxhigh
Googlelowhigh

这个表不是完整清单。很多 provider 也有自己的默认 variant。

可以自定义或覆盖 variant,例如给同一模型准备高推理和快速两种模式:

opencode.jsonc
{
  "provider": {
    "openai": {
      "models": {
        "gpt-5": {
          "variants": {
            "thinking": {
              "reasoningEffort": "high",
              "textVerbosity": "low"
            },
            "fast": {
              "disabled": true
            }
          }
        }
      }
    }
  }
}

TUI 裡可以透過 variant_cycle keybind 快速切換 variant。

不要把所有任務都開最高 variant。高推理通常更慢、更貴,也不一定更適合小改動。

7. 模型載入優先順序

OpenCode 啟動時按這個順序找模型:

優先順序來源
1命令列 --model / -m
2OpenCode config 裡的 model
3上次使用的模型
4OpenCode 內部優先順序選出的第一個模型

這能解釋很多“我明明改了配置,為什麼沒生效”的問題。先看命令列引數和當前會話,再看 config。

8. 健康檢查

模型配置健康,至少滿足:

  • /models 能列出可用模型。
  • 你能說清 provider 和 model ID。
  • 預設模型完成過只讀專案理解、低風險修改和一次工具呼叫。
  • 高風險任務會切高推理 variant,並人工確認。
  • API key 沒有出現在配置、diff、日誌、截圖或教程示例裡。
  • 模型異常時能區分憑據、許可權、網路、baseURL、模型能力和工具呼叫問題。

接下來去哪

官方資料

本頁目錄