OpenCode · 手动配置

v1.17.82026-06-17MITGitHub
适用场景
直接改 opencode.json 配 provider 与 model;项目级覆盖用户级
面向读者
一个供应商要接多模型;项目仓库要锁定模型/参数
TL;DR
provider 写 provider.<name>;model 字段格式 <name>/<model-id>

配置文件位置

范围路径
全局(推荐)~/.config/opencode/opencode.json
终端 UI 偏好~/.config/opencode/tui.json
项目级(覆盖全局)仓库根目录 opencode.json
缓存的鉴权信息~/.local/share/opencode/auth.json
系统级(管理员部署)macOS /Library/Application Support/opencode/、Linux /etc/opencode/、Windows %ProgramData%\opencode

Windows 上 ~/.config/ 对应 %APPDATA%~/.local/share/ 对应 %LOCALAPPDATA%

文件格式是 JSONC——可以写 // 注释。


最小可用模板

{
  "provider": {
    "foropencode": {
      "options": {
        "baseURL": "https://foropencode.com/v1",
        "apiKey": "{env:OPENAI_API_KEY}"
      }
    }
  },
  "model": "foropencode/gpt-5.5"
}

然后导出 Key:

export OPENAI_API_KEY=sk-xxx

启动 opencode


顶层字段

字段含义
provider所有供应商的字典
model默认用哪个模型,格式 <provider 名>/<model ID>
themeTUI 主题
keybinds自定义快捷键
mcpMCP server 配置
agent自定义 agent 行为(继承 build / plan
references上下文引用文件列表(reference 已废弃,用 references

provider.<name>

{
  "provider": {
    "foropencode": {
      "options": {
        "baseURL": "https://foropencode.com/v1",
        "apiKey": "{env:OPENAI_API_KEY}"
      }
    },
    "anthropic-direct": {
      "options": {
        "baseURL": "https://foropencode.com",
        "apiKey": "{env:ANTHROPIC_API_KEY}"
      }
    }
  }
}
子字段含义
options.baseURLAPI 根地址;OpenAI 兼容端点带 /v1,Anthropic 端点不带
options.apiKeyAPI Key;可用 {env:VAR} 引用环境变量
options.headers额外 HTTP 头,例如外接场景的 UA
disabledtrue 时该 provider 不出现在选择器

{env:VAR}{file:PATH} 是 OpenCode 的占位语法,启动时解析。这样 Key 不进配置文件,安全些。


模型规格速查

模型上下文窗口最大输出
gpt-5.5270,000(普通渠道)/ 1,050,000(Pro/Plus Codex)128,000
gpt-5.41,050,000128,000
gpt-5.4-mini400,000128,000
claude-opus-4-81,000,000128,000
claude-sonnet-4-61,000,00064,000
claude-haiku-4-5-20251001200,00064,000

provider.<name>.models.<id>

在 provider 下可为每个模型单独声明上下文窗口、最大输出、推理档位和 I/O 能力,OpenCode 会据此在模型选择器里显示档位切换和附件支持提示。

{
  "provider": {
    "foropencode": {
      "options": {
        "baseURL": "https://foropencode.com/v1",
        "apiKey": "{env:OPENAI_API_KEY}"
      },
      "models": {
        "gpt-5.5": {
          "options": {
            "contextLength": 270000,
            "maxTokens": 128000
          },
          "variants": {
            "low":    { "reasoningEffort": "low" },
            "medium": { "reasoningEffort": "medium" },
            "high":   { "reasoningEffort": "high" }
          },
          "modalities": {
            "input":  ["text", "image"],
            "output": ["text", "image"]
          }
        }
      }
    }
  }
}

普通渠道上下文 270K;Pro/Plus Codex 账号可将 contextLength 改为 1050000

字段含义
options.contextLength上下文窗口 Token 数
options.maxTokens单次最大输出 Token 数
variants推理深度档位;每个 key 是档位名,值为 { "reasoningEffort": "low|medium|high" }
modalities.input模型接受的输入类型,可填 textimageaudiovideopdf
modalities.output模型可输出的类型,可填 textimageaudio

以上字段均可省略——省略时 OpenCode 自动推断,但显式声明可让选择器正确显示档位和附件支持。


多 provider + model 前缀

{
  "provider": {
    "fc-claude": {
      "options": {
        "baseURL": "https://foropencode.com",
        "apiKey": "{env:ANTHROPIC_KEY}"
      }
    },
    "fc-gpt": {
      "options": {
        "baseURL": "https://foropencode.com/v1",
        "apiKey": "{env:OPENAI_KEY}"
      }
    }
  },
  "model": "fc-gpt/gpt-5.5"
}

model 字段的前缀必须对应 provider 里某个 ID。切换模型时改前缀即可:

{ "model": "fc-claude/claude-sonnet-4-6" }

项目级覆盖

仓库根放一个 opencode.json

{
  "model": "fc-claude/claude-haiku-4-5"
}

启动 opencode 时项目级会合并到全局上,项目级优先

适用场景:

  • 团队仓库锁定模型(避免大家随便切)
  • 不同项目用不同 Key(项目级覆盖 provider.<name>.options.apiKey
  • CI 里跑 OpenCode,项目里直接写好

环境变量覆盖

变量作用
OPENCODE_CONFIG指定单个配置文件路径
OPENCODE_CONFIG_DIR指定配置目录
OPENCODE_CONFIG_CONTENT直接把 JSON 内容塞进环境变量
OPENCODE_TUI_CONFIG终端 UI 配置
OPENCODE_MODEL本次会话用的模型,覆盖配置文件
OPENCODE_MODEL="fc-claude/claude-opus-4-7" opencode

CLI vs 桌面版 的差异

维度CLI桌面版
配置文件~/.config/opencode/opencode.json同一个
项目级覆盖自动读 cwd 下的 opencode.json
当前稳定度主线稳定BETA
完全独立配置OPENCODE_CONFIG_DIR 指向另一个目录给桌面版单独建启动脚本传 env

改完 config:

  • CLI:重启 opencode
  • 桌面版:完全退出 + 重启

常见排查

现象检查
启动报 model not foundmodel 前缀是不是 provider 里某个 ID
apiKey is empty{env:VAR} 引用的环境变量是否真的有值
桌面版读不到 config完全退出(含菜单栏图标)再启动;BETA 期偶有缓存问题
reference is deprecatedreference 改成 references(v1.17.0+ breaking change)

相关