opencode(https://github.com/anomalyco/opencode)在ub...

Создано: 29 января 2026 г.

Отвечено с использованием GPT-5.2 от Chat01

Мысль

undefined

Мысль

Thought for 49s

Ответ

下面按 Ubuntu 24.04 的常见用法,讲清楚在 OpenCode(anomalyco/opencode)里如何接入第三方“中转站 / 代理站”的 OpenAI 兼容 API(也就是有 baseURL/v1/chat/completions 这类接口)。


1) 安装 OpenCode(Ubuntu 24.04)

官方文档给了多种方式,Linux 上最通用的是 npm: (OpenCode)

bash
# 需要有 Node/npm(一般用 apt 或 nvm 装) npm install -g opencode-ai # 验证 opencode --version

2) 两种接入“中转站”的推荐方案

方案 A(更稳):直接复用内置的 openai provider,只改 baseURL

OpenCode 支持给任何 provider 设置 options.baseURL(代理/自建端点都用这个)。(OpenCode)
如果你的中转站就是 OpenAI 兼容接口,这个方式通常比“自定义 provider”更不容易踩坑。

在你的全局配置(~/.config/opencode/opencode.json)或项目根目录(opencode.json)里写:(OpenCode)

jsonc
{ "$schema": "https://opencode.ai/config.json", "provider": { "openai": { "options": { "baseURL": "https://你的中转站域名/v1" } } }, "model": "openai/gpt-5" }

然后在 TUI 里录入 key:

  1. 进入任意项目目录 cd /path/to/project
  2. 运行 opencode
  3. 输入 /connect,选择 OpenAI,粘贴你中转站发的 key(或 OpenAI key)
    (凭据会存到 ~/.local/share/opencode/auth.json)(OpenCode)
  4. 输入 /models 选模型

关键点:baseURL 一般要带 /v1,除非你的中转站明确不需要。(OpenCode)


方案 B:自定义 provider(适合“中转站不是 OpenAI/OpenAI key 体系”或要自定义 headers)

OpenCode 文档给了“Custom provider(Other)”的标准做法:先 /connect 录入一个自定义 provider id,然后在 opencode.json 里声明它使用 @ai-sdk/openai-compatible,并配置 options.baseURL。(OpenCode)

  1. 在 TUI 里:
  • /connect → 选择 Other
  • 输入 provider id:比如 myrelay
  • 输入 API key(中转站给你的)
  1. 在项目根目录创建/修改 opencode.json
jsonc
{ "$schema": "https://opencode.ai/config.json", "provider": { "myrelay": { "npm": "@ai-sdk/openai-compatible", "name": "My Relay", "options": { "baseURL": "https://你的中转站域名/v1", "apiKey": "{env:MYRELAY_API_KEY}" // 或者不写 apiKey,改用 /connect 存到 auth.json }, "models": { "gpt-4.1-mini": { "name": "GPT-4.1 mini (relay)" }, "deepseek-chat": { "name": "DeepSeek Chat (relay)" } } } }, "model": "myrelay/gpt-4.1-mini" }

options.apiKey 支持用 {env:...} 读取环境变量;也支持加自定义 headers。(OpenCode)
如果你用环境变量方式,shell 里加:

bash
export MYRELAY_API_KEY="sk-xxxx" opencode

3) 常见坑 & 排查

A) 配置文件放哪?

OpenCode 配置会按优先级合并加载:远程 → 全局 ~/.config/opencode/opencode.jsonOPENCODE_CONFIG → 项目根 opencode.json … (OpenCode)
建议:

  • 想所有项目都走中转站:写全局配置
  • 只某个项目走中转站:写项目根 opencode.json

B) 校验凭据是否录入成功

bash
opencode auth list

文档也建议用它来检查 custom provider 的凭据。(OpenCode)

C) 自定义 provider 可能遇到的已知问题(重要)

GitHub 上有一个仍处于 Open 状态的问题:某些版本下,@ai-sdk/openai-compatibleoptions(包括 baseURL/apiKey)可能没有被真正传递,导致请求没走你的中转站而报 404 / NotFound。(GitHub)

如果你按方案 B 配完仍然不走 baseURL:

  • 优先切到 方案 A(改 openai provider 的 baseURL),很多“中转站”用这个就能工作。
  • 或升级到最新版本(看官方 changelog / releases),再重试。(OpenCode)

如果你把“中转站”的信息按下面 3 个点贴出来(脱敏即可),我可以直接给你一份可用的 opencode.json(含正确的 model 命名和 baseURL 形式):

  1. 中转站的 Base URL(例如 https://xxx.com/v1 还是 https://xxx.com
  2. 它要求的鉴权方式(Authorization: Bearer ... / 自定义 header / query 参数)
  3. 你想用的模型名(例如 gpt-4.1-mini / deepseek-chat / qwen 等)

Вопрос

randy@randy-CP300Z3:/power-meter-wiring-simulator-backendopencodeclirandy@randyCP300Z3: /powermeterwiringsimulatorbackend opencode-cli randy@randy-CP300Z3:~/power-meter-wiring-simulator-backend ls /.config/opencode/
bun.lock node_modules package.json
randy@randy-CP300Z3:
/power-meter-wiring-simulator-backendcd /.config/opencode/randy@randyCP300Z3: /.config/opencode cd ~/.config/opencode/ randy@randy-CP300Z3:~/.config/opencode ls
bun.lock node_modules package.json
randy@randy-CP300Z3:
/.config/opencode$

Мысль

undefined

Мысль

Thought for 7s

Ответ

你现在这个现象其实很正常:~/.config/opencode/ 里看到的 bun.lock / node_modules / package.json,说明你装到的是 JS 包/依赖目录,但 OpenCode 的“配置文件”(opencode.json / opencode.jsonc)并不会自动生成在这里;而且你运行的是 opencode-cli,它也不等同于文档里的官方命令 opencode。官方 CLI 默认就是 opencode,不带参数会直接进 TUI。 (OpenCode)

下面给你一套“最少步骤、能跑通中转站”的做法(Ubuntu 24.04)。


0) 先确认你装的是哪个 opencode

在终端执行:

bash
which opencode opencode-cli || true opencode --version || true opencode-cli --version || true
  • 官方文档的入口命令是 opencode(默认启动 TUI)。(OpenCode)
  • 如果你机器上只有 opencode-cli,很可能是装了别的包/旧包名,建议直接按官方方式装一次,避免路径/版本混乱。(DeepWiki)

1) 按官方方式安装(推荐:二进制安装脚本)

bash
curl -fsSL https://raw.githubusercontent.com/opencode-ai/opencode/refs/heads/main/install | bash

装完后新开一个 shell,再确认:

bash
opencode --version

(这是官方 README 推荐方式之一)(DeepWiki)


2) 正确放置配置文件:不要放在 ~/.config/opencode/ 根目录

OpenCode 会自动向上查找 项目内opencode.json / opencode.jsonc,也会读用户目录里的 ~/.config/opencode/ 作为“搜索目录之一”,但它要找的是 .opencode/ 目录项目根的 opencode.json。(DeepWiki)

最简单:在你的项目根目录~/power-meter-wiring-simulator-backend)创建 opencode.json

bash
cd ~/power-meter-wiring-simulator-backend nano opencode.json

填入(中转站是 OpenAI 兼容接口时最稳的写法:直接改 openai provider 的 baseURL):

jsonc
{ "$schema": "https://opencode.ai/config.json", "provider": { "openai": { "options": { "baseURL": "https://你的中转站域名/v1" } } }, "model": "openai/gpt-4.1-mini" }

baseURL 通常要带 /v1(除非你的中转站明确要求不带)。(DeepWiki)


3) 录入中转站 API Key(两种方式选一种)

方式 A:在 TUI 里录入(推荐)

在项目根目录运行:

bash
opencode

进入后:

  1. 输入 /connect
  2. 选择 OpenAI
  3. 粘贴中转站给你的 key(一般也是 Bearer token 形式)

凭据管理命令可以用:

bash
opencode auth list

auth list / auth login 是官方 CLI 的一部分)(open-code.ai)

方式 B:用环境变量(适合脚本/CI)

如果你不想在 TUI 里存 key,可以:

bash
export OPENAI_API_KEY="sk-xxxx" opencode

(OpenCode 会自动从环境变量检测 provider keys,这是它的启动流程之一。)(DeepWiki)


4) 如果你非要用“Other / openai-compatible”自定义 provider

可以,但要提醒你:社区里有人遇到过 @ai-sdk/openai-compatible 的 options(如 baseURL)没被正确传递导致不走中转站的问题;这种情况下更建议你用我上面给的“方案:openai provider + baseURL”。(GitHub)


5) 你现在这台机子上,下一步怎么做(按你贴的路径)

你现在在:

~/power-meter-wiring-simulator-backend

那就直接执行这三步基本能通:

bash
cd ~/power-meter-wiring-simulator-backend nano opencode.json # 写入我给的配置(baseURL 改成你的中转站) opencode # 进 TUI 用 /connect 录 key

如果你把中转站这三项(可脱敏)发我:

  1. 你的 baseURL 是 https://xxx/v1 还是 https://xxx
  2. key 的格式(是否就是 Bearer token)
  3. 中转站支持的模型名(例如 deepseek-chatgpt-4.1-miniqwen2.5 等)

我可以把 opencode.jsonmodelbaseURL 写成你那家站能直接用的版本。

Поделиться этим Q&A