Skip to main content

OpenCode 配置规范与 1M 上下文模型

· 4 min read

OpenCode 的配置和 1M 上下文模型是两个最容易踩坑的地方——一个是 schema 字段没文档,一个是变体名写错直接走默认。

  1. 两份 JSON Schemaopencode.json / opencode.jsonc 主配置 + tui.json TUI 专属,schema URL 是 opencode.ai/config.json
  2. 1M 模型写法:model ID 后面挂 [1m] 后缀,比如 anthropic/claude-sonnet-4-6[1m],Anthropic 官方约定。
  3. TUI 显示百分比自动归一化:换 1M 模型后同样的 token 数,百分比变成原来的 1/5,不用额外配。
  4. Provider 实际限制:qwen3.7-plus 在 OpenCode 上硬卡 200k(issue #30838),即使模型标称 1M。
  5. 计费警告:1M 上下文分段计费——200k 之内一个价,200k 以上另一个价(贵几倍)。

OpenCode 的配置灵活度高,1M 上下文模型支持也完善。但这两块都是"文档零散、issue 里藏答案"的典型,踩坑了才看得见。下面整理目前能查到的权威信息。

OpenCode 的两份 JSON Schema

OpenCode 用 JSON Schema 约束配置,分两份:

  • 主配置 opencode.json / opencode.jsoncopencode.ai/config.json —— 模型、provider、permissions、mcp、compaction 等
  • TUI 专属 tui.jsonopencode.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 自己的网关地址(用来走代理 / 私有部署),不是模型 endpoint
  • apiKey 推荐走环境变量 ANTHROPIC_API_KEY,别直接写进 opencode.json——进 git 仓库就是事故
  • 多个 provider 并存时,provider.<name>.npm 字段控制包名(比如 @ai-sdk/anthropic),版本不匹配会静默 fallback 到默认

配置合并顺序

OpenCode 配置按下面顺序合并,后者覆盖前者

  1. 内置默认值
  2. 全局 ~/.config/opencode/opencode.json
  3. 项目 opencode.json(向上递归)
  4. 环境变量(OPENCODE_* 前缀)
  5. TUI / 命令行参数

项目级 opencode.json 覆盖全局,命令行 --model xxx 覆盖配置文件。变量替换用 ${VAR} 语法,比如 "apiKey": "${ANTHROPIC_API_KEY}"

References

  1. OpenCode Config Schema —— 主配置 JSON Schema
  2. OpenCode TUI Schema —— TUI 专属配置
  3. OpenCode Config 文档 —— 字段详解、合并顺序、变量替换
  4. OpenCode Providers 文档 —— 各家 provider 接入方式
  5. Anthropic Claude Pricing —— 1M 上下文分段计费
  6. Issue #30838 —— qwen3.7-plus 硬卡 200k 的 case