OpenCode 配置规范与 1M 上下文模型
OpenCode 的配置和 1M 上下文模型是两个最容易踩坑的地方——一个是 schema 字段没文档,一个是变体名写错直接走默认。
- 两份 JSON Schema:
opencode.json/opencode.jsonc主配置 +tui.jsonTUI 专属,schema URL 是 opencode.ai/config.json。 - 1M 模型写法:model ID 后面挂
[1m]后缀,比如anthropic/claude-sonnet-4-6[1m],Anthropic 官方约定。 - TUI 显示百分比自动归一化:换 1M 模型后同样的 token 数,百分比变成原来的 1/5,不用额外配。
- Provider 实际限制:qwen3.7-plus 在 OpenCode 上硬卡 200k(issue #30838),即使模型标称 1M。
- 计费警告:1M 上下文分段计费— —200k 之内一个价,200k 以上另一个价(贵几倍)。
OpenCode 的配置灵活度高,1M 上下文模型支持也完善。但这两块都是"文档零散、issue 里藏答案"的典型,踩坑了才看得见。下面整理目前能查到的权威信息。
OpenCode 的两份 JSON Schema
OpenCode 用 JSON Schema 约束配置,分两份:
- 主配置
opencode.json/opencode.jsonc:opencode.ai/config.json —— 模型、provider、permissions、mcp、compaction 等 - TUI 专属
tui.json:opencode.ai/tui.json —— keybinds、theme、scrollback 等界面行为
强烈建议 在
opencode.json顶部加"$schema": "https://opencode.ai/config.json",编辑器(VS Code / Neovim)会立刻给出字段提示和拼写检查,配置错误率能少一大半。
1M 上下文模型怎么配
OpenCode 的 model ID 格式是 <provider>/<model-name>,比如 anthropic/claude-sonnet-4-6。
1M 上下文的版本直接在 model 名字后面挂 [1m] 后缀——这是 Anthropic 官方 API 的约定,OpenCode 沿用:
{
"$schema": "https://opencode.ai/config.json",
"model": "anthropic/claude-sonnet-4-6[1m]"
}
TUI 里也能切:<Leader>+m 打开 model list,1M 变体会显式标注。用 OpenCode Zen 的同学在 TUI 里跑 /models 也能看到。
最佳实践:TUI 右下角显示的上下文百分比会自动按模型实际 context 重新归一化,不需要任何额外配置。换成 1M 模型之后同样的 token 数,百分比会变成原来的 1/5。如果百分比看着比预期小很多,多半是 provider 实际只给 200k(issue #30838 报过 qwen3.7-plus 在 OpenCode 上硬卡 200k,即使模型标称 1M),不是配置问题。
计费提醒:1M 上下文在 Anthropic 是分段计费——200k 之内一个价,200k 以上另一个价(贵几倍)。长对话开始心疼账单的时候去看 Anthropic 定价页。
Provider 配置的几个常见踩坑
配置 provider 时最容易出错的是 base URL 和 auth:
{
"provider": {
"anthropic": {
"options": {
"baseURL": "https://api.example.com/anthropic",
"apiKey": "<REDACTED>"
}
}
}
}
几个细节:
baseURL是 provider 自己的网关地址(用来走代理 / 私有部署),不是模型 endpointapiKey推荐走环境变量ANTHROPIC_API_KEY,别直接写进opencode.json——进 git 仓库就是事故- 多个 provider 并存时,
provider.<name>.npm字段控制包名(比如@ai-sdk/anthropic),版本不匹配会静默 fallback 到默认
配置合并顺序
OpenCode 配置按下面顺序合并,后者覆盖前者:
- 内置默认值
- 全局
~/.config/opencode/opencode.json - 项目
opencode.json(向上递归) - 环境变量(
OPENCODE_*前缀) - TUI / 命令行参数
项目级 opencode.json 覆盖全局,命令行 --model xxx 覆盖配置文件。变量替换用 ${VAR} 语法,比如 "apiKey": "${ANTHROPIC_API_KEY}"。
References
- OpenCode Config Schema —— 主配 置 JSON Schema
- OpenCode TUI Schema —— TUI 专属配置
- OpenCode Config 文档 —— 字段详解、合并顺序、变量替换
- OpenCode Providers 文档 —— 各家 provider 接入方式
- Anthropic Claude Pricing —— 1M 上下文分段计费
- Issue #30838 —— qwen3.7-plus 硬卡 200k 的 case