OpenCode Provider 与模型配置完全指南

OpenCode 支持 75+ LLM 提供商,从商业巨头的旗舰模型到开源的本地模型,几乎覆盖了市面上所有主流的 AI 模型。本文将完整介绍如何选择、配置和优化模型,包括商业 API、本地模型搭建、Go 订阅服务以及 Token 成本管理。

支持的模型提供商

OpenCode 通过 providers 模块统一接入各类 LLM 提供商。以下是最常用的提供商:

商业模型提供商

| 提供商 | Provider ID | 代表模型 | 特点 |
|--------|-------------|----------|------|
| Anthropic | anthropic | Claude Sonnet 4, Claude Opus 4 | 编程能力最强 |
| OpenAI | openai | GPT-4o, GPT-4.1 | 综合能力均衡 |
| Google | google | Gemini 2.5 Pro | 超大上下文窗口 |
| DeepSeek | deepseek | DeepSeek-V3, DeepSeek-R1 | 性价比极高 |
| xAI | xai | Grok 3 | 推理能力强 |
| Mistral | mistral | Mistral Large 2 | 欧洲开源力量 |
| Cohere | cohere | Command R+ | RAG 场景优势 |
| AI21 | ai21 | Jurassic-2 | 长文本处理 |
| Together AI | together | 多种开源模型 | 开源模型托管 |
| Fireworks | fireworks | 多种开源模型 | 低延迟推理 |
| Groq | groq | Llama 系列 | 极速推理 |
| OpenRouter | openrouter | 聚合平台 | 一站式访问上百模型 |
| Azure OpenAI | azure-openai | GPT 系列 | 企业级微软云 |

本地/自托管模型

| 提供商 | Provider ID | 说明 |
|--------|-------------|------|
| Ollama | ollama | 最简单的一键本地部署 |
| LM Studio | lm-studio | 图形化本地模型管理 |
| vLLM | vllm | 高性能推理引擎 |
| LocalAI | localai | OpenAI 兼容的本地 API |
| llama.cpp | llama.cpp | C++ 高性能推理服务 |

专用模型

| 提供商 | Provider ID | 适用场景 |
|--------|-------------|----------|
| Vercel AI | vercel-ai | Vercel 平台集成 |
| Cloudflare | cloudflare | Workers AI 边缘推理 |
| Replicate | replicate | 图像/视频生成 |
| HuggingFace | huggingface | 模型托管和推理 |

基础模型配置

单一模型配置

最简单的配置是只设置一个默认模型:

{
  "model": "claude-sonnet-4-20250514",
  "provider": {
    "id": "anthropic",
    "apiKey": "${ANTHROPIC_API_KEY}"
  }
}

多模型配置

配置多个模型,可以在对话中随时切换:

{
  "model": "claude-sonnet-4-20250514",
  "provider": {
    "id": "anthropic",
    "apiKey": "${ANTHROPIC_API_KEY}"
  },
  "models": {
    "deepseek": {
      "provider": "deepseek",
      "model": "deepseek-chat",
      "options": {
        "temperature": 0.3,
        "maxOutputTokens": 8192
      }
    },
    "gpt": {
      "provider": "openai",
      "model": "gpt-4o",
      "options": {
        "temperature": 0.5
      }
    },
    "gemini": {
      "provider": "google",
      "model": "gemini-2.5-pro-exp-03-25",
      "options": {
        "temperature": 0.7,
        "maxOutputTokens": 65536
      }
    },
    "local": {
      "provider": "ollama",
      "model": "qwen2.5-coder:14b",
      "options": {
        "temperature": 0.1,
        "numCtx": 32768
      }
    }
  }
}

切换模型

# 命令行指定模型
opencode --model deepseek

# 在对话中切换
/model deepseek
/model gpt

模型参数详解

{
  "models": {
    "my-model": {
      "provider": "anthropic",
      "model": "claude-sonnet-4-20250514",
      "options": {
        "temperature": 0.5,
        "topP": 0.9,
        "topK": 40,
        "maxOutputTokens": 8192,
        "stopSequences": ["\n```"],
        "frequencyPenalty": 0.0,
        "presencePenalty": 0.0
      }
    }
  }
}

参数说明

| 参数 | 范围 | 默认值 | 说明 |
|------|------|--------|------|
| temperature | 0.0 - 2.0 | 0.7 | 越高越有创造性,越低越确定 |
| topP | 0.0 - 1.0 | 1.0 | 核采样,控制随机性 |
| topK | 1 - ∞ | - | 限制 top token 数量 |
| maxOutputTokens | 1 - 模型上限 | 8192 | 最大输出 Token 数 |
| frequencyPenalty | -2.0 - 2.0 | 0.0 | 减少重复词汇 |
| presencePenalty | -2.0 - 2.0 | 0.0 | 鼓励引入新话题 |

不同场景的参数建议

{
  "models": {
    "coding": {
      "provider": "anthropic",
      "model": "claude-sonnet-4-20250514",
      "options": {
        "temperature": 0.1,
        "maxOutputTokens": 16384
      }
    },
    "brainstorming": {
      "provider": "openai",
      "model": "gpt-4o",
      "options": {
        "temperature": 1.0,
        "topP": 0.95,
        "maxOutputTokens": 32768
      }
    },
    "review": {
      "provider": "anthropic",
      "model": "claude-opus-4-20250514",
      "options": {
        "temperature": 0.0,
        "maxOutputTokens": 8192
      }
    }
  }
}

本地模型搭建

Ollama 方案(推荐)

# 1. 安装 Ollama
curl -fsSL https://ollama.com/install.sh | sh

# 2. 拉取编程推荐模型
ollama pull qwen2.5-coder:14b      # 14B 参数,性能优秀
ollama pull qwen2.5-coder:7b       # 7B 参数,更快
ollama pull deepseek-coder-v2:16b  # DeepSeek Coder
ollama pull codellama:34b          # Meta Code Llama
ollama pull llama3.2:latest        # Meta Llama 3.2

# 3. 启动 Ollama 服务(已默认启动在 localhost:11434)

配置 OpenCode 使用 Ollama:

{
  "model": "qwen2.5-coder:14b",
  "provider": {
    "id": "ollama",
    "baseUrl": "http://localhost:11434/v1"
  },
  "options": {
    "temperature": 0.1,
    "numCtx": 32768
  }
}

LM Studio 方案

下载 LM Studio

在 LM Studio 中下载模型并启动本地服务器

配置 OpenCode:

{
  "model": "local-model",
  "provider": {
    "id": "openai",
    "baseUrl": "http://localhost:1234/v1",
    "apiKey": "not-needed"
  }
}

LM Studio 提供 OpenAI 兼容的 API,所以 provider.id 用 openai,baseUrl 指向本地。

Go 订阅服务

OpenCode Go 是官方提供的低成本模型订阅服务,让你以固定月费访问多个优质开源模型:

{
  "provider": {
    "id": "opencode-go",
    "apiKey": "${OPENCODE_GO_KEY}"
  },
  "model": "qwen2.5-coder-32b"
}

Go 订阅的特点:

  • 固定月费:不限 Token 使用量
  • 多模型选择:Qwen2.5 Coder、DeepSeek Coder 等
  • 无需自建:不消耗本地 GPU 资源
  • 低延迟:专门优化的推理服务

Token 管理与成本优化

跟踪 Token 使用

在 TUI 界面中开启 Token 显示:

{
  "tui": {
    "display": {
      "showTokenCount": true
    }
  }
}

在终端底部会实时显示本轮会话的 Token 消耗。

控制上下文窗口

{
  "session": {
    "maxContextTokens": 180000,
    "autoSummarize": true,
    "summarizeThreshold": 0.75
  }
}
  • maxContextTokens:限制发送给模型的上下文大小
  • autoSummarize:上下文达到阈值时自动总结历史对话
  • summarizeThreshold:触发总结的阈值(0.75 表示 75% 满时触发)

成本控制策略

1. 任务分级使用不同模型

{
  "models": {
    "cheap": {
      "provider": "deepseek",
      "model": "deepseek-chat",
      "options": { "temperature": 0.1, "maxOutputTokens": 4096 }
    },
    "premium": {
      "provider": "anthropic",
      "model": "claude-sonnet-4-20250514",
      "options": { "temperature": 0.1, "maxOutputTokens": 16384 }
    }
  }
}

简单任务用 DeepSeek(廉价),复杂任务用 Claude(高质量)。

2. Plan 模式用便宜模型

在 Plan 模式下使用低成本模型做代码分析,仅在需要修改代码时切换到高性能模型。

3. 控制工具调用深度

限制 Agent 的并行任务数和工具调用层级:

{
  "advanced": {
    "maxConcurrency": 2,
    "maxToolDepth": 5
  }
}

4. 设置上下文排除项

减少不必要的上下文内容:

{
  "context": {
    "exclude": [
      "node_modules",
      "dist",
      ".git",
      "vendor",
      "*.lock",
      "*.min.js",
      "*.map"
    ],
    "maxFiles": 30
  }
}

Policies 策略系统

Policies 让你可以为不同场景配置不同的模型策略:

{
  "policies": {
    "default": {
      "model": "claude-sonnet-4-20250514"
    },
    "plan": {
      "model": "deepseek-chat"
    },
    "night": {
      "model": "qwen2.5-coder:14b"
    }
  }
}

自定义 Provider 接入

如果你的 API 是 OpenAI 兼容的,可以这样接入:

{
  "models": {
    "custom": {
      "provider": "openai",
      "baseUrl": "https://your-custom-api.com/v1",
      "model": "your-model-name",
      "apiKey": "${CUSTOM_API_KEY}"
    }
  }
}

对于完全自定义的 Provider,可以通过 OpenCode 插件系统实现。

小结

从全球顶尖的 Claude 到本地运行的 Qwen,从按量付费的 API 到固定月费的 Go 订阅——OpenCode 的模型配置系统给了你极大的灵活度。合理的模型策略不仅提升开发体验,还能大幅降低使用成本。

下一篇我们将深入 OpenCode 的自定义命令 (Commands) 系统,学习用快捷指令将重复性操作变为一键触发。