OpenCode 接入
难度 ⌨️ 进阶(JSON 配置文件) | 接口格式 OpenAI 兼容 | base_url
https://byesu.com/v1
OpenCode 是 GitHub 上 star 数最高的开源 AI 编程 agent 之一——以终端为主(也有桌面版和 IDE 插件),设计上刻意不绑定任何一家模型厂商。这个理念和半页酥天然合拍:在 opencode.json 里把半页酥声明为自定义 provider,一个令牌就能把 Claude Opus 4.8、Claude Sonnet 5、GPT-5.6、Grok 4.5 全部装进 OpenCode 的模型选择器——国内直连、免翻墙、不降智,按量计费、无订阅。
准备工作
① 装好 OpenCode —— 任选一种官方方式:
curl -fsSL https://opencode.ai/install | bashnpm install -g opencode-aibrew install anomalyco/tap/opencode装好后验证:
opencode --version② 一个半页酥令牌 —— 在控制台创建,分组要覆盖你打算用的模型(后面提到的「无可用渠道」报错就跟它有关)。
第 1 步:把半页酥添加为自定义 Provider
OpenCode 从两个位置读取 opencode.json:
- 全局:
~/.config/opencode/opencode.json—— 对所有项目生效,推荐把 provider 配置放这里。 - 项目:项目根目录下的
opencode.json—— 在该项目内覆盖全局配置。
在任一文件里写入(或补上)以下内容:
{
"$schema": "https://opencode.ai/config.json",
"model": "byesu/claude-opus-4-8",
"small_model": "byesu/claude-sonnet-5",
"provider": {
"byesu": {
"npm": "@ai-sdk/openai-compatible",
"name": "byesu",
"options": {
"baseURL": "https://byesu.com/v1",
"apiKey": "sk-你的令牌"
},
"models": {
"claude-opus-4-8": { "name": "Claude Opus 4.8" },
"claude-sonnet-5": { "name": "Claude Sonnet 5" },
"gpt-5.6-terra": { "name": "GPT-5.6 Terra" },
"grok-4.5": { "name": "Grok 4.5" }
}
}
}
}各部分的含义:
| 字段 | 说明 |
|---|---|
provider.byesu | 这里起的键名就是 provider ID —— 之后所有模型都写成 byesu/<模型ID> |
npm | OpenCode 为这个 provider 加载的 AI SDK 适配器。半页酥端点走 /v1/chat/completions,所以填 @ai-sdk/openai-compatible |
options.baseURL | https://byesu.com/v1 —— 以 /v1 结尾,不要再拼 /chat/completions |
options.apiKey | 你的 sk- 令牌;OpenCode 会自动以 Bearer 头发送 |
models | 每个键都是控制台里原样列出的模型 ID;name 只是选择器里的显示名 |
model / small_model | 默认模型 + 轻量辅助模型(生成会话标题、摘要等)—— 都用 provider_id/model_id 形式 |
最容易踩的三个坑
npm必须是@ai-sdk/openai-compatible。@ai-sdk/openai面向 OpenAI 的/v1/responses接口,和这个端点对不上。models下的键必须和控制台模型名完全一致(是claude-opus-4-8,不是claude-opus-4.8)。- 配置里其它任何地方引用模型都要带 provider 前缀:
byesu/claude-opus-4-8,绝不能只写裸模型名。
每个模型条目还可以选配一个
limit对象({ "context": ..., "output": ... }),让 OpenCode 的上下文用量表更准。不配也一切正常。
第 2 步(可选):不把 Key 明文写进文件
避免在 opencode.json 里放明文密钥,有两种干净做法:
环境变量插值。 OpenCode 会展开配置里的 {env:VAR} 占位符:
"options": {
"baseURL": "https://byesu.com/v1",
"apiKey": "{env:BYESU_API_KEY}"
}# 写进 ~/.zshrc 或 ~/.bashrc,重开终端生效
export BYESU_API_KEY="sk-你的令牌"/connect 命令。 启动 opencode,输入 /connect,选择 Other,provider ID 填 byesu,再粘贴你的 Key。OpenCode 会把凭据存进自己的密钥库,配置文件里的 apiKey 就可以整个删掉。
WARNING
在 /connect 里填的 provider ID 必须和 opencode.json 中 provider 下的键名一致(这里是 byesu),否则存好的凭据永远不会被读取。
第 3 步:跑起来验证
进任意项目目录,启动:
opencode输入 /models —— 四个半页酥模型应该出现在选择器里。选一个,让它做点小事(比如「列出当前目录的文件」),能正常回答就接通了 ✅
切换模型、Plan 与 Build
会话中随时可用 /models 切换模型。按 Tab 在 Build agent(完整工具权限)和 Plan agent(分析模式,改文件前先询问)之间切换,每个 agent 都能钉住自己的半页酥模型:
{
"agent": {
"plan": { "model": "byesu/claude-sonnet-5" }
}
}常见搭配:Build 默认用 Opus 4.8,Plan agent 和 small_model 交给 Sonnet 5。
卡住了?
- 401 / 令牌无效 → Key 填错,或
/connect的 provider ID 和配置里的provider键名不一致(详情) - 无可用渠道 → 令牌所在分组不覆盖你选的模型;去对应分组新建令牌(选择分组,详情)
- 模型不存在 →
models下某个键和控制台模型名不完全一致,或引用时漏了byesu/前缀(详情) - 余额不足 → 去控制台充值,支持支付宝、微信、USDT(详情)
- 其它见 常见错误 & 解决
常见问题
如何在 OpenCode 中添加自定义的 OpenAI 兼容 provider?
在 opencode.json 的 provider 键下声明:npm 填 @ai-sdk/openai-compatible,options.baseURL 填 https://byesu.com/v1,options.apiKey 填你的 sk- 令牌,并在 models 下列出模型 ID。之后所有模型都以 byesu/<模型ID> 的形式引用。
OpenCode 自定义 provider 的 npm 字段应该填哪个包?
@ai-sdk/openai-compatible —— 它是走 /v1/chat/completions 的服务商适配器,半页酥的 OpenAI 兼容端点正是这种。@ai-sdk/openai 面向 OpenAI 的 /v1/responses 接口,对不上。
如何避免把 API Key 明文写进 opencode.json?
两种办法:用环境变量插值("apiKey": "{env:BYESU_API_KEY}",再在 shell 配置文件里 export),或在 OpenCode 里运行 /connect,用与配置键名一致的 provider ID 保存密钥。
OpenCode 报「无可用渠道」(no available channel)怎么办?
令牌所在分组不覆盖你选的模型。去半页酥控制台在对应分组下新建令牌(见 选择分组),换上新 Key 重试。
OpenCode 的 Plan 和 Build 两个 agent 能用不同模型吗?
可以。会话中按 Tab 在 Build 与 Plan 之间切换,每个 agent 都能在 opencode.json 里单独指定 model —— 例如把 agent.plan.model 设为 byesu/claude-sonnet-5,Build 继续用 byesu/claude-opus-4-8。
通过半页酥使用 OpenCode 怎么计费?
按 token 用量计费,在官方牌价上按透明倍率结算,无订阅费。控制台每个模型旁都实时显示实际计费价,支持支付宝、微信与 USDT 充值。
