适用场景:你想在 Windows 原生环境下使用 OpenCode,但当前 OpenCode 里直接走 GPT/ChatGPT 网页登录不稳定、不可用,或者你希望把 GPT 网页 OAuth 登录转换成本地 OpenAI-compatible API,再交给 OpenCode 使用。

一、核心思路

OpenCode 正常使用 OpenAI 模型时,最像官方体验的方式是:仍然使用 OpenCode 内置的 openai provider,只把 OpenAI 的 baseURL 改成本机 CLIProxyAPI 地址,并把 apiKey 改成本机 CLIProxyAPI 的本地访问密钥。

也就是说,OpenCode 看到的是:

OpenCode -> OpenAI-compatible API: http://127.0.0.1:8317/v1

实际请求链路是:

OpenCode
  -> CLIProxyAPI 本地服务
  -> CLIProxyAPI 使用你网页登录得到的 Codex/GPT OAuth 凭据
  -> 上游 OpenAI/Codex 模型

这里要注意一个关键点:OpenCode 不直接拿你的 GPT 网页登录态。OpenCode 只拿一个本地 cliproxyapi-... API Key;真正的 GPT 网页 OAuth 凭据由 CLIProxyAPI 保存和刷新。

二、为什么不用“自定义 provider”

OpenCode 支持 OpenAI-compatible 自定义 provider,但如果这里新建一个 cliproxyapi provider,很容易丢掉 OpenCode 内置 OpenAI 模型元数据,尤其是 GPT 系列的 reasoning variants。

为了尽量贴近官方 OpenAI API Key 体验,推荐做法是:

  • 保留 OpenCode 内置 openai provider。
  • 只覆盖 openai.options.baseURL
  • 只覆盖 openai.options.apiKey
  • 不要手动覆盖 openai.models.gpt-5.4

这样 OpenCode 仍然知道 gpt-5.4gpt-5.4-mini 等模型的内置 variants,可以继续用 Ctrl+T 切换思考强度。

三、准备环境

本文使用 Windows 原生环境,不使用 Ubuntu / WSL。

需要准备:

  • Windows 10/11
  • PowerShell 或 Windows Terminal
  • Node.js / npm
  • OpenCode
  • CLIProxyAPI Windows 可执行文件
  • 可网页登录的 GPT / ChatGPT / Codex 账号

安装 OpenCode:

npm install -g opencode-ai
opencode --version

CLIProxyAPI 可以从GitHub项目 Release 下载 Windows 版本,放到一个固定目录,例如:

C:\Users\<你的用户名>\AppData\Local\Programs\CLIProxyAPI\cli-proxy-api.exe

如果你希望命令行里直接输入 cli-proxy-api,可以把所在目录加入 PATH,或者创建一个 cli-proxy-api.cmd 包装脚本。

四、创建 CLIProxyAPI 配置

建议把配置放在用户目录:

C:\Users\<你的用户名>\.cli-proxy-api\config.yaml

PowerShell 生成一个本地访问密钥:

$dir = "$env:USERPROFILE\.cli-proxy-api"
New-Item -ItemType Directory -Force $dir | Out-Null

$key = "cliproxyapi-" + [guid]::NewGuid().ToString("N")
Set-Content -Path "$dir\opencode-api-key.txt" -Value $key -NoNewline
$key

上面输出的 cliproxyapi-... 是给 OpenCode 访问本机 CLIProxyAPI 用的本地密钥,不是 OpenAI 官方 API Key,不要提交到 Git 仓库。

创建 config.yaml

host: "127.0.0.1"
port: 8317
auth-dir: "C:/Users/<你的用户名>/.cli-proxy-api"
proxy-url: "http://127.0.0.1:xxxx"

api-keys:
  - "cliproxyapi-替换成你刚才生成的本地密钥"

request-retry: 3

quota-exceeded:
  switch-project: true
  switch-preview-model: true

streaming:
  keepalive-seconds: 15
  bootstrap-retries: 1

