当您希望 OpenCode 与行为类似于 OpenAI 聊天补全 API 的模型路由进行通信,同时您的团队将密钥所有权、模型路由和使用情况审查保留在一个网关中时,**OpenCode OpenAI 兼容提供商**设置非常有用。
重要的是,OpenCode 有一个记录在案的自定义提供商路径。在 2026 年 7 月 8 日查阅的 OpenCode 提供商文档中,流程是:使用 /connect 添加凭据,为尚未列出的提供商选择**其他**,为该提供商指定一个易于记忆的 ID,在 opencode.json 中配置提供商,然后运行 /models 从已配置的模型中进行选择。
Flatkey 作为提供商背后的网关,符合该模式。您可以保留 OpenCode 作为编码代理,将提供商指向 Flatkey OpenAI 兼容的 API 基础 URL,并在将其设为默认路由之前,验证 OpenCode 模型流量是否出现在 Flatkey 的使用情况或请求日志中。
OpenCode OpenAI 兼容提供商设置快速解答
当模型端点与聊天补全兼容时,请使用此设置形式。
| 决策 | 推荐值 | 重要性原因 |
|---|---|---|
| 提供商 ID | flatkey |
ID 必须在 /connect、opencode.json 和所选模型之间保持一致。 |
| NPM 包 | @ai-sdk/openai-compatible |
OpenCode 文档为使用 /v1/chat/completions 的 OpenAI 兼容提供商指定了此包。 |
| OpenCode API 基础 URL | https://router.flatkey.ai/v1 |
Flatkey 的公共站点将 OpenAI 兼容的客户端指向此 API 根目录。 |
| 模型 ID | 您的密钥可用的当前 Flatkey 模型别名 | OpenCode 在 /models 选择器中使用已配置的模型 ID。 |
| 验证 | OpenCode 响应加上 Flatkey 请求或使用日志 | 这证明编码代理请求使用了预期的网关路由。 |
| 回滚 | 保留先前的 model 值和之前的提供商配置 |
提供商变更应该是可逆的,无需重构您的提示或代理工作流。 |
本 **OpenCode OpenAI 兼容提供商**指南使用模板。在路由生产编码代理工作之前,请根据您的 Flatkey 帐户验证确切的模型别名和端点系列。
OpenCode 的要求
对于自定义提供商,OpenCode 有两个独立的状态部分。
| OpenCode 层 | 您配置的内容 | 需要遵守的源行为 |
|---|---|---|
| 凭据 | 通过 /connect 在**其他**下输入的 API 密钥 |
您在此处输入的提供商 ID 必须与配置中的提供商 ID 匹配。 |
| 提供商配置 | opencode.json 中的 provider.<id> |
该配置命名了 AI SDK 包、基础 URL、模型以及可选的标头或 API 密钥引用。 |
| 模型选择 | /models 选择器或默认 model 值 |
提供商配置完成后,已配置的提供商模型才会出现。 |
| 运行时默认值 | model 和可选的 small_model |
OpenCode 配置支持针对普通和轻量级任务的提供商/模型默认值。 |
OpenCode 配置可以是 JSON 或 JSONC 格式。您可以将其全局放置在 ~/.config/opencode/opencode.json,或作为 opencode.json 放在项目根目录中。项目配置具有更高的标准优先级,因此当您希望一个存储库测试 Flatkey 而不更改每个 OpenCode 工作区时,请使用项目文件。
第 1 步:为 OpenCode 创建一个 Flatkey 密钥
为此工作负载创建一个 Flatkey 密钥,并在源代码控制之外记录三个值。
FLATKEY_API_KEY=sk-fk-your-key
FLATKEY_BASE_URL=https://router.flatkey.ai/v1
FLATKEY_MODEL=your-current-flatkey-model-alias
将 API 根目录与端点路径分开。OpenCode 提供商配置应使用 https://router.flatkey.ai/v1 作为 options.baseURL;直接的 HTTP 冒烟测试会添加 /chat/completions。
在连接 OpenCode 之前,请使用相同的 Flatkey 密钥和模型别名运行直接测试。
curl "$FLATKEY_BASE_URL/chat/completions" \
-H "Authorization: Bearer $FLATKEY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "'"$FLATKEY_MODEL"'",
"messages": [
{ "role": "user", "content": "Reply with exactly: flatkey route ok" }
]
}'
如果此直接请求失败,请在调试 OpenCode 之前修复 Flatkey 密钥、模型别名、端点系列或帐户路由。**OpenCode OpenAI 兼容提供商**无法补偿网关帐户无法调用的模型别名。
第 2 步:在 OpenCode 中添加 Flatkey 凭据
OpenCode 通过 /connect 存储提供商凭据。在 OpenCode TUI 中:
/connect
选择**其他**,输入提供商 ID(例如 flatkey),然后粘贴 Flatkey API 密钥。不要在凭据提示中粘贴基础 URL。密钥用于证明身份;基础 URL 属于 opencode.json。
使用一个简单的提供商 ID。flatkey 比 flatkey-prod-openai-compatible-gateway-v2 更好,因为您会在模型 ID 和回滚说明中输入它。
第 3 步:添加 OpenCode 提供商配置
在您要测试的项目根目录中创建或更新 opencode.json。
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"flatkey": {
"npm": "@ai-sdk/openai-compatible",
"name": "Flatkey",
"options": {
"baseURL": "https://router.flatkey.ai/v1"
},
"models": {
"your-current-flatkey-model-alias": {
"name": "Flatkey primary model"
}
}
}
},
"model": "flatkey/your-current-flatkey-model-alias"
}
这是最小的 OpenCode OpenAI 兼容提供商配置。它为 OpenCode 提供了一个名为 flatkey 的提供商,告诉 OpenCode 使用 OpenAI 兼容的 AI SDK 包,并在模型选择器中公开一个模型别名。
如果您希望 OpenCode 使用较小的路由来处理轻量级工作,请仅在主路由正常工作后添加 small_model。
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"flatkey": {
"npm": "@ai-sdk/openai-compatible",
"name": "Flatkey",
"options": {
"baseURL": "https://router.flatkey.ai/v1"
},
"models": {
"primary-flatkey-model-alias": {
"name": "Flatkey primary"
},
"lighter-flatkey-model-alias": {
"name": "Flatkey lightweight"
}
}
}
},
"model": "flatkey/primary-flatkey-model-alias",
"small_model": "flatkey/lighter-flatkey-model-alias"
}
使用您的 Flatkey 密钥实际可以调用的模型别名。如果您的帐户公开了经过身份验证的 /v1/models 路由,请将配置的模型 ID 与该响应进行比较。否则,请从当前的 Flatkey 仪表板或模型目录中复制别名,并使用真实请求进行验证。
第 4 步:在 OpenCode 中选择并测试模型
保存配置后,打开模型选择器。
/models
选择 Flatkey 提供商模型。然后在 OpenCode 中运行一个微小的提示:
Reply with exactly: opencode flatkey route ok
暂时不要移动整个编码工作流。首先保存一个紧凑的验证包。
| 检查 | 通过条件 | 要保留的证据 |
|---|---|---|
| 提供商出现 | /models 显示配置的 Flatkey 模型 |
带有选定模型 ID 的屏幕截图或终端记录。 |
| 身份验证正常 | OpenCode 收到正常的模型响应,而不是 401 或 403 |
经过编辑的密钥所有者、响应时间和请求时间戳。 |
| 基础 URL 干净 | 没有重复的 /v1/v1,没有缺失的 /chat/completions 行为 |
最终的 options.baseURL 和直接的 curl 端点。 |
| Flatkey 看到了 | 请求出现在 Flatkey 使用情况或请求日志中 | 请求时间戳、模型别名、令牌或单位字段、密钥/工作负载标签。 |
| 存在回滚 | 您可以在一次配置编辑中返回到上一个提供商/模型 | 上一个模型、上一个提供商 ID 和上一个密钥所有者。 |
这将 OpenCode OpenAI 兼容提供商的迁移转变为一个小的操作性变更,而不是盲目地更换提供商。
第 5 步:将聊天补全和响应分开
OpenCode 的自定义提供商文档指出了一个包边界:对于使用 /v1/chat/completions 的 OpenAI 兼容提供商,请使用 @ai-sdk/openai-compatible;如果提供商或模型使用 /v1/responses,请使用 @ai-sdk/openai。
这意味着第一个 Flatkey 路由应该是一个聊天补全(Chat Completions)风格的模型,除非您有当前证据表明您选择的模型和客户端路径使用了不同的端点系列。
在添加更多模型之前,请使用此决策表。
| 模型路由 | OpenCode 包方向 | 要测试的内容 |
|---|---|---|
| 与聊天补全兼容 | @ai-sdk/openai-compatible |
普通聊天、流式传输、工具调用行为(如果需要)。 |
| 响应风格的路由 | @ai-sdk/openai 根据 OpenCode 文档 |
响应创建、工具处理和输出解析。 |
| 一个提供商下的混合路由 | 如果您的配置使用它,则按模型覆盖包 | 一次一个模型,使用单独的日志。 |
对于大多数设置工作,请从一个聊天补全(Chat Completions)路由开始。在 Flatkey 中可以看到第一个 OpenCode OpenAI 兼容提供商冒烟测试通过后,再添加流式传输、工具调用和辅助模型别名。
第 6 步:在路由正常工作后添加团队控制
一旦 OpenCode 可以调用 Flatkey,就使该路由可观察。
| 控制 | 作用 |
|---|---|
| 密钥命名 | 为 OpenCode、环境、团队或存储库标记密钥。 |
| 模型批准 | 在添加广泛的模型选择之前,将第一个配置限制为已批准的别名。 |
| 用量审查 | 每次 OpenCode 测试后,按时间戳检查 Flatkey 请求或用量日志。 |
| 成本审查 | 将模型、令牌和密钥用量与预算所有者匹配。 |
| 超时策略 | 仅在确认基本路由有效后,才使用 OpenCode 提供商选项。 |
| 回滚说明 | 在将 Flatkey 设为默认值之前,保存先前的提供商和模型值。 |
这就是 Flatkey 不仅仅是一个基本 URL 的原因。一个可用的 OpenCode OpenAI 兼容提供商还应该为平台、财务和运营团队提供一个审查模型用量和更改路由的地方,而无需让每个开发人员管理单独的提供商帐户。
对于更广泛的迁移规划,请将本指南与 Flatkey OpenAI 兼容 API 迁移指南结合使用。如果您正在比较相邻的编码工具,请参阅 Continue.dev OpenAI 兼容提供商指南和 Roo Code OpenAI 兼容设置指南。
排查 OpenCode OpenAI 兼容提供商问题
| 症状 | 可能原因 | 检查内容 |
|---|---|---|
提供商未出现在 /models 中 |
提供商 ID 不匹配或配置未加载 | 确认 /connect ID 和 provider 密钥均为 flatkey;确认配置文件位于您期望的项目根目录或全局配置路径中。 |
401 或 403 |
Flatkey 密钥丢失、被撤销或错误 | 使用 /connect 重新输入凭据;切勿在日志中打印完整的密钥。 |
404 |
API 根目录或端点系列错误 | options.baseURL 应该是 API 根目录,而不是完整的 /chat/completions URL。 |
| 找不到模型 | 别名不适用于该密钥或端点系列 | 在 Flatkey 中验证模型别名并测试一个直接请求。 |
| 流式传输挂起 | 路由能力、模型支持或分块超时问题 | 首先验证非流式聊天,然后仅在需要时调整 OpenCode chunkTimeout。 |
| Flatkey 中缺少用量记录 | 请求未通过 Flatkey 或日志被过滤 | 按时间戳、密钥标签、模型别名和环境进行搜索。 |
| 响应功能失败 | 端点系列的包错误 | 重新检查所选路由是使用 /v1/chat/completions 还是 /v1/responses。 |
如果第一个请求失败,请不要立即更改提示、代理、权限或存储库代码。保持 OpenCode OpenAI 兼容提供商的调试范围小:凭据、提供商 ID、基本 URL、包、模型别名和一个纯文本聊天请求。
最终核对清单
在使用 Flatkey 作为默认 OpenCode 路由之前,请确认:
/connect在opencode.json中使用的相同提供商 ID 下具有 Flatkey 凭据。- 对于聊天补全路由,
provider.flatkey.npm是@ai-sdk/openai-compatible。 provider.flatkey.options.baseURL是https://router.flatkey.ai/v1。model指向一个已配置的flatkey/<model-alias>值。/models显示已配置的 Flatkey 模型。- 单行 OpenCode 提示成功返回。
- Flatkey 用量或请求日志显示 OpenCode 测试请求。
- 已记录先前的提供商/模型路由以备回滚。
当提供商已配置、可选择、在 Flatkey 日志中得到验证且可逆时,OpenCode OpenAI 兼容提供商的设置就完成了。当您准备好通过一个密钥路由编码代理模型流量时,获取一个 Flatkey 密钥并从一个低风险的 OpenCode 提示开始。



