主题
OpenCode
开源的终端 AI 编码 Agent,最大特点是 provider 完全可配——同一个界面里可以随时切 Claude、GPT、Gemini、DeepSeek,非常适合配合中转站使用。
安装
bash
curl -fsSL https://opencode.ai/install | bashbash
npm install -g opencode-aibash
brew install sst/tap/opencode配置快米兔 API
配置文件:~/.config/opencode/opencode.json(Windows:%APPDATA%\opencode\opencode.json)。
方案 A:Anthropic 协议(跑 Claude 系模型,推荐)
json
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"kmt-claude": {
"npm": "@ai-sdk/anthropic",
"name": "快米兔 API (Claude)",
"options": {
"baseURL": "https://api.52pay.com/v1",
"apiKey": "<您的令牌>"
},
"models": {
"claude-opus-4-8": { "name": "Claude Opus 4.8" },
"claude-sonnet-4-6": { "name": "Claude Sonnet 4.6" },
"claude-haiku-4-5-20251001": { "name": "Claude Haiku 4.5" }
}
}
},
"model": "kmt-claude/claude-sonnet-4-6"
}方案 B:OpenAI 兼容协议(跑任意模型)
json
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"kmt": {
"npm": "@ai-sdk/openai-compatible",
"name": "快米兔 API",
"options": {
"baseURL": "https://api.52pay.com/v1",
"apiKey": "<您的令牌>"
},
"models": {
"gpt-5.5": { "name": "GPT-5.5" },
"claude-sonnet-4-6": { "name": "Claude Sonnet 4.6" },
"gemini-3-pro-preview": { "name": "Gemini 3 Pro" },
"deepseek-v4-pro": { "name": "DeepSeek V4 Pro" },
"kimi-k3": { "name": "Kimi K3" },
"glm-5.2": { "name": "GLM-5.2" }
}
}
},
"model": "kmt/claude-sonnet-4-6"
}两种方案可以并存
把 kmt-claude 和 kmt 两个 provider 都写进 provider 对象,交互模式里按 Tab 或用 /models 随时切。Claude 系走 Anthropic 协议能拿到更完整的缓存与工具语义,其它模型走 OpenAI 兼容协议。
这里的 baseURL 要带 /v1
和 Claude Code 不同:OpenCode 用的是 Vercel AI SDK,SDK 内部拼的是 /messages、/chat/completions 这样的相对路径,所以 baseURL 必须写到 /v1。
验证
bash
cd ~/your-project
opencode进入后输入一句 say pong,能正常返回即可。
也可以直接跑:
bash
opencode run "解释这个项目的目录结构"常用操作
| 操作 | 说明 |
|---|---|
/models | 切换模型 |
/new | 开新会话(清上下文) |
/share | 生成会话分享链接 |
/undo | 撤销上一次文件修改 |
Tab | 在 plan / build 模式间切换 |
常见错误
| 现象 | 原因 / 处理 |
|---|---|
| provider 列表里看不到快米兔 | JSON 写错了(尾逗号、引号),用 jq . opencode.json 校验 |
401 | apiKey 写错,或该分组无权限 |
model not found | models 里写的 ID 站内不存在,对照 模型与分组 |
| 模型能选但一调就 404 | baseURL 漏了 /v1 |
| Claude 模型没命中缓存 | 换成方案 A(Anthropic 协议)再试 |
