灵眸文档
工具配置

OpenCode

在 OpenCode 中配置灵眸 API 作为 OpenAI / Anthropic 兼容后端,接入 Claude、Codex、GLM 等模型使用。

OpenCode 按照官方文档安装即可,官网有很详细的教程:


配置模型

安装完成后,编辑配置文件 ~/.config/opencode/opencode.json。OpenCode 支持两种协议接入上游服务,选择与你的供应商一致的那种即可。

协议选择

协议npmbaseURL 写法适用场景
OpenAI 协议@ai-sdk/openai/v1 结尾,如 https://xxx.com/v1GPT、Codex 及大多数 OpenAI 兼容服务
Anthropic 协议@ai-sdk/anthropic也以 /v1 结尾,如 https://xxx.com/v1Claude 原生协议、以及声明使用 Anthropic 协议的国产模型(如 GLM 等)

baseURL 容易踩的坑

无论 OpenAI 还是 Anthropic 协议,baseURL 都需要写到 /v1 这一级。SDK 只会在其后拼接具体端点(如 /chat/completions/messages),漏掉 /v1 时请求会被静默丢弃 —— 表现为模型不报错但返回空内容。

示例一:OpenAI 协议

最小可用配置(一个供应商下可以同时配置多个模型):

{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "openai": {
      "options": {
        "baseURL": "https://api.lmuai.com/v1"
      },
      "models": {
        "gpt-5.5": { "name": "GPT-5.5" },
        "gpt-5.4": { "name": "GPT-5.4" }
      }
    }
  }
}

为什么 provider id 用 `openai`?

OpenCode 把 openai 作为内置 provider id 识别,会自动加载 @ai-sdk/openai 并走 /v1/responses 端点(支持推理模型的完整能力)。因此接入 OpenAI 协议的服务时,把 provider id 命名为 openai 并通过 baseURL 指向自己的网关即可,无需手动写 npm 字段。

如果需要细化某个模型的能力声明(上下文长度、推理强度变体等),在对应模型条目里追加字段即可:

"gpt-5.5": {
  "name": "GPT-5.5",
  "limit": { "context": 1050000, "output": 128000 },
  "options": { "store": false },
  "variants": { "low": {}, "medium": {}, "high": {}, "xhigh": {} }
}

其中 variants 定义了可切换的推理强度,运行时在 OpenCode 中按 Ctrl + T 切换。

示例二:Anthropic 协议(国产模型常见)

部分国产模型(如 GLM)虽然由国内厂商提供,但其接口遵循的是 Anthropic 协议,需要使用 @ai-sdk/anthropic

{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "lmuai": {
      "npm": "@ai-sdk/anthropic",
      "name": "lmuai",
      "options": {
        "baseURL": "https://api.lmuai.com/v1"
      },
      "models": {
        "glm-5.1": {
          "name": "GLM-5.1"
        }
      }
    }
  }
}

如何判断协议类型?

查看供应商文档中的请求示例:

  • 端点是 /v1/chat/completions → OpenAI 协议
  • 端点是 /v1/messages,请求头带 anthropic-version → Anthropic 协议

示例三:Claude 原生模型

如果要接入 Claude 原生模型(如 claude-sonnet-4-6),provider id 必须使用内置的 anthropic,不能自定义名称:

{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "anthropic": {
      "npm": "@ai-sdk/anthropic",
      "options": {
        "baseURL": "https://api.lmuai.com/v1"
      }
    }
  }
}

验证:

opencode run --model anthropic/claude-sonnet-4-6 "你好"

Claude 模型为什么不能用自定义 provider id?

openai 一样,anthropic 是 OpenCode 的内置 provider id,OpenCode 在它下面预置了 Claude 全系列模型(claude-sonnet-4-6 等)的定义。

因此 opencode run --model anthropic/claude-sonnet-4-6 "你好" 能跑通;但如果把 provider id 改成自定义名(如 lmuai/claude-sonnet-4-6),OpenCode 找不到该模型定义,会无法测通。

一句话:接 Claude 原生模型用 anthropic,接 GLM 等自定义模型才用自定义 provider id(如 lmuai)。

如果你需要同时使用多种协议、多个供应商,把它们都写在 provider 下即可,互不影响。例如灵眸同时提供 GPT 系列(openai)、Claude 系列(anthropic)和 GLM 系列(lmuai,Anthropic 协议),三个 provider 可共用一个网关。


配置密钥

方式一:使用命令行(推荐)

# 登录或更新某个供应商的 Key
opencode auth login

# 查看当前已配置的所有供应商和 Key 状态
opencode auth list

# 删除指定供应商的 Key
opencode auth logout <供应商名>

方式二:手动编辑配置文件

~/.local/share/opencode/auth.json 中添加对应供应商的 API Key:

{
  "供应商名称": {
    "type": "api",
    "key": "你的API密钥"
  }
}

注意

auth.json 中的供应商名称必须与 opencode.json 中的供应商名称完全一致

不要把 apiKey 写在 opencode.jsonoptions 里 —— OpenCode 不会读取那里的密钥,必须走 auth.jsonopencode auth login


验证配置

配置完成后用一条命令快速验证:

opencode run --model 供应商名称/模型名 "你好"

例如 opencode run --model lmuai/glm-5.1 "你好"。能看到正常回复即配置成功。

如果没有任何输出(既不报错也不回复),通常是以下两种问题之一:

  1. baseURL 缺少 /v1 —— 见上文「协议选择」段的提示。
  2. 密钥未配置在 auth.json —— 检查 opencode auth list 是否能看到对应供应商。

需要更多调试信息时加上 --print-logs --log-level INFO


小技巧

在 OpenCode 中按 Ctrl + T 可切换不同的推理强度(variants)。

On this page