说明:

  • host: "127.0.0.1" 表示只监听本机,更安全。
  • port: 8317 是 CLIProxyAPI 默认常用端口。
  • proxy-url是而本地代理的请求端口。
  • api-keys 是客户端访问 CLIProxyAPI 的本地鉴权。
  • auth-dir 用来保存 OAuth 登录凭据。
  • Windows 路径建议在 YAML 里使用 /,避免反斜杠转义问题。

五、网页登录 GPT / Codex OAuth

执行:

cli-proxy-api -config "$env:USERPROFILE\.cli-proxy-api\config.yaml" --codex-login

正常情况下会自动打开浏览器。登录你的 GPT / ChatGPT / Codex 账号后,浏览器会回调本机地址,CLIProxyAPI 终端里会显示认证成功,并把凭据保存到:

C:\Users\<你的用户名>\.cli-proxy-api\

如果浏览器没有自动打开,可以用:

cli-proxy-api -config "$env:USERPROFILE\.cli-proxy-api\config.yaml" --codex-login --no-browser

然后手动复制终端里的登录链接到浏览器。

六、启动 CLIProxyAPI 服务

登录完成后,启动本机 API 服务:

cli-proxy-api -config "$env:USERPROFILE\.cli-proxy-api\config.yaml"

看到类似下面的输出就说明启动成功:

API server started successfully on: 127.0.0.1:8317

不要关闭这个窗口。OpenCode 后续请求都要通过这个本地服务。

可以用 PowerShell 验证模型列表:

$k = Get-Content "$env:USERPROFILE\.cli-proxy-api\opencode-api-key.txt" -Raw
$h = @{ Authorization = "Bearer $k" }
Invoke-RestMethod -Uri "http://127.0.0.1:8317/v1/models" -Headers $h

注意:这里返回的模型才是你当前账号通过 CLIProxyAPI 实际可用的模型。OpenCode 里显示的模型目录不等于一定都能请求成功。

七、配置 OpenCode

OpenCode 全局配置目录通常是:

C:\Users\<你的用户名>\.config\opencode\

编辑:

C:\Users\<你的用户名>\.config\opencode\opencode.json

推荐配置如下:

{
  "$schema": "https://opencode.ai/config.json",
  "model": "openai/gpt-5.4",
  "small_model": "openai/gpt-5.4-mini",
  "provider": {
    "openai": {
      "options": {
        "baseURL": "http://127.0.0.1:8317/v1",
        "apiKey": "{file:../../.cli-proxy-api/opencode-api-key.txt}"
      }
    }
  }
}

这个配置的关键点:

  • 仍然使用 openai/gpt-5.4,而不是自定义 cliproxyapi/gpt-5.4
  • baseURL 指向本地 CLIProxyAPI。
  • apiKey 从文件读取,避免把密钥直接写进配置。
  • 不要在这里手动写 provider.openai.models.gpt-5.4,否则可能覆盖 OpenCode 内置模型元数据,导致思考强度无法切换。

如果你之前在 /connect 里把 cliproxyapi-... 当成 OpenAI 官方 API Key 填过,可能会出现:

Incorrect API key provided: cliproxy...

原因是 OpenCode 把这个本地 key 发到了官方 OpenAI endpoint。正确做法是:通过 opencode.jsonopenai provider 的 baseURL 改成本机 CLIProxyAPI。

八、验证 OpenCode 是否跑通

先确保 CLIProxyAPI 服务窗口还在运行,然后执行:

opencode run "Reply with OK only." -m openai/gpt-5.4

正常应返回:

OK

也可以测试不同思考强度:

opencode run "Reply with MEDIUM_OK only." -m openai/gpt-5.4 --variant medium
opencode run "Reply with XHIGH_OK only." -m openai/gpt-5.4 --variant xhigh

如果这两个都能返回,说明 OpenCode 的 model variant 机制也正常。

九、重点:用 Ctrl+T 切换思考强度

OpenCode 对 OpenAI 模型有内置 variants,不同模型支持范围略有差异,常见包括:

none
minimal
low
medium
high
xhigh

在 OpenCode TUI 里:

  • 输入 /models 可以选择模型。
  • 选择 GPT-5.4 后,可以用 Ctrl+T 循环切换当前模型的思考强度。
  • 命令行模式可以用 --variant medium--variant xhigh 指定。

如果想要一个显式的 variant 列表快捷键,可以新增:

C:\Users\<你的用户名>\.config\opencode\tui.json

内容:

{
  "$schema": "https://opencode.ai/tui.json",
  "keybinds": {
    "variant_list": "<leader>v"
  }
}

OpenCode 默认 <leader>Ctrl+X,所以这个配置表示:

Ctrl+X,然后按 V

即可打开 variant 列表。

十、常见问题

1. /v1/models 能返回,但一发消息就报错

先确认 OpenCode 配置里 baseURL 是否真的指向:

http://127.0.0.1:8317/v1

如果错误信息是 Incorrect API key provided: cliproxy...,说明请求发到官方 OpenAI 了,而不是发到 CLIProxyAPI。

2. empty_stream: upstream stream closed before first payload

这通常是上游流式响应在首个 payload 前断开。可以先试:

opencode run "Reply with OK only." -m openai/gpt-5.4 --variant medium

如果命令行能跑通,TUI 里重启 OpenCode 再试。也建议在 CLIProxyAPI 配置里保留:

streaming:
  keepalive-seconds: 15
  bootstrap-retries: 1

3. 为什么 /models 里看到很多模型,但实际不能用

OpenCode 的模型列表来自它的模型目录和 provider 元数据;真正能通过 CLIProxyAPI 调用哪些模型,要看:

Invoke-RestMethod -Uri "http://127.0.0.1:8317/v1/models" -Headers $h

这个接口返回的列表才是当前 OAuth 账号和 CLIProxyAPI 实际暴露的模型。

4. CLIProxyAPI 能完全替代 OpenAI API Key 吗

对 OpenCode 这类本地 coding agent 来说,CLIProxyAPI 可以提供非常接近 OpenAI API Key 的使用体验,尤其是保留 openai provider 并只改 baseURL/apiKey 后。

但它不是官方 OpenAI Platform API Key 的完全等价替代:

  • 模型列表取决于你的 OAuth 账号和 CLIProxyAPI 暴露能力。
  • 部分 API 行为可能和官方 Platform API 不完全一致。
  • 生产服务、计费、组织/项目管理、审计等仍建议使用官方 OpenAI API Key。

十一、最终推荐配置小结

CLIProxyAPI:

host: "127.0.0.1"
port: 8317
auth-dir: "C:/Users/<你的用户名>/.cli-proxy-api"
api-keys:
  - "cliproxyapi-替换成你的本地密钥"
request-retry: 3
quota-exceeded:
  switch-project: true
  switch-preview-model: true
streaming:
  keepalive-seconds: 15
  bootstrap-retries: 1

OpenCode:

{
  "$schema": "https://opencode.ai/config.json",
  "model": "openai/gpt-5.4",
  "small_model": "openai/gpt-5.4-mini",
  "provider": {
    "openai": {
      "options": {
        "baseURL": "http://127.0.0.1:8317/v1",
        "apiKey": "{file:../../.cli-proxy-api/opencode-api-key.txt}"
      }
    }
  }
}

日常使用:

cli-proxy-api -config "$env:USERPROFILE\.cli-proxy-api\config.yaml"
opencode

进入 OpenCode 后:

/models
Ctrl+T 切换思考强度

参考链接

  • CLIProxyAPI Codex OAuth 登录:https://help.router-for.me/configuration/provider/codex
  • CLIProxyAPI 基础配置:https://help.router-for.me/configuration/basic
  • CLIProxyAPI 配置项说明:https://help.router-for.me/configuration/options
  • OpenCode Provider 配置:https://opencode.ai/docs/providers/
  • OpenCode Models 与 variants:https://opencode.ai/docs/models/
  • OpenCode Keybinds:https://opencode.ai/docs/keybinds/
  • OpenAI API Key 认证说明:https://platform.openai.com/docs/api-reference/introduction/api-keys
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