系列导航
本文是 OpenCode 从入门到精通 系列的第三篇。
系列导航:
引言
OpenCode的核心优势之一是支持75+AI模型提供商。合理配置和使用这些模型,不仅能获得最佳的开发体验,还能显著降低成本。本文将深入讲解模型配置的各个方面,从基础设置到高级优化策略。
为什么需要多模型配置?
成本效益分析
不同模型的价格差异巨大:
| 模型 | 输入价格 ($/1M tokens) | 输出价格 ($/1M tokens) | 适用场景 |
|---|---|---|---|
| Claude 3.5 Haiku | $0.80 | $4.00 | 简单任务、快速迭代 |
| Claude 3.7 Sonnet | $3.00 | $15.00 | 复杂推理、代码生成 |
| GPT-4o Mini | $0.15 | $0.60 | 低成本日常任务 |
| GPT-4o | $2.50 | $10.00 | 高质量代码生成 |
| Gemini 2.0 Flash | $0.10 | $0.40 | 超低成本任务 |
| Llama 3.2 (本地) | $0 | $0 | 隐私敏感、免费 |
策略:简单任务用便宜模型,复杂任务用强大模型。
性能与质量权衡
- 小型模型:速度快、成本低,适合补全、简单重构
- 大型模型:推理能力强,适合复杂架构设计、调试难题
隐私与合规
某些代码可能涉及敏感信息,需要使用本地模型或私有部署的AI服务。
配置基础
配置文件位置
OpenCode的配置文件层次:
~/.config/opencode/
├── config.json # 主配置文件
├── providers.json # 提供商配置
├── models.json # 模型定义
└── secrets/ # 加密的密钥存储
获取API密钥
在配置之前,需要获取相应提供商的API密钥:
Anthropic (Claude)
- 访问 console.anthropic.com
- 注册/登录账号
- 进入API Keys页面
- 创建新的API密钥
- 复制密钥(格式:
sk-ant-...)
OpenAI (GPT)
- 访问 platform.openai.com
- 注册/登录账号
- 进入API keys页面
- 创建新的Secret Key
- 复制密钥(格式:
sk-...)
Google (Gemini)
- 访问 makersuite.google.com
- 登录Google账号
- 获取API Key
- 复制密钥
交互式配置向导
最简单的配置方式:
# 运行配置向导
opencode config setup
# 按提示输入各提供商的API密钥
# 向导会自动完成配置和验证
手动配置示例
方法一:环境变量
# 在 ~/.bashrc 或 ~/.zshrc 中添加
export ANTHROPIC_API_KEY="sk-ant-..."
export OPENAI_API_KEY="sk-..."
export GOOGLE_API_KEY="..."
# 重新加载配置
source ~/.bashrc # 或 source ~/.zshrc
方法二:配置文件
// ~/.config/opencode/providers.json
{
"anthropic": {
"enabled": true,
"apiKey": "${ANTHROPIC_API_KEY}",
"baseUrl": "https://api.anthropic.com"
},
"openai": {
"enabled": true,
"apiKey": "${OPENAI_API_KEY}",
"baseUrl": "https://api.openai.com/v1"
},
"google": {
"enabled": true,
"apiKey": "${GOOGLE_API_KEY}",
"baseUrl": "https://generativelanguage.googleapis.com"
}
}
方法三:加密存储(推荐)
# 安全存储API密钥
opencode secrets set anthropic.apiKey
# 提示输入密钥,密钥会被加密存储
opencode secrets set openai.apiKey
opencode secrets set google.apiKey
# 查看已存储的密钥(不显示实际值)
opencode secrets list
主流提供商配置详解
Anthropic (Claude) 配置
Claude系列模型在代码生成和理解方面表现优异。
{
"anthropic": {
"enabled": true,
"apiKey": "${ANTHROPIC_API_KEY}",
"models": {
"claude-3.7-sonnet": {
"alias": "claude-sonnet",
"maxTokens": 4096,
"temperature": 0.7,
"costPerInput1M": 3.00,
"costPerOutput1M": 15.00
},
"claude-3.5-haiku": {
"alias": "claude-haiku",
"maxTokens": 4096,
"temperature": 0.7,
"costPerInput1M": 0.80,
"costPerOutput1M": 4.00
}
},
"defaultModel": "claude-3.7-sonnet"
}
}
推荐设置:
- 复杂任务:claude-3.7-sonnet
- 快速迭代:claude-3.5-haiku
- temperature建议:代码生成0.7,分析任务0.3
OpenAI (GPT) 配置
GPT系列模型响应速度快,成本低。
{
"openai": {
"enabled": true,
"apiKey": "${OPENAI_API_KEY}",
"models": {
"gpt-4o": {
"alias": "gpt4",
"maxTokens": 4096,
"temperature": 0.7,
"costPerInput1M": 2.50,
"costPerOutput1M": 10.00
},
"gpt-4o-mini": {
"alias": "gpt-mini",
"maxTokens": 4096,
"temperature": 0.7,
"costPerInput1M": 0.15,
"costPerOutput1M": 0.60
}
},
"defaultModel": "gpt-4o"
}
}
Google (Gemini) 配置
Gemini提供免费额度,适合测试和学习。
{
"google": {
"enabled": true,
"apiKey": "${GOOGLE_API_KEY}",
"models": {
"gemini-2.0-flash": {
"alias": "gemini-flash",
"maxTokens": 8192,
"temperature": 0.7,
"costPerInput1M": 0.10,
"costPerOutput1M": 0.40
},
"gemini-1.5-pro": {
"alias": "gemini-pro",
"maxTokens": 8192,
"temperature": 0.7,
"costPerInput1M": 1.25,
"costPerOutput1M": 10.00
}
},
"defaultModel": "gemini-2.0-flash"
}
}
OpenRouter 配置
OpenRouter提供统一API访问多种模型,适合尝试新模型。
{
"openrouter": {
"enabled": true,
"apiKey": "${OPENROUTER_API_KEY}",
"baseUrl": "https://openrouter.ai/api/v1",
"models": {
"anthropic/claude-3.7-sonnet": {
"alias": "or-claude",
"maxTokens": 4096
},
"openai/gpt-4o": {
"alias": "or-gpt4",
"maxTokens": 4096
}
}
}
}
本地模型配置
Ollama集成
Ollama让本地运行大模型变得简单。
安装Ollama:
# macOS/Linux
curl -fsSL https://ollama.com/install.sh | sh
# 下载模型
ollama pull llama3.2:3b
ollama pull codellama:7b
ollama pull deepseek-coder:6.7b
OpenCode配置:
{
"ollama": {
"enabled": true,
"baseUrl": "http://localhost:11434",
"models": {
"llama3.2:3b": {
"alias": "llama",
"maxTokens": 4096,
"temperature": 0.7
},
"codellama:7b": {
"alias": "codellama",
"maxTokens": 4096,
"temperature": 0.7
},
"deepseek-coder:6.7b": {
"alias": "deepseek",
"maxTokens": 4096,
"temperature": 0.7
}
}
}
}
测试本地模型:
# 启动Ollama服务
ollama serve
# 在OpenCode中使用本地模型
opencode --model llama
推荐的本地模型
| 模型 | 大小 | 内存需求 | 特点 |
|---|---|---|---|
| Llama 3.2 3B | 2GB | 8GB RAM | 通用任务,速度快 |
| CodeLlama 7B | 4GB | 16GB RAM | 代码专用,质量好 |
| DeepSeek Coder 6.7B | 4GB | 16GB RAM | 中文友好,代码质量高 |
| Qwen 2.5 Coder 7B | 4GB | 16GB RAM | 国产优秀模型 |
vLLM/LM Studio集成
对于更高级的本地部署,可以使用vLLM或LM Studio:
{
"vllm": {
"enabled": true,
"baseUrl": "http://localhost:8000/v1",
"models": {
"llama-3-70b": {
"alias": "vllm-llama",
"maxTokens": 8192
}
}
}
}
智能路由策略
基于任务类型的路由
根据任务复杂度自动选择模型:
{
"routing": {
"rules": [
{
"name": "simple-tasks",
"condition": {
"taskComplexity": "low",
"estimatedTokens": "< 1000"
},
"model": "gpt-4o-mini"
},
{
"name": "complex-reasoning",
"condition": {
"taskType": ["architecture", "debugging", "refactoring"],
"taskComplexity": "high"
},
"model": "claude-3.7-sonnet"
},
{
"name": "privacy-sensitive",
"condition": {
"filePath": ["**/secrets/**", "**/.env/**", "**/credentials/**"]
},
"model": "llama3.2:3b"
}
]
}
}
基于文件类型的路由
{
"routing": {
"fileTypeRules": {
"*.test.*": "gpt-4o-mini",
"*.spec.*": "gpt-4o-mini",
"*.config.*": "llama3.2:3b",
"src/core/**/*": "claude-3.7-sonnet"
}
}
}
成本优化配置
设置每日/每月预算上限:
{
"budget": {
"dailyLimit": 10.00,
"monthlyLimit": 200.00,
"alertThreshold": 0.8,
"fallbackModel": "llama3.2:3b",
"actions": {
"onLimitReached": "switch-to-local",
"onApproachingLimit": "notify"
}
}
}
实战配置模板
个人开发者配置
{
"version": "1.0",
"defaultProvider": "anthropic",
"providers": {
"anthropic": {
"enabled": true,
"apiKey": "${ANTHROPIC_API_KEY}",
"defaultModel": "claude-3.5-haiku"
},
"openai": {
"enabled": true,
"apiKey": "${OPENAI_API_KEY}",
"defaultModel": "gpt-4o-mini"
},
"ollama": {
"enabled": true,
"baseUrl": "http://localhost:11434",
"defaultModel": "llama3.2:3b"
}
},
"routing": {
"defaultModel": "claude-3.5-haiku",
"complexTaskModel": "claude-3.7-sonnet",
"localModel": "llama3.2:3b"
},
"budget": {
"monthlyLimit": 50.00
}
}
团队配置
{
"version": "1.0",
"defaultProvider": "openai",
"providers": {
"openai": {
"enabled": true,
"apiKey": "${OPENAI_API_KEY}",
"defaultModel": "gpt-4o"
},
"anthropic": {
"enabled": true,
"apiKey": "${ANTHROPIC_API_KEY}",
"defaultModel": "claude-3.7-sonnet"
}
},
"routing": {
"rules": [
{
"name": "code-review",
"condition": { "agent": "plan" },
"model": "gpt-4o-mini"
},
{
"name": "new-features",
"condition": { "agent": "build", "taskType": "new-feature" },
"model": "claude-3.7-sonnet"
}
]
},
"budget": {
"monthlyLimit": 500.00,
"perMemberLimit": 50.00
},
"audit": {
"enabled": true,
"logLevel": "detailed"
}
}
企业配置
{
"version": "1.0",
"defaultProvider": "azure",
"providers": {
"azure": {
"enabled": true,
"apiKey": "${AZURE_OPENAI_KEY}",
"baseUrl": "${AZURE_OPENAI_ENDPOINT}",
"defaultModel": "gpt-4o"
},
"anthropic": {
"enabled": true,
"apiKey": "${ANTHROPIC_API_KEY}",
"defaultModel": "claude-3.7-sonnet"
}
},
"security": {
"dataClassification": {
"public": ["gpt-4o", "claude-3.7-sonnet"],
"internal": ["gpt-4o-mini"],
"confidential": ["local-only"]
}
},
"compliance": {
"auditLog": true,
"dataRetention": "90d",
"encryption": "AES-256"
}
}
验证与测试
测试配置
# 列出所有可用模型
opencode models list
# 测试特定提供商
opencode test --provider anthropic
opencode test --provider openai
# 测试特定模型
opencode test --model claude-3.7-sonnet
# 发送测试请求
opencode chat --model gpt-4o-mini "Hello, are you working?"
性能基准测试
# 运行基准测试
opencode benchmark run --models claude-3.7-sonnet,gpt-4o,claude-3.5-haiku
# 查看结果
opencode benchmark results
# 比较模型
opencode benchmark compare claude-3.7-sonnet gpt-4o
成本监控
# 查看使用统计
opencode usage stats
# 按提供商统计
opencode usage stats --by-provider
# 按日期统计
opencode usage stats --range 2026-02-01:2026-02-28
# 导出报告
opencode usage report --format csv --output usage-report.csv
故障排查
常见问题与解决方案
1. API密钥无效
症状:Error: Invalid API key
解决:
# 验证密钥格式
opencode secrets validate anthropic
# 重新设置密钥
opencode secrets set anthropic.apiKey
2. 连接超时
症状:Error: Connection timeout
解决:
# 检查网络连接
curl -I https://api.anthropic.com
# 增加超时时间
opencode config set providers.anthropic.timeout 60000
# 配置代理(如果需要)
export HTTPS_PROXY=http://proxy.example.com:8080
3. 模型不可用
症状:Error: Model not found
解决:
# 检查可用模型
opencode models list --provider anthropic
# 更新模型配置
opencode models refresh
# 使用正确的模型名称
opencode chat --model claude-3-7-sonnet-20250219
4. 本地模型不工作
症状:Error: Cannot connect to Ollama
解决:
# 确认Ollama正在运行
curl http://localhost:11434/api/tags
# 重启Ollama
ollama serve
# 检查模型是否已下载
ollama list
5. Token超限
症状:Error: Rate limit exceeded
解决:
# 查看当前使用量
opencode usage current
# 等待限额重置或升级账户
# 配置本地模型作为备用
opencode config set routing.fallbackModel llama3.2:3b
日志分析
# 查看错误日志
opencode logs errors
# 查看API调用日志
opencode logs api --tail 100
# 调试模式
opencode --debug
# 详细日志
opencode --verbose --log-level debug
最佳实践总结
1. 安全存储密钥
❌ 不要:在配置文件中硬编码API密钥 ✅ 应该:使用环境变量或加密存储
2. 合理设置预算
- 个人开发者:月预算$20-50
- 小团队:月预算$100-500
- 企业:根据需求定制
3. 选择合适的模型
- 快速原型:GPT-4o Mini / Claude Haiku
- 生产代码:Claude Sonnet / GPT-4o
- 隐私敏感:本地模型
4. 监控使用情况
- 每周检查使用统计
- 设置预算警报
- 优化高频任务
5. 准备备用方案
- 配置多个提供商
- 设置本地模型备用
- 制定故障切换策略
总结
通过本文的学习,您应该能够:
- ✅ 配置多个AI模型提供商
- ✅ 设置本地模型集成
- ✅ 实施智能路由策略
- ✅ 优化使用成本
- ✅ 解决常见配置问题
下一步学习
- 下一篇:开发工作流优化 - 学习如何将OpenCode深度集成到日常开发流程中
- 实践练习 - 在实际项目中应用多模型配置
- 成本计算器 - 估算您的使用成本
更新时间:2026-02-26
OpenCode版本:v1.2.14+
反馈建议:如果您发现本文有任何问题或改进建议,欢迎通过 GitHub Issues 反馈。