- 协议
- OpenAI Chat Completions · OpenAI Responses
- 基础地址
https://www.realrelay.ai/v1- 官方文档
- opencode.ai
- 已对照工具官方文档核对
- 2026-10
概览
OpenCode 是一个运行在终端里的开源编码智能体。它会读取你的项目、编辑文件并运行命令。你把 RealRelay.ai 添加为它的自定义提供商后,它会把请求发到 Chat Completions 端点 /v1/chat/completions。
一个从控制台的 API 密钥页面获取的 API 密钥。
末尾带
/v1的基础地址。OpenCode 会在后面拼上/chat/completions。一个与
GET /v1/models列出的完全一致的模型 ID,例如z-ai/glm-5.2。该模型需要支持工具调用。
本页针对 OpenCode 1,即 opencode.ai/docs 文档所述的当前稳定版。OpenCode 2 预览版的提供商配置结构不同,下面的文件不适用于它。
安装
任选一种 OpenCode 官方文档中的安装方式。它们安装的都是同一个 opencode 命令。
curl -fsSL https://opencode.ai/install | bashopencode --versionbrew install anomalyco/tap/opencodeOpenCode 推荐使用它自己的 tap。普通的 brew install opencode 公式由 Homebrew 维护,更新没那么及时。
npm install -g opencode-aichoco install opencode# orscoop install opencode如果 opencode --version 输出了版本号,说明安装成功。OpenCode 文档推荐使用 WezTerm、Alacritty、Ghostty 或 Kitty 等现代终端。
配置
- 1
把密钥存进环境变量
配置文件从
REALRELAY_API_KEY读取密钥,这样文件本身不含任何机密。~/.zshrc · ~/.bashrc export REALRELAY_API_KEY="sk-***"运行
source ~/.zshrc,或者新开一个终端。Windows PowerShell [Environment]::SetEnvironmentVariable("REALRELAY_API_KEY", "sk-***", "User")关闭并重新打开终端,让它读到新变量。
- 2
把 RealRelay.ai 添加为提供商
把下面的内容写进全局配置。如果只想在某个项目中使用,就把同样的内容写进项目根目录的
opencode.json。~/.config/opencode/opencode.json 1{2 "$schema": "https://opencode.ai/config.json",3 "provider": {4 "realrelay": {5 "npm": "@ai-sdk/openai-compatible",6 "name": "RealRelay.ai",7 "options": {8 "baseURL": "https://www.realrelay.ai/v1",9 "apiKey": "{env:REALRELAY_API_KEY}"10 },11 "models": {12 "z-ai/glm-5.2": {13 "name": "z-ai/glm-5.2",14 "limit": {15 "context": 200000,16 "output": 3200017 }18 }19 }20 }21 },22 "model": "realrelay/z-ai/glm-5.2"23}
realrelay是提供商 ID。它可以取任意名称,但所有模型引用都以它开头,例如realrelay/z-ai/glm-5.2。npm决定 OpenCode 加载哪个客户端。@ai-sdk/openai-compatible发送 Chat Completions 请求。OpenCode 启动时会把
{env:REALRELAY_API_KEY}替换为该变量的值。如果变量未设置,密钥就是空的,请求会以 401 失败。models下的每个键都是发给 RealRelay.ai 的模型 ID。limit告诉 OpenCode 上下文窗口和最大输出,因为 RealRelay.ai 的模型列表不包含这些信息。model设置新会话的默认模型。
你也可以用 OpenCode 的 /connect 命令保存密钥,而不用环境变量。选择 Other,输入与文件中相同的提供商 ID。然后删掉 apiKey 这一行。
1/connect2# Select provider → Other3# Enter provider id → realrelay4# Enter your API key → sk-***验证
- 1
直接调用端点
用你的密钥运行这条命令。如果返回的 JSON 包含
choices数组,说明地址、密钥和模型都没问题。Terminal 1curl -sS "https://www.realrelay.ai/v1/chat/completions" \2 -H "Authorization: Bearer sk-***" \3 -H "content-type: application/json" \4 -d '{"model": "z-ai/glm-5.2", "max_tokens": 16, "messages": [{"role": "user", "content": "Reply with OK"}]}' - 2
确认 OpenCode 识别到了提供商
第一条命令应把你的模型列为
realrelay/…。第二条会发送一条消息并打印回复。Terminal opencode models realrelayopencode run -m "realrelay/z-ai/glm-5.2" "Reply with OK" - 3
在项目中启动会话
运行
/models并选择 RealRelay.ai 模型,然后发一条简短消息。该请求会出现在控制台的用量日志中。OpenCode cd /path/to/your/projectopencode/models
模型
OpenCode 只显示你在提供商下列出的模型。要添加模型,就再加一个条目,写上它的 ID 和限制,然后用 /models 选中它,或者用 opencode -m realrelay/<model-id> 启动。
1"z-ai/glm-5.2": {2 "name": "z-ai/glm-5.2",3 "limit": { "context": 200000, "output": 32000 }4},5"<another-model-id>": {6 "name": "<another-model-id>",7 "limit": { "context": 128000, "output": 16000 }8}这些示例中的限制是安全的起始值。请把 limit.context 和 limit.output 设为模型目录页上的真实数值,这样 OpenCode 才会在合适的时机压缩对话。
少数 OpenAI 模型在 Responses 端点 /v1/responses 上提供。OpenCode 通过 @ai-sdk/openai 客户端访问该端点。为这些模型再添加一个使用同一密钥的提供商,其余模型仍使用 Chat Completions 提供商:
1"realrelay-responses": {2 "npm": "@ai-sdk/openai",3 "name": "RealRelay.ai (Responses)",4 "options": {5 "baseURL": "https://www.realrelay.ai/v1",6 "apiKey": "{env:REALRELAY_API_KEY}"7 },8 "models": {9 "openai/gpt-5.3-codex": {10 "name": "openai/gpt-5.3-codex",11 "limit": { "context": 400000, "output": 128000 }12 }13 }14}哪些模型适合智能体、哪些模型在 Responses 端点上提供,请见选择模型。
故障排查
/models中没有该提供商或模型。JSON 没有加载成功,或者models映射为空。检查 OpenCode 实际解析到的是哪份配置;对于相同的键,项目中的opencode.json会覆盖全局文件。Terminal opencode auth listopencode debug config401。密钥为空或有误。确认启动 OpenCode 的终端里设置了
REALRELAY_API_KEY。如果你用的是/connect,opencode auth list应显示你的提供商 ID,而且它必须与文件中的 ID 一致。404。基础地址缺少
/v1,或者已经以/chat/completions结尾。请使用以/v1结尾的地址。找不到模型。
models下的键必须与GET /v1/models返回的 ID 完全一致,包括斜杠前面的部分。只支持 Responses 的模型报错,或你移到 Responses 提供商下的模型报错。只有“选择模型”中列出的模型在
/v1/responses上提供。其他模型请留在@ai-sdk/openai-compatible提供商下。对话不断变长,直到请求被拒绝。
limit.context没有设置,或大于模型的真实窗口。按模型目录页设置它,然后运行/compact。智能体只描述修改,却不实际执行。该模型没有调用工具。请选择支持工具调用的模型。
