适用场景:你想在 Windows 原生环境下使用 OpenCode,但当前 OpenCode 里直接走 GPT/ChatGPT 网页登录不稳定、不可用,或者你希望把 GPT 网页 OAuth 登录转换成本地 OpenAI-compatible API,再交给 OpenCode 使用。
一、核心思路
OpenCode 正常使用 OpenAI 模型时,最像官方体验的方式是:仍然使用 OpenCode 内置的openaiprovider,只把 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,但如果这里新建一个cliproxyapiprovider,很容易丢掉 OpenCode 内置 OpenAI 模型元数据,尤其是 GPT 系列的 reasoning variants。
为了尽量贴近官方 OpenAI API Key 体验,推荐做法是:
- 保留 OpenCode 内置
openaiprovider。 - 只覆盖
openai.options.baseURL。 - 只覆盖
openai.options.apiKey。 - 不要手动覆盖
openai.models.gpt-5.4。
这样 OpenCode 仍然知道gpt-5.4、gpt-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--versionCLIProxyAPI 可以从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.yamlPowerShell 生成一个本地访问密钥:
$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:8317auth-dir:"C:/Users/<你的用户名>/.cli-proxy-api"api-keys:-"cliproxyapi-替换成你刚才生成的本地密钥"request-retry:3quota-exceeded:switch-project:trueswitch-preview-model:truestreaming:keepalive-seconds:15bootstrap-retries:1说明:
host: "127.0.0.1"表示只监听本机,更安全。port: 8317是 CLIProxyAPI 默认常用端口。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.json把openaiprovider 的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:15bootstrap-retries:13. 为什么/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 的使用体验,尤其是保留openaiprovider 并只改baseURL/apiKey后。
但它不是官方 OpenAI Platform API Key 的完全等价替代:
- 模型列表取决于你的 OAuth 账号和 CLIProxyAPI 暴露能力。
- 部分 API 行为可能和官方 Platform API 不完全一致。
- 生产服务、计费、组织/项目管理、审计等仍建议使用官方 OpenAI API Key。
十一、最终推荐配置小结
CLIProxyAPI:
host:"127.0.0.1"port:8317auth-dir:"C:/Users/<你的用户名>/.cli-proxy-api"api-keys:-"cliproxyapi-替换成你的本地密钥"request-retry:3quota-exceeded:switch-project:trueswitch-preview-model:truestreaming:keepalive-seconds:15bootstrap-retries:1OpenCode:
{"$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