OpenCode

在 OpenCode 中保存本服务凭据,并将其注册为自定义 OpenAI 兼容服务商。

1. 选择配置范围

OpenCode 支持 JSON 和 JSONC,多个配置源会合并,后加载的配置覆盖冲突字段。

范围配置文件
全局~/.config/opencode/opencode.json
项目项目根目录的 opencode.json
自定义文件OPENCODE_CONFIG 指向的文件

服务商通常适合放在全局配置。项目配置可以提交到 Git,因此不要在其中写明文密钥。

2. 准备模型和接口类型

  1. 1在 API Key 页面创建密钥。
  2. 2在模型定价页面复制准确模型 ID。
  3. 3确认模型使用 Chat Completions 还是 Responses 接口。
模型接口npm 适配器Base URL
/v1/chat/completions@ai-sdk/openai-compatiblehttps://ikun.love/v1
/v1/responses@ai-sdk/openaihttps://ikun.love/v1

以下主教程按 Chat Completions 编写。Responses 模型必须切换适配器,不能只修改模型 ID。

3. 推荐:使用 /connect 保存密钥

  1. 1启动 OpenCode。
  2. 2输入 /connect。
  3. 3滚动到并选择 Other。
  4. 4Provider ID 输入 alltokenapi。
  5. 5粘贴 API Key 并保存。

4. 编辑 opencode.json

将以下配置合并到全局或项目配置文件:

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "model": "alltokenapi/此处替换为准确的模型 ID",
  "small_model": "alltokenapi/此处替换为准确的模型 ID",
  "provider": {
    "alltokenapi": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "All Token API",
      "options": {
        "baseURL": "https://ikun.love/v1"
      },
      "models": {
        "此处替换为准确的模型 ID": {
          "name": "此处替换为准确的模型 ID"
        }
      }
    }
  }
}

需要替换四处模型 ID。small_model 用同一模型可避免标题生成等轻量任务落到其他服务商;有更便宜且兼容的模型时,可以单独替换。

Responses 模型

如果模型明确使用 /v1/responses,只修改 npm 适配器;其余 Provider ID、Base URL 和模型引用保持不变。

opencode.json
"npm": "@ai-sdk/openai"

5. 备选:使用环境变量,不保存到 auth.json

如果不希望将凭据保存到 auth.json,可以先在启动 OpenCode 的终端中设置密钥:

macOS / Linux
export ALLTOKEN_API_KEY="此处替换为 API Key"
PowerShell
$env:ALLTOKEN_API_KEY = "此处替换为 API Key"

然后在 provider 的 options 中增加 apiKey:

options
{
  "baseURL": "https://ikun.love/v1",
  "apiKey": "{env:ALLTOKEN_API_KEY}"
}

此方式不需要 /connect。OpenCode 在环境变量缺失时会把 {env:ALLTOKEN_API_KEY} 替换为空字符串,因此认证失败时应先检查启动进程的环境。

6. 选择并验证模型

  1. 1启动 opencode。
  2. 2如果使用 /connect,运行 opencode auth list,确认凭据已保存。
  3. 3在 TUI 中输入 /models,选择 alltokenapi/模型ID。
  4. 4发送一个简短提示,或执行一次非交互测试。
  5. 5在使用日志确认请求模型、状态和费用。
检查凭据
opencode auth list
非交互测试
opencode run "只回复 OK"
打开使用日志

7. 常见问题

/models 中没有 alltokenapi

  • 检查 opencode.json 的生效范围和 JSON/JSONC 语法。
  • Provider ID 必须在 /connect 和 provider 配置中都写成 alltokenapi。
  • 模型必须定义在 provider.alltokenapi.models 中。

认证失败

  • /connect 方式:运行 opencode auth list 检查凭据。
  • 环境变量方式:确认从包含 ALLTOKEN_API_KEY 的终端启动 OpenCode。
  • 不要同时保留错误的 auth.json 凭据和正确的环境变量而不确认实际优先级;排障时只保留一种来源。

404、流式输出或工具调用失败

  • Chat Completions 使用 @ai-sdk/openai-compatible。
  • Responses 使用 @ai-sdk/openai。
  • 两种 OpenAI 兼容接口的 Base URL 都应以 /v1 结尾。
  • 普通对话成功但工具调用失败,通常表示模型或接口不完整支持 Tool Calling。

上下文长度显示不准确

确认准确数值后,可在模型下添加 limit。不要从模型名称猜测限制;错误值会影响 OpenCode 的上下文压缩判断。

模型限制示例
"limit": {
  "context": 128000,
  "output": 32000
}

8. 官方参考