在 OpenCode 中使用 BigModel.io
在 opencode.json 中把 BigModel.io 添加为 OpenAI 兼容提供方,baseURL 填 https://bigmodel.io/v1,为 GLM、Kimi、DeepSeek 设置上下文限制,并排查常见报错。
OpenCode 通过 @ai-sdk/openai-compatible 支持任意 OpenAI 兼容接口。它调用 /v1/chat/completions,所以适用于所有提供文本模型的 BigModel.io 分组,包括仅支持 Chat Completions 的 GLM、DeepSeek 分组。
| 配置项 | 值 |
|---|---|
npm |
@ai-sdk/openai-compatible |
options.baseURL |
https://bigmodel.io/v1 |
options.apiKey |
{env:BIGMODEL_API_KEY} |
models |
模型目录中的模型 ID |
limit.context / limit.output |
模型页上的上下文窗口和最大输出 |
#配置 opencode.json
写入 ~/.config/opencode/opencode.json(所有项目)或项目根目录的 opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"bigmodel": {
"npm": "@ai-sdk/openai-compatible",
"name": "BigModel.io",
"options": {
"baseURL": "https://bigmodel.io/v1",
"apiKey": "{env:BIGMODEL_API_KEY}"
},
"models": {
"glm-5.3": { "name": "GLM-5.3" },
"glm-5.3-flash": { "name": "GLM-5.3 Flash" },
"kimi-k3": { "name": "Kimi K3" },
"deepseek-v4-pro": { "name": "DeepSeek V4 Pro" }
}
}
},
"model": "bigmodel/glm-5.3",
"small_model": "bigmodel/glm-5.3-flash"
}models 下的每个键必须是准确的模型 ID,name 只是 OpenCode 显示的名称。{env:BIGMODEL_API_KEY} 从环境变量读取 Key,配置文件可以放心分享。model 和 small_model 使用 提供方/模型 格式,small_model 负责生成标题等轻量任务。
export BIGMODEL_API_KEY="sk-..."
opencode#设置上下文限制
OpenCode 不知道自定义模型的上下文窗口。给每个模型加上 limit,让它在合适的时机压缩历史。数值以模型页为准,下面只是占位:
"glm-5.3": {
"name": "GLM-5.3",
"limit": { "context": 128000, "output": 16000 }
}#改用 /connect 保存 Key
不想用环境变量的话,在 OpenCode 中运行 /connect,选择 Other,提供方 ID 填 bigmodel,再粘贴 Key。OpenCode 会把它保存在 ~/.local/share/opencode/auth.json。之后从 options 中删掉 apiKey。
#验证配置
在 OpenCode 中运行 /models,应列出配置里的 BigModel.io 模型。选一个发送简短提示词,在用量页确认出现这条请求。
#常见问题排查
/models 里没有 BigModel.io。 JSON 格式错误或位置不对。校验 JSON,并确认项目里的 opencode.json 没有覆盖全局配置。
401 API_KEY_REQUIRED。 启动 OpenCode 的终端里 BIGMODEL_API_KEY 为空,或 /connect 时填写的提供方 ID 与 provider 下的键不一致。
503 api_error:No available accounts: no available accounts supporting model: ...。 models 下的键与分组提供的模型不一致,请从模型页复制 ID。
所有请求都返回 404。 baseURL 缺少 /v1,或多加了 /chat/completions。
长会话失败或被截断。 没有设置 limit.context 或设得过大,改成模型的真实上下文窗口。
工具调用失败或循环。 不同模型处理长任务的能力不同。换个模型试试,第一次先用小任务。
403 INSUFFICIENT_BALANCE 或 429。 到充值页充值。429 rate_limit_error("Too many pending requests")表示并行请求过多,稍后重试。
#相关文档
- Codex、Claude Code、Cursor、Cline 如何配置 Base URL
- Claude Code 和 Codex CLI:另外两个终端编程助手。
- 从 OpenRouter 迁移:配置里用了
provider/model格式时参考。
更新于 · 以 Markdown 查看