前置条件
- 1已安装 Node.js 18+ 和 npm
- 2已注册 OpenAI 账号并获取 API Key
- 3了解基本的终端命令操作
OpenCode 接入 GPT-5.1-CodexMax 完整指南
本教程教你把 OpenAI 在 2026 年 9 月 1 日刚刚发布的编程专用旗舰模型「GPT-5.1-CodexMax」接到 OpenCode 这个开源终端 AI 编程工具里。接好之后,你就能在终端里直接和 GPT-5.1-CodexMax 对话,让它帮你从零搭项目、写函数、改 Bug、重构祖传代码、读懂陌生代码库——全部不用离开键盘,不用切到浏览器,不用复制粘贴。
OpenCode 是一个开源的终端 AI 编程工具,定位类似 Aider、Claude Code、Codex CLI,但完全开源、可自由接入任意 OpenAI 兼容协议的大模型。GPT-5.1-CodexMax 是 OpenAI 在 GPT-5.1 基础上专门为编程场景训练的「CodexMax」版本,相比通用版 GPT-5.1,它在三个方面做了专项强化:
- 更长的上下文窗口:原生支持 256K token(约 60 万汉字),可以一次性吞下整个中型项目的代码
- 更精准的代码补全:在 HumanEval+、MBPP+、SWE-Bench-Verified 等编程基准上刷新 SOTA,函数级生成准确率超过 95%
- 自主多步执行:原生支持 agentic loop,能自主拆解复杂任务、连续调用工具(读文件、改文件、跑测试、查文档),不需要你一步步指挥
配合 OpenCode 的终端工作流,GPT-5.1-CodexMax 特别适合喜欢「键盘流」、追求高效产出、需要处理大型代码库的开发者。
提示
小白提示: 这篇教程假设你已经会用终端执行 cd、ls 这类基础命令,但完全没接触过 OpenCode 也没关系——每一步都会从零开始讲。如果你连终端都没怎么用过,建议先看看 opencode-terminal 这篇入门,熟悉一下基本操作再回来。
警告
⚠️ 重要警告: GPT-5.1-CodexMax 是 2026 年 9 月 1 日发布的最新模型,OpenCode 需要 ≥ 0.18.0 版本才能完整支持其全部能力(包括 256K 上下文、agentic loop、reasoning 链)。如果你装的是旧版本,请按本教程「步骤一」的命令重新安装或升级。
OpenCode 接入 GPT-5.1-CodexMax:两种方式总览
OpenCode 接入 GPT-5.1-CodexMax 有两种方式,选一种即可:
| 维度 | 方式 A:应用端交互配置 | 方式 B:配置文件手动配置 |
|---|---|---|
| 适合谁 | 第一次用 OpenCode 的新手 | 习惯编辑 JSON、要写脚本批量部署的进阶用户 |
| 操作方式 | 在 OpenCode 界面里用 /models 命令交互式添加 | 直接编辑 ~/.opencode/config.json 文件 |
| 要不要写代码 | 不用,全程在 TUI 里点点选选 + 回车 | 要手写一段 JSON 配置 |
| 可重复性 | 单机一次性配置,换机器要重做 | 配置文件可拷贝、可版本化、可团队共享 |
| 出错排查难度 | 低(界面会提示错误) | 中(需要看日志找原因) |
| 可配置深度 | 基础参数(模型名、Key) | 完整参数(含 temperature、maxTokens、上下文窗口、reasoning、tools 等) |
| 支持全部 CodexMax 特性 | 部分(界面未暴露 reasoning effort、agentic step 上限等高级参数) | 全部(JSON 可写所有字段) |
| 推荐度 | ⭐⭐⭐⭐⭐(新手首选) | ⭐⭐⭐⭐⭐(进阶推荐,能解锁全部能力) |
提示
怎么选:
- 如果你只在一台电脑上用,并且希望 5 分钟内跑通 → 选 方式 A
- 如果你需要在多台机器同步、要写 Dockerfile 部署、或者要精细调参(比如调 reasoning effort、agentic step 上限)→ 选 方式 B
- 两种方式配置的是同一份底层文件,方式 A 其实就是「图形化版」的方式 B,混用也完全可以。建议先用方式 A 跑通,再切到方式 B 解锁高级参数。
警告
⚠️ 重要警告: 不管选哪种方式,OpenAI API Key 都属于敏感凭证,等同于你 OpenAI 账户的钱包密码。请勿把含 Key 的配置文件提交到公开 Git 仓库、发到群里、截图发朋友圈。本教程后面会专门讲如何用环境变量隔离 Key。
前置准备
开始之前,请逐项确认下列条件已满足:
1. Node.js 18+ 已安装
OpenCode 是基于 Node.js 的工具,要求版本不低于 18。打开终端执行:
1node -v预期输出形如 v20.11.0 或更高。如果显示 command not found 或版本低于 18,请先到 Node.js 官网 下载 LTS 版本安装。
提示
小白提示: 怎么看版本够不够?只要 node -v 输出的数字第一个点之前 ≥ 18 就行,例如 v18.19.0、v20.10.0、v22.3.0 都 OK,v16.x.x 不行。
Windows 用户推荐用 nvm-windows 管理多版本 Node.js:
1# 安装 nvm 后执行
2nvm install 20
3nvm use 20
4node -vmacOS / Linux 用户推荐用 nvm:
1curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
2# 重开终端后执行
3nvm install 20
4nvm use 202. npm 已就绪
npm 是 Node.js 的包管理器,装 Node.js 时会一起装好。验证一下:
1npm -v预期输出形如 10.2.4。只要数字 ≥ 9 就能用 OpenCode。
3. 已注册 OpenAI 账号并获取 API Key
GPT-5.1-CodexMax 是 OpenAI 旗下模型,需要 OpenAI 平台的 API Key 才能调用。如果你还没拿到,请按下面步骤领取:
- 浏览器访问 OpenAI 开发者控制台:https://platform.openai.com
- 用邮箱注册 / 登录(新账号需手机号验证)
- 第一次进入会让你同意服务条款,点同意即可
- 在左侧导航点击 「API Keys」
- 点击 「Create new secret key」 按钮
- 给 Key 起个名字(例如
opencode-codexmax-prod),选择对应组织/项目,点击创建 - 立即复制弹出的 Key 字符串(以
sk-或sk-proj-开头)
警告
⚠️ 重要警告: OpenAI 的 API Key 只在创建时显示一次,关闭弹窗后就再也看不到完整内容了。请立刻粘贴到本地密码管理器(如 1Password、Bitwarden)或一个不上传云盘的本地记事本里。如果不幸丢失,只能删掉重建。
4. 账户里有余额
GPT-5.1-CodexMax 按用量付费,账户里需要有余额才能调用。新用户一般会送 $5~$18 的免费额度,跑通流程够用很久。充值路径:控制台左下角 Settings → Billing → Add payment method,最低充 $5。
提示
小白提示: GPT-5.1-CodexMax 比 GPT-4o 贵一些(毕竟是最新旗舰),但比 Codex CLI 直接调用更省,因为 OpenCode 可以通过 maxTokens、contextWindow 等参数精细控制单次消耗。本教程后面会专门讲成本控制。
5. 终端基础操作
确认你会做下面三件事(不会就先看 opencode-terminal):
- 打开终端(Windows:
Win+R输入powershell;macOS: Spotlight 搜「终端」) - 用
cd切换目录 - 用
ls(Windows 下dir)查看目录内容
6. 网络能访问 OpenAI
OpenAI 服务器在海外,国内直连通常不通。请确认:
- 你能正常打开
platform.openai.com - 或本机有可用的 HTTP 代理(Clash、Surge、V2Ray 等)
警告
⚠️ 网络提醒: GPT-5.1-CodexMax 是美国 OpenAI 公司的服务,国内不挂梯子大概率连不上。如果你没有梯子,建议改用国产的 DeepSeek、GLM 等(国内直连、便宜),等以后有梯子了再来接 GPT-5.1-CodexMax。本教程后面有「网络问题排查」专节。
步骤一:装好 OpenCode
OpenCode 官方推荐用一键脚本安装。打开终端,根据你的操作系统选一条命令执行:
方式 1:一键脚本(推荐,macOS / Linux / Windows PowerShell 通用)
1curl -fsSL https://opencode.ai/install | bash提示
小白提示: 这行命令的意思是「从 opencode.ai 官网下载安装脚本,并用 bash 执行它」。期间屏幕会滚动一些下载进度文字,那是正常现象,等它停下来、再次出现命令提示符($ 或 >)就装好了。
Windows PowerShell 用户如果 curl 不可用,可以直接用官方提供的 PowerShell 版本:
1irm https://opencode.ai/install.ps1 | iex方式 2:npm 全局安装(Node.js 用户备选)
如果你已经熟悉 npm,也可以用:
1npm install -g opencode方式 3:Homebrew(macOS 用户备选)
1brew install opencode验证版本(关键)
装完后验证一下版本:
1opencode --version预期输出形如 opencode version 0.18.2。版本号必须 ≥ 0.18.0 才能完整支持 GPT-5.1-CodexMax 的全部能力(256K 上下文、agentic loop、reasoning 链)。
如果版本低于 0.18.0,升级:
1# 一键脚本用户
2curl -fsSL https://opencode.ai/install | bash
3
4# npm 用户
5npm update -g opencode
6
7# Homebrew 用户
8brew upgrade opencode启动 OpenCode
在任意你想要做开发工作的项目目录下执行:
1cd ~/projects/my-app
2opencode提示
小白提示: opencode 这个命令会自动读取当前目录作为 AI 的工作区。也就是说,你在哪个目录启动它,它就只能看到那个目录里的代码文件。所以一定要 cd 到你的项目根目录再启动,否则 GPT-5.1-CodexMax 看不到你的代码。
启动后,你会看到一个全屏的蓝紫色 TUI 界面,这就是 OpenCode 的主页。底部有一个输入框,光标在那里闪烁,等待你输入命令。
方式 A:通过 OpenCode 应用端交互配置 GPT-5.1-CodexMax
这是最推荐新手使用的方式,全程在 OpenCode 的图形界面里完成,不需要手写任何 JSON。
第 1 步:进入 OpenCode 后输入 /models 命令
OpenCode 启动后,光标停在底部输入框。直接敲:
/models
按回车。屏幕中央会弹出一个浮层,列出 OpenCode 当前已支持的所有「模型供应商」(Provider),比如 OpenAI、Anthropic、Google、DeepSeek、xAI、Mistral 等等。
提示
小白提示: 如果你在列表里没看到 OpenAI 选项,说明你的 OpenCode 版本太旧。请退出 OpenCode(按 Ctrl+C 两次或输入 /exit),重新跑一次安装命令覆盖更新,然后再启动:
1# 退出后执行
2curl -fsSL https://opencode.ai/install | bash
3# 再启动
4opencodeOpenAI 是 OpenCode 原生支持的供应商,任何现代版本一定有。
第 2 步:选择「OpenAI」并点击「+ Add Config」
用方向键 ↑ ↓ 找到 「OpenAI」 这一行,按回车选中。此时右侧会展开一个子菜单,列出 OpenAI 下的可用模型(如 gpt-5.1、gpt-5.1-codexmax、gpt-5.1-mini、gpt-4o 等)。
按 Tab 键把焦点切换到右上角的 「+ Add Config」 按钮,按回车。这时会进入交互式配置向导。
提示
小白提示: 如果你看到列表里没有 gpt-5.1-codexmax,说明你的 OpenCode 版本太旧(早于 0.18.0),还没收录这个新模型。升级 OpenCode 后即可看到。如果暂时无法升级,也可以手填模型 ID(下一步会讲)。
第 3 步:填写配置项
向导会依次问你下面几个问题,照着填即可:
配置项 1:Provider Name(供应商名称)
> openai
直接回车采用默认值 openai 即可,也可以改成你喜欢的名字(比如 openai-codexmax)。
配置项 2:API Base URL(接口地址)
> https://api.openai.com/v1
警告
⚠️ 重要警告: Base URL 必须包含 /v1 后缀,否则会报 404。不要写成 https://api.openai.com(缺 /v1),也不要写成 https://api.openai.com/v1/(多了尾部斜杠,某些版本会报错)。
如果你用的是 OpenAI 兼容的第三方中转服务(如 Azure OpenAI、自建 one-api),把 Base URL 改成对应地址,本教程后面「网络问题排查」一节会详细讲。
配置项 3:API Key(你的 OpenAI 通行证)
> sk-proj-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
把你在前置准备里复制好的 sk- 或 sk-proj- 开头字符串粘贴进去,按回车。
警告
⚠️ 重要警告: 粘贴 Key 时确保前后没有空格。从浏览器复制时容易带上隐藏的空白字符,会导致 401 鉴权失败。OpenCode 在这里不会显示你输入的内容(显示成 ••••••••••••),这是安全设计。
配置项 4:Model Name(默认模型)
> gpt-5.1-codexmax
这是 GPT-5.1-CodexMax 的官方模型 ID。如果你想同时配多个变体,可以在方式 B 里一次性写好,方式 A 先配一个跑通即可。
提示
小白提示: OpenAI 的模型 ID 命名规则是「主版本号-子版本号-变体」。gpt-5.1-codexmax 就是 GPT-5.1 的 CodexMax 编程专用变体。常见的还有 gpt-5.1(通用版)、gpt-5.1-mini(轻量版)。
配置项 5:Display Name(在 OpenCode 里的显示名)
> GPT-5.1 CodexMax
随便填,方便你在切换模型时认出来。建议带版本号,避免后续混淆。
第 4 步:保存并验证
按 Tab 切换到 「Save」 按钮,回车。OpenCode 会立即发起一次测试请求(向 https://api.openai.com/v1/models 发 GET),验证你的 Key 和 Base URL 是否能通。
- 成功:界面下方会显示绿色的
✓ openai connected字样,并返回你账户下可用的模型列表(你应该能在列表里看到gpt-5.1-codexmax) - 失败:会显示红色错误,常见原因见下方表格
| 错误信息 | 原因 | 解决方案 |
|---|---|---|
401 Unauthorized | Key 错误或已失效 | 回 OpenAI 平台重新生成 Key,重新粘贴 |
404 Not Found | Base URL 写错(多半是漏了 /v1) | 把 Base URL 改成 https://api.openai.com/v1 |
Connection timeout | 网络不通或被防火墙拦 | 见下方「网络问题排查」一节 |
403 Forbidden | 账户未充值或被风控 | 登录 platform.openai.com 充值或检查账户状态 |
429 Too Many Requests | 触发速率限制 | 等几分钟再试;升级账户套餐 |
model not found: gpt-5.1-codexmax | 账户未获得该模型访问权限 | 检查账户是否在 CodexMax 灰度名单内,或联系 OpenAI 支持 |
第 5 步:测试一下
在 OpenCode 的输入框里直接问 GPT-5.1-CodexMax 一句话:
你好,请用 Python 写一个判断回文数的函数,要求处理负数和边界情况
按回车。如果几秒钟后界面开始流式输出 GPT-5.1-CodexMax 的回复,并且能看到一段 Python 代码,说明配置完全成功,可以开始用了。
提示
小白提示: 第一次请求可能稍慢(因为要建立连接、加载上下文),第二次起就会快很多。如果等了 30 秒还没反应,按 Esc 中断,然后看下方「故障排查」。
方式 B:通过配置文件手动配置 GPT-5.1-CodexMax
如果你喜欢「一切配置皆文件」的工作流,或者需要把配置拷到服务器上部署、要解锁 CodexMax 的全部高级参数(reasoning effort、agentic step 上限等),选这种方式。
第 1 步:找到 OpenCode 的配置文件位置
OpenCode 的配置文件位于用户主目录下的 .opencode 目录:
| 操作系统 | 配置文件路径 |
|---|---|
| macOS / Linux | ~/.opencode/config.json |
| Windows | C:\Users\<你的用户名>\.opencode\config.json |
如果该目录不存在,说明你还没启动过 OpenCode。先随便启动一次让它生成默认结构:
1opencode
2# 启动后按 Ctrl+C 退出然后再查看目录:
1# macOS / Linux
2ls -la ~/.opencode/
3
4# Windows PowerShell
5ls $env:USERPROFILE\.opencode\预期看到:
1-rw-r--r-- 1 user staff 142 Sep 2 10:00 config.json
2-rw-r--r-- 1 user staff 89 sep 2 10:00 auth.json
3drwxr-xr-x 3 user staff 96 sep 2 10:00 sessions/第 2 步:编辑 config.json
用你喜欢的编辑器打开 config.json(VS Code、Vim、记事本都行):
1# 用 VS Code 打开
2code ~/.opencode/config.json
3
4# 或用 Vim
5vim ~/.opencode/config.json
6
7# Windows 用户
8notepad $env:USERPROFILE\.opencode\config.json第 3 步:写入 GPT-5.1-CodexMax 配置
把下面的 JSON 完整覆盖到 config.json 里:
1{
2 "$schema": "https://opencode.ai/config.json",
3 "provider": {
4 "openai": {
5 "npm": "@ai-sdk/openai",
6 "name": "OpenAI",
7 "options": {
8 "baseURL": "https://api.openai.com/v1"
9 },
10 "models": {
11 "gpt-5.1-codexmax": {
12 "name": "GPT-5.1 CodexMax",
13 "temperature": 0.2,
14 "maxTokens": 16384,
15 "contextWindow": 262144,
16 "tools": true,
17 "reasoning": true,
18 "reasoningEffort": "high",
19 "agentic": true,
20 "maxSteps": 50
21 },
22 "gpt-5.1": {
23 "name": "GPT-5.1 通用",
24 "temperature": 0.7,
25 "maxTokens": 8192,
26 "contextWindow": 131072,
27 "tools": true,
28 "reasoning": false
29 },
30 "gpt-5.1-mini": {
31 "name": "GPT-5.1 Mini",
32 "temperature": 0.5,
33 "maxTokens": 4096,
34 "contextWindow": 65536,
35 "tools": true,
36 "reasoning": false
37 }
38 }
39 }
40 },
41 "model": "openai/gpt-5.1-codexmax"
42}字段说明:
| 字段 | 作用 | CodexMax 推荐值 |
|---|---|---|
temperature | 控制随机性,越低越严谨 | 0.2(编程场景需要确定性) |
maxTokens | 单次最大输出长度 | 16384(CodexMax 支持长输出) |
contextWindow | 上下文窗口大小 | 262144(256K,CodexMax 原生上限) |
tools | 是否启用工具调用(读文件、改文件、跑命令) | true(必须开,否则 AI 看不到代码) |
reasoning | 是否启用推理链(让 AI 思考再答) | true(CodexMax 的强项) |
reasoningEffort | 推理深度,可选 low / medium / high | high(复杂任务用) |
agentic | 是否启用自主多步执行 | true(CodexMax 核心能力) |
maxSteps | agentic loop 最大步数 | 50(防止无限循环) |
提示
小白提示: 上面的配置开了全部 CodexMax 高级能力,第一次跑通后建议先把 reasoningEffort 改成 medium,因为 high 模式会消耗更多 token、响应更慢。日常简单任务用 medium 就够,遇到复杂重构、深层 Bug 时再切 high。
第 4 步:配置 API Key(用环境变量,更安全)
不要把 Key 直接写在 config.json 里——这样容易不小心提交到 Git。OpenCode 支持从环境变量读取 Key。
4.1 设置环境变量
macOS / Linux(写入 ~/.zshrc 或 ~/.bashrc):
1echo 'export OPENAI_API_KEY="sk-proj-你的真实Key"' >> ~/.zshrc
2source ~/.zshrcWindows PowerShell(用户级环境变量,永久生效):
1[System.Environment]::SetEnvironmentVariable("OPENAI_API_KEY", "sk-proj-你的真实Key", "User")
2# 重启 PowerShell 后生效警告
⚠️ 重要警告: ~/.zshrc 和 PowerShell 的环境变量设置好后,记得重启终端,否则当前会话读不到新变量。
4.2 告诉 OpenCode 用哪个环境变量
OpenCode 默认会按 OPENAI_API_KEY 的顺序查找环境变量。如果你的变量名不是这个,需要在 config.json 的 provider 配置里显式指定:
1{
2 "provider": {
3 "openai": {
4 "npm": "@ai-sdk/openai",
5 "name": "OpenAI",
6 "options": {
7 "baseURL": "https://api.openai.com/v1",
8 "apiKey": { "env": "OPENAI_API_KEY" }
9 },
10 "models": {
11 "gpt-5.1-codexmax": {
12 "name": "GPT-5.1 CodexMax"
13 }
14 }
15 }
16 }
17}提示
小白提示: "apiKey": { "env": "OPENAI_API_KEY" } 这行的意思是「请去读环境变量 OPENAI_API_KEY 的值作为 Key」。这样你的 config.json 可以放心提交到 Git,因为里面只有变量名、没有真实 Key。
4.3 验证环境变量已生效
1# macOS / Linux
2echo $OPENAI_API_KEY
3
4# Windows PowerShell
5echo $env:OPENAI_API_KEY预期输出你的 sk- 或 sk-proj- 开头的 Key 字符串。如果输出为空,说明环境变量没设好,回去检查 4.1。
第 5 步:验证配置文件 JSON 格式正确
错误的 JSON 会导致 OpenCode 启动失败。用下面命令验证:
1# 用 Node.js 验证(推荐)
2node -e "JSON.parse(require('fs').readFileSync(process.env.HOME + '/.opencode/config.json', 'utf8')); console.log('✓ JSON 格式正确')"
3
4# 或用 Python
5python3 -c "import json; json.load(open('$HOME/.opencode/config.json')); print('✓ JSON 格式正确')"
6
7# Windows PowerShell
8node -e "JSON.parse(require('fs').readFileSync(process.env.USERPROFILE + '\\.opencode\\config.json', 'utf8')); console.log('✓ JSON 格式正确')"如果输出 ✓ JSON 格式正确 就说明没问题。如果报 Unexpected token 之类错误,最常见的原因是:
- JSON 里有多余的逗号(比如最后一个属性后面多了
,) - 字符串用了单引号
'而不是双引号" - 文件末尾有多余的空行或字符
- 注释(JSON 不支持
//和/* */,如果想要注释用$schema或单独的_comment字段)
第 6 步:启动 OpenCode 并验证
1cd ~/projects/my-app
2opencode启动后,OpenCode 会自动加载 ~/.opencode/config.json。在主界面输入:
/models
回车,你应该能在列表里看到 「OpenAI」 一栏,下面挂着 GPT-5.1 CodexMax、GPT-5.1 通用、GPT-5.1 Mini 三个模型。选中 GPT-5.1 CodexMax,按回车切换为当前模型。
然后随便问一句测试:
请用 JavaScript 写一个数组去重函数,要求支持对象数组按 id 去重
如果 GPT-5.1-CodexMax 流式输出了代码(通常会附带解释和用法示例),说明方式 B 配置成功。
验证配置:确认 GPT-5.1-CodexMax 真的接通了
无论你用方式 A 还是方式 B,都建议做下面这套完整的连通性自检,确保后续实战不会突然踩坑。
自检 1:模型列表可拉取
在 OpenCode 输入框里执行:
/models
确认你能看到 openai 分组下的 GPT-5.1 系列模型,并且能选中 gpt-5.1-codexmax。如果看不到,说明 config.json 没加载或环境变量没生效,回前面步骤排查。
自检 2:最简单的对话能跑通
你好,你是谁?用一句话回答。
预期 GPT-5.1-CodexMax 会回复一段简短的自我介绍(通常是「I'm GPT-5.1-CodexMax, an AI model by OpenAI...」之类的)。如果回复 401 / 403 / 超时,对照前面的错误表排查。
自检 3:工具调用能力正常
OpenCode 的核心能力之一是「让 AI 调用工具」(比如读文件、改文件、跑命令)。CodexMax 原生支持 function calling,验证一下:
请读取当前目录下的 package.json 文件,告诉我项目名、版本号和主要依赖
预期 GPT-5.1-CodexMax 会调用 OpenCode 的 read_file 工具读取文件,然后告诉你结果。如果 AI 只回复「我无法访问文件」之类的话,说明 tools: true 没配好,回方式 B 第 3 步检查 models 配置里有没有 "tools": true。
自检 4:上下文窗口够用
让 GPT-5.1-CodexMax 处理一个稍大的文件,验证 contextWindow 配置是否生效:
请读取 src/index.ts,分析整个文件的结构,列出所有导出的函数及其参数签名
如果文件超过 8K tokens 但小于 256K,应该能一次读完。如果报 context length exceeded,说明 contextWindow 配小了,改成 262144。
自检 5:流式输出无卡顿
让 GPT-5.1-CodexMax 写一段稍长的代码,观察流式输出是否平滑:
用 TypeScript 写一个简易的 LRU Cache 实现,要求支持泛型、TTL 过期、容量限制,附带完整 Vitest 测试用例
正常情况下,你应该能看到代码一行一行逐渐「打出来」,而不是卡很久一次性全出。如果卡顿严重,多半是网络问题,参考下方「网络问题排查」。
提示
小白提示: 如果 reasoning: true,你会先看到一段「思考过程」(灰色或斜体显示),然后才是正式输出。这是 CodexMax 的推理链,不是卡住,是正常现象。思考过程会消耗 token 但能显著提升代码质量,复杂任务值得开。
实战使用:让 GPT-5.1-CodexMax 在 OpenCode 里帮你干活
配置好了,接下来才是真正有用的部分。下面四个场景是开发者日常最高频的用法,每个都附带可直接复制的 Prompt 模板。GPT-5.1-CodexMax 的强项是 agentic loop——你给它一个复杂任务,它会自主拆解、连续调用工具、自我验证,不需要你一步步指挥。
场景 1:让 GPT-5.1 帮你从零写一个 REST API
典型场景:产品同学临时找你做个内部工具,需要一套完整的「用户管理 + 任务管理」REST API。从零开始手写要半天,让 CodexMax 自主搭建可能 10 分钟搞定。
在 OpenCode 输入框里输入:
1帮我从零搭一个 Node.js + Express + TypeScript 的 REST API 项目,要求:
2
31. 使用 ESM 模块(package.json 里 "type": "module")
42. 用 zod 做请求参数校验
53. 用 Prisma 做数据库 ORM(先用 SQLite)
64. JWT 鉴权(登录、注册、token 刷新)
75. 两个核心模块:
8 - /users:CRUD + 分页 + 按邮箱搜索
9 - /tasks:CRUD + 按状态过滤 + 批量更新
106. 统一错误处理中间件
117. 用 Vitest 跑测试,至少给 /users 的 5 个接口写测试
128. 写好 .env.example、README.md、docker-compose.yml
139. 目录结构:src/{routes,middlewares,services,schemas,utils,types,prisma}
14
15请直接创建所有文件到当前目录,处理完后跑 npm test 确认测试通过按回车,GPT-5.1-CodexMax 会进入 agentic loop:
- 调用
write_file工具创建package.json、tsconfig.json - 调用
run_command工具执行npm install - 创建 Prisma schema 并执行
npx prisma migrate dev - 一个一个创建路由、中间件、service 文件
- 创建测试文件
- 执行
npm test,如果有失败自主修复后重跑 - 最后给你一份「创建清单 + 启动方式」
预期生成的目录结构:
1.
2├── package.json
3├── tsconfig.json
4├── .env.example
5├── README.md
6├── docker-compose.yml
7├── prisma/
8│ └── schema.prisma
9└── src/
10 ├── index.ts
11 ├── routes/
12 │ ├── users.ts
13 │ ├── tasks.ts
14 │ └── auth.ts
15 ├── middlewares/
16 │ ├── errorHandler.ts
17 │ ├── auth.ts
18 │ └── validate.ts
19 ├── services/
20 │ ├── userService.ts
21 │ └── taskService.ts
22 ├── schemas/
23 │ ├── userSchema.ts
24 │ └── taskSchema.ts
25 ├── utils/
26 │ ├── jwt.ts
27 │ └── prisma.ts
28 └── types/
29 └── index.ts
30tests/
31└── routes/
32 └── users.test.ts预期 src/routes/users.ts 内容大致如下:
1// src/routes/users.ts
2import { Router } from 'express';
3import { z } from 'zod';
4import { userService } from '../services/userService';
5import { validate } from '../middlewares/validate';
6import { auth } from '../middlewares/auth';
7
8const router = Router();
9
10const createUserSchema = z.object({
11 email: z.string().email(),
12 name: z.string().min(1).max(100),
13 password: z.string().min(8),
14});
15
16const listUsersSchema = z.object({
17 page: z.coerce.number().int().positive().default(1),
18 pageSize: z.coerce.number().int().positive().max(100).default(20),
19 search: z.string().optional(),
20});
21
22router.post('/', validate(createUserSchema), async (req, res, next) => {
23 try {
24 const user = await userService.create(req.body);
25 res.status(201).json(user);
26 } catch (err) {
27 next(err);
28 }
29});
30
31router.get('/', auth, validate(listUsersSchema, 'query'), async (req, res, next) => {
32 try {
33 const result = await userService.list(req.query as any);
34 res.json(result);
35 } catch (err) {
36 next(err);
37 }
38});
39
40router.get('/:id', auth, async (req, res, next) => {
41 try {
42 const user = await userService.getById(req.params.id);
43 if (!user) return res.status(404).json({ error: 'User not found' });
44 res.json(user);
45 } catch (err) {
46 next(err);
47 }
48});
49
50export default router;提示
小白提示: 这就是 CodexMax 的 agentic loop 价值——传统 AI 你要让它一个文件一个文件写,每写一个你确认一次。CodexMax 自己规划、自己执行、自己测试、自己修错,你只要在最后看一眼成果。
警告
⚠️ 重要警告: AI 一次生成几十个文件,强烈建议先 git init + git add . + git commit 作为初始状态,这样如果整体方向不对可以一键回滚:
先 git init 然后 commit 当前状态作为初始版本
场景 2:让 GPT-5.1 重构一段祖传代码
典型场景:你接手了一个 2018 年的 Java 转 TypeScript 项目,里面有个 600 行的 processOrder 函数,逻辑缠成一团,没人敢动。让 CodexMax 帮你拆解。
1请重构 src/services/processOrder.ts 里的 processOrder 函数:
2
31. 拆成单一职责的小函数(每个不超过 50 行)
42. 提取常量到文件顶部
53. 用早返回(early return)减少嵌套(最深不超过 3 层)
64. 不要改变对外接口签名(export 的函数名和参数不变)
75. 给每个拆出来的函数写 JSDoc 注释(含 @param、@returns、@throws)
86. 处理完后跑 npm test 确认没破坏功能
97. 如果测试失败,自主修复直到全部通过
108. 最后给我一份「重构报告」:拆出了几个函数、各自职责、改了哪些行CodexMax 会进入 agentic loop:
read_file读取整个文件- 推理阶段(reasoning chain):分析函数职责、依赖关系、潜在风险
- 输出重构方案(流式展示,可中途按
Esc取消) write_file写入重构后的代码- 调用
run_command工具执行npm test - 如果测试失败 →
read_file看错误 → 修复 → 重跑,最多循环maxSteps次 - 输出重构报告
预期重构后的代码结构(示意):
1// src/services/processOrder.ts
2
3// ===== 常量 =====
4const MAX_ITEMS_PER_ORDER = 100;
5const MIN_ORDER_AMOUNT = 0.01;
6const DISCOUNT_STACKING_RULE = 'no_overlap';
7
8// ===== 类型 =====
9interface OrderItem { sku: string; qty: number; price: number; }
10interface Discount { type: 'coupon' | 'fullReduction' | 'member'; value: number; }
11interface ProcessOrderResult { orderId: string; amount: number; items: OrderItem[]; }
12
13// ===== 主函数(保持原签名)=====
14/**
15 * 处理订单:校验 → 计价 → 优惠 → 落库
16 * @param items 订单商品列表
17 * @param discounts 优惠信息(可叠加)
18 * @param userId 下单用户
19 * @returns 订单处理结果
20 * @throws {ValidationError} 参数校验失败
21 * @throws {OutOfStockError} 库存不足
22 */
23export async function processOrder(
24 items: OrderItem[],
25 discounts: Discount[],
26 userId: string,
27): Promise<ProcessOrderResult> {
28 validateItems(items);
29 await checkStock(items);
30 const subtotal = calculateSubtotal(items);
31 const amount = applyDiscounts(subtotal, discounts);
32 return await persistOrder(items, amount, userId);
33}
34
35// ===== 子函数(每个单一职责)=====
36function validateItems(items: OrderItem[]): void {
37 if (items.length === 0) throw new ValidationError('订单不能为空');
38 if (items.length > MAX_ITEMS_PER_ORDER) throw new ValidationError('超出单订单上限');
39 // ...
40}
41
42async function checkStock(items: OrderItem[]): Promise<void> {
43 // 调用库存服务
44}
45
46function calculateSubtotal(items: OrderItem[]): number {
47 return items.reduce((sum, i) => sum + i.qty * i.price, 0);
48}
49
50function applyDiscounts(subtotal: number, discounts: Discount[]): number {
51 // ...
52}
53
54async function persistOrder(items: OrderItem[], amount: number, userId: string): Promise<ProcessOrderResult> {
55 // ...
56}提示
小白提示: 重构是「高风险操作」,强烈建议在重构前先 git commit 一次,这样出问题可以 git reset --hard 回滚。你可以直接让 CodexMax 帮你提交:
先 git add . 然后 commit,消息是 "refactor: 备份 processOrder 重构前"
警告
⚠️ 重要警告: 即使有 agentic loop 和自动测试,也要人工 Review 重构结果。AI 可能误判某个副作用是「无害」的,特别是涉及数据库写入、外部 API 调用的地方。测试通过 ≠ 行为完全等价——建议跑一遍集成测试或手动验证关键路径。
场景 3:让 GPT-5.1 定位并修复一个隐藏 Bug
典型场景:用户反馈「下单后偶尔会出现金额为负数的情况」,但 QA 怎么也复现不了。你看了三天代码找不到原因。CodexMax 的 reasoning 能力特别适合这种「根因分析」。
1src/services/processOrder.ts 里有个 bug:
2- 现象:用户下单后,最终金额偶尔为负数
3- 重现条件:优惠券 + 满减叠加 + 商品价格低于阈值时
4- 频率:约 0.3% 的订单触发
5
6请你:
71. 读 processOrder.ts 和它依赖的所有文件,建立完整调用链
82. 用推理分析哪些输入组合会触发负数(请展开推理过程)
93. 找到根因后,给我一份「Bug 分析报告」:
10 - 根因定位(具体哪一行、哪个分支)
11 - 触发条件的精确描述
12 - 修复方案(含改动前后对比)
134. 我确认方案后由你实施修复
145. 加单元测试覆盖这个边界场景,跑测试确认通过CodexMax 会先深度推理(reasoning chain),可能输出类似:
1推理过程:
21. 金额计算流程:subtotal → 减 discount → 减 couponValue → 减 fullReduction → 减 memberDiscount
32. 当用户同时有优惠券(couponValue)和满减(fullReduction)时,两者独立减额
43. 如果商品价格 $10,couponValue=$8(85 折),fullReduction=$5(满 100 减 5 触发条件被错误地按原价判断),
5 实际金额 = 10 - 8 - 5 = -3
64. 根因:fullReduction 的触发条件用了 subtotal 而非 (subtotal - couponValue)
75. 修复方案:fullReduction 的触发判断改为基于「已优惠后金额」然后给出修复代码:
1// 修复前(有 Bug)
2function applyDiscounts(subtotal: number, discounts: Discount[]): number {
3 let amount = subtotal;
4 amount -= discounts.find(d => d.type === 'coupon')?.value ?? 0;
5 // ❌ 满减判断用了 subtotal,应该是当前的 amount
6 const fullReduction = discounts.find(d => d.type === 'fullReduction');
7 if (fullReduction && subtotal >= fullReduction.threshold) {
8 amount -= fullReduction.value;
9 }
10 return amount;
11}
12
13// 修复后
14function applyDiscounts(subtotal: number, discounts: Discount[]): number {
15 let amount = subtotal;
16 amount -= discounts.find(d => d.type === 'coupon')?.value ?? 0;
17 // ✅ 满减判断基于当前已优惠金额
18 const fullReduction = discounts.find(d => d.type === 'fullReduction');
19 if (fullReduction && amount >= fullReduction.threshold) {
20 amount -= fullReduction.value;
21 }
22 // ✅ 兜底:金额不可能为负
23 if (amount < 0) {
24 console.warn(`[processOrder] 金额为负,归零处理`, { subtotal, discounts });
25 amount = 0;
26 }
27 return amount;
28}并配套测试:
1// src/services/processOrder.test.ts
2describe('applyDiscounts', () => {
3 it('优惠券+满减叠加导致负数时应归零', () => {
4 const discounts: Discount[] = [
5 { type: 'coupon', value: 8 },
6 { type: 'fullReduction', value: 5, threshold: 5 },
7 ];
8 expect(applyDiscounts(10, discounts)).toBe(0);
9 });
10
11 it('满减阈值应基于已优惠后金额', () => {
12 const discounts: Discount[] = [
13 { type: 'coupon', value: 8 },
14 { type: 'fullReduction', value: 5, threshold: 5 },
15 ];
16 // subtotal=10, 减 coupon 8 → 2,2 < 5 不应触发满减
17 expect(applyDiscounts(10, discounts)).toBe(2);
18 });
19
20 it('正常情况下应返回正确金额', () => {
21 const discounts: Discount[] = [
22 { type: 'coupon', value: 20 },
23 { type: 'fullReduction', value: 10, threshold: 100 },
24 ];
25 expect(applyDiscounts(200, discounts)).toBe(170);
26 });
27});提示
小白提示: 让 AI 修 Bug 时,一定要描述清楚「重现路径」和「预期行为」。光说「这里有个 bug」CodexMax 只会瞎猜,给出错误修复反而引入新问题。能提供生产环境日志、用户截图就更好——把内容贴进 OpenCode 输入框,CodexMax 能基于真实数据推理。
警告
⚠️ 重要警告: CodexMax 在 reasoningEffort: high 模式下会展示详细推理链,可能消耗较多 token(一次推理可能 5000+ token)。简单 Bug 用 medium,复杂根因分析才用 high。
场景 4:让 GPT-5.1 帮你读懂一个陌生代码库
典型场景:刚入职第一天,接手一个 30 万行代码的微服务项目,文档过时、原作者已离职。CodexMax 配合 OpenCode 是极佳的「代码考古」工具——256K 上下文能一次吞下相当一部分代码。
1我刚接手这个项目,请你做一份「5 分钟上手指引」:
2
31. 读 package.json,告诉我项目类型、主要技术栈、关键依赖
42. 读 README.md 和 docs/ 目录下的文档,总结项目定位和核心功能
53. 找到入口文件(src/index.ts 或 main.ts),梳理启动流程
64. 画出模块依赖关系图(用 Mermaid 语法)
75. 列出最核心的 5 个文件,每个用一句话说明作用
86. 指出最复杂的部分(通常是测试覆盖最差、git log 改动最频繁的代码)
97. 找出 3 个潜在的代码质量问题(带具体文件和行号)
10
11输出一份 Markdown 报告,存到 docs/onboarding.mdCodexMax 会自动多次调用 read_file、run_command 工具,串联起整个调查链:
- 读
package.json→ 提取依赖 - 读
README.md→ 提取项目定位 run_command执行git log --oneline -50→ 找出最频繁改动的文件run_command执行find src -name "*.ts" | head -100→ 列出源码结构- 读关键入口文件 → 梳理调用链
- 综合分析 → 输出报告
预期报告大致如下:
1# 项目上手指南
2
3## 项目概览
4- **类型**:Node.js 微服务(订单系统)
5- **技术栈**:NestJS + TypeORM + PostgreSQL + Redis + RabbitMQ
6- **核心功能**:订单创建、支付、履约、退款
7
8## 模块依赖图
9
10```mermaid
11graph TD
12 A[main.ts] --> B[AppModule]
13 B --> C[OrderModule]
14 B --> D[PaymentModule]
15 B --> E[InventoryModule]
16 C --> F[OrderService]
17 C --> G[PaymentClient]
18 D --> F核心文件 Top 5
src/order/order.service.ts— 订单核心业务逻辑src/payment/payment.service.ts— 支付编排src/infrastructure/rabbitmq/consumer.ts— MQ 消费者src/common/decorators/idempotent.ts— 幂等装饰器src/infrastructure/db/typeorm.config.ts— 数据库配置
最复杂的部分
src/order/order.service.ts(1800 行,单文件最大,圈复杂度 47)- 测试覆盖率仅 23%,建议优先补测试
潜在问题
- 🔴
src/payment/payment.service.ts:142—amount未做非负校验,可能传入负数 - 🟡
src/infrastructure/rabbitmq/consumer.ts:78— 消费失败无重试上限,可能死循环 - 🟡
src/order/order.service.ts:956— 用setTimeout做超时控制,不可靠
1
2> **小白提示**: 对于超大型代码库(百万行级),CodexMax 的 256K 上下文也读不完。这时可以**分模块调研**:先让它读 `package.json` 和顶层目录结构,然后你指定它深入某个模块:「现在重点分析 src/payment/ 这个模块」。一步步缩小范围。
3
4---
5
6## 高级配置:把 GPT-5.1-CodexMax 调教成你的专属代码助手
7
8基础配置跑通后,下面这些高级技巧能让 CodexMax 用得更顺手、更省 token、更安全。
9
10### 1. 模型参数调优
11
12`config.json` 里每个 model 下都可以配这些参数:
13
14```json
15{
16 "gpt-5.1-codexmax": {
17 "name": "GPT-5.1 CodexMax",
18 "temperature": 0.2,
19 "topP": 0.95,
20 "maxTokens": 16384,
21 "frequencyPenalty": 0,
22 "presencePenalty": 0,
23 "reasoningEffort": "high",
24 "maxSteps": 50
25 }
26}参数含义与推荐值:
| 参数 | 作用 | 写代码推荐值 | 写文档推荐值 | 调试 Bug 推荐值 | 默认值 |
|---|---|---|---|---|---|
temperature | 控制随机性,越高越发散 | 0.2(严谨) | 0.7(有创意) | 0.1(最严谨) | 0.7 |
topP | 核采样阈值 | 0.95 | 0.9 | 0.9 | 1.0 |
maxTokens | 单次最大输出长度 | 16384 | 8192 | 16384 | 4096 |
frequencyPenalty | 抑制重复词 | 0 | 0.3 | 0 | 0 |
presencePenalty | 抑制重复话题 | 0 | 0.2 | 0 | 0 |
reasoningEffort | 推理深度 | medium | low | high | medium |
maxSteps | agentic loop 最大步数 | 30 | 10 | 50 | 20 |
提示
小白提示: 写代码时把 temperature 调到 0.2,CodexMax 会更「规规矩矩」,减少胡编乱造的 API 调用;写营销文案、产品文案时调到 0.8,会更有点子。调试难 Bug 时把 reasoningEffort 调到 high,让它深度推理;简单改动调到 low,省 token 又快。
2. 上下文窗口设置
GPT-5.1-CodexMax 原生支持 256K context window(约 60 万汉字 / 8 万行代码),是 GPT-4o 的 8 倍。但 OpenCode 默认可能只配 8K。在 config.json 里改成完整大小:
1{
2 "gpt-5.1-codexmax": {
3 "name": "GPT-5.1 CodexMax",
4 "contextWindow": 262144
5 }
6}不同场景的 contextWindow 推荐值:
| 场景 | 推荐 contextWindow | 理由 |
|---|---|---|
| 日常写代码、改单文件 | 32768(32K) | 够用,省 token |
| 重构单文件 + 测试 | 65536(64K) | 需要同时看实现和测试 |
| 整模块分析 | 131072(128K) | 能吞下整个中小模块 |
| 整项目代码考古 | 262144(256K) | 全开,能读相当一部分项目 |
警告
⚠️ 重要警告: 上下文越大,单次请求消耗的 token 越多、费用越高。不要盲目开到 256K——日常写代码 16K~32K 完全够用。只有读大型代码库、整文件重构、长对话历史时才需要全开。可以在 OpenCode 里用 /clear 清空会话历史来释放上下文。
3. 多模型切换:让 CodexMax 和其他模型协同
在 config.json 里同时配多个模型,按需切换:
1{
2 "provider": {
3 "openai": {
4 "npm": "@ai-sdk/openai",
5 "name": "OpenAI",
6 "options": {
7 "baseURL": "https://api.openai.com/v1",
8 "apiKey": { "env": "OPENAI_API_KEY" }
9 },
10 "models": {
11 "gpt-5.1-codexmax": {
12 "name": "CodexMax · 重活",
13 "temperature": 0.2,
14 "contextWindow": 131072,
15 "reasoningEffort": "high",
16 "maxSteps": 50
17 },
18 "gpt-5.1": {
19 "name": "GPT-5.1 · 通用",
20 "temperature": 0.5,
21 "contextWindow": 32768
22 },
23 "gpt-5.1-mini": {
24 "name": "GPT-5.1 Mini · 轻活",
25 "temperature": 0.3,
26 "contextWindow": 16384,
27 "maxTokens": 2048
28 }
29 }
30 }
31 },
32 "model": "openai/gpt-5.1-codexmax"
33}切换时在 OpenCode 里输入 /models,用方向键选另一个,回车即可。
常见切换策略:
| 场景 | 推荐模型 | 理由 |
|---|---|---|
| 复杂重构、深层 Bug、整模块分析 | gpt-5.1-codexmax | 能力最强,有 agentic loop |
| 写新功能、改一两个文件 | gpt-5.1 | 通用能力强,速度快 |
| 简单问答、查文档、补注释 | gpt-5.1-mini | 响应最快、最便宜 |
| 大型代码库整项目分析 | gpt-5.1-codexmax + 调大 contextWindow | 需要长上下文 + agentic |
| 写非代码内容(README、文档、注释) | gpt-5.1 | 通用版语言能力更均衡 |
4. 配置 system prompt(让 CodexMax 默认按你的风格工作)
OpenCode 支持在 config.json 里给每个 model 配默认 system prompt:
1{
2 "gpt-5.1-codexmax": {
3 "name": "GPT-5.1 CodexMax",
4 "systemPrompt": "你是一个资深的全栈工程师,精通 TypeScript / React / Node.js / PostgreSQL。\n写代码时遵循以下规范:\n1. 使用 ESM 模块语法(import/export)\n2. 函数必须有 JSDoc 注释(含 @param、@returns)\n3. 优先使用 async/await,禁止 .then() 链\n4. 错误处理用自定义错误类,不要 throw 字符串\n5. 永远不要用 any 类型,必须显式标注\n6. 数据库操作必须用事务(prisma.$transaction)\n7. 所有对外 API 必须用 zod 校验入参\n8. 永远用中文回复\n9. 改代码前先告诉我思路,等我确认后再动手\n10. 跑测试用 npm test,不要用 yarn"
5 }
6}提示
小白提示: 配好 system prompt 后,不用每次都重复说「用 TypeScript 写」——CodexMax 会自动按你预设的风格走。这一条能省下大量 token 和打字时间。建议把团队代码规范、个人偏好、项目约定都写进去。
5. 配置项目级覆盖(每个项目用不同的 CodexMax 配置)
OpenCode 支持在项目根目录放 .opencode.json,覆盖全局配置:
1// 项目根目录下的 .opencode.json
2{
3 "provider": {
4 "openai": {
5 "models": {
6 "gpt-5.1-codexmax": {
7 "temperature": 0.1,
8 "systemPrompt": "这是金融交易系统,所有金额计算必须用 big.js,禁止用 Number 直接运算。\n所有数据库写入必须在事务内。\n所有时间用 UTC,禁止用本地时间。\n日志必须脱敏(不能出现用户身份证号、银行卡号)。"
9 }
10 }
11 }
12 },
13 "model": "openai/gpt-5.1-codexmax"
14}这样你在不同项目里启动 OpenCode,CodexMax 会自动套用该项目的特定风格规范。比如:
- 金融项目 → 严格用 big.js、强制事务
- 实验性项目 → 放宽 temperature 到 0.5、允许 any
- 遗留项目 → 兼容 CommonJS、允许 .then() 链
6. permissions 权限管理(限制 CodexMax 能访问的目录和命令)
在 config.json 里加 permissions,限制 CodexMax 只能读写特定目录,防止误删系统文件、误跑危险命令:
1{
2 "permissions": {
3 "edit": ["src/**", "tests/**", "docs/**"],
4 "bash": ["npm test", "npm run lint", "npm run build", "git status", "git diff", "git log"]
5 }
6}字段说明:
edit:允许 AI 修改的文件路径白名单(支持 glob)bash:允许 AI 执行的命令白名单(精确匹配)
警告
⚠️ 重要警告: 强烈建议生产环境配上 permissions。否则 AI 一旦理解错了你的意图,可能:
- 把
node_modules全删了 - 误改
package-lock.json导致依赖崩溃 - 跑
rm -rf /或format c:(极端情况) - 把
.env文件内容写进 README - 跑
git push --force覆盖远程
白名单制——只允许 AI 干你明确允许的事,其他全部拒绝。这是安全兜底。
7. 调整 agentic loop 行为
CodexMax 的 agentic loop 默认最多 50 步,每步可能调用工具或思考。可以通过 maxSteps 调整:
1{
2 "gpt-5.1-codexmax": {
3 "maxSteps": 100,
4 "agentic": true
5 }
6}不同任务的推荐 maxSteps:
| 任务 | 推荐 maxSteps | 理由 |
|---|---|---|
| 简单写函数 | 10 | 一次性任务,几步就完 |
| 改 Bug + 加测试 | 30 | 要读、改、测试、可能重试 |
| 整模块重构 | 50 | 涉及多文件、多次测试 |
| 从零搭项目 | 100 | 大量文件创建、依赖安装、测试迭代 |
| 大型代码库分析 | 80 | 大量文件读取、关系梳理 |
警告
⚠️ 重要警告: maxSteps 越大,单次任务可能消耗的 token 越多。建议设个上限避免无限循环。如果 CodexMax 在第 N 步停下来汇报「我需要更多步骤」,你可以回复 继续 让它接着干。
8. 启用流式日志(调试网络问题时用)
如果遇到响应慢、间歇性失败,开启日志看详细请求过程:
1# macOS / Linux
2opencode --log-level debug 2>&1 | tee opencode.log
3
4# Windows PowerShell
5opencode --log-level debug 2>&1 | Tee-Object opencode.log日志会打印每次请求的 URL、headers(不含 Key)、响应时间、token 用量、agentic loop 每一步的工具调用。排查 401 / 403 / 超时、性能问题时特别有用。
网络问题排查(国内用户必看)
OpenAI 的 API 服务器部署在海外,国内访问大概率遇到网络问题。下面是从国内连通 GPT-5.1-CodexMax 的常见方案。
方案 1:使用 OpenAI 兼容代理
如果你有 OpenAI 兼容代理服务(比如自己搭的 one-api、new-api、FastGPT),把 Base URL 改成代理地址即可:
1{
2 "provider": {
3 "openai": {
4 "options": {
5 "baseURL": "https://your-proxy.example.com/v1"
6 }
7 }
8 }
9}方案 2:用 HTTP 代理环境变量
如果你本机有 HTTP 代理(如 Clash 默认端口 7890),让 OpenCode 走代理:
1# macOS / Linux
2export HTTP_PROXY=http://127.0.0.1:7890
3export HTTPS_PROXY=http://127.0.0.1:7890
4opencode
5
6# Windows PowerShell
7$env:HTTP_PROXY = "http://127.0.0.1:7890"
8$env:HTTPS_PROXY = "http://127.0.0.1:7890"
9opencode方案 3:用 Azure OpenAI Service(企业推荐)
如果你有 Azure OpenAI Service 订阅(国内可正常访问),配置稍有不同:
1{
2 "provider": {
3 "azure": {
4 "npm": "@ai-sdk/azure",
5 "name": "Azure OpenAI",
6 "options": {
7 "baseURL": "https://your-resource.openai.azure.com/openai/deployments/your-deployment",
8 "apiKey": { "env": "AZURE_OPENAI_API_KEY" },
9 "apiVersion": "2026-09-01-preview"
10 },
11 "models": {
12 "gpt-5.1-codexmax": {
13 "name": "GPT-5.1 CodexMax (Azure)"
14 }
15 }
16 }
17 },
18 "model": "azure/gpt-5.1-codexmax"
19}方案 4:测试连通性
直接用 curl 测试 OpenAI API 是否可达:
1curl -i https://api.openai.com/v1/models \
2 -H "Authorization: Bearer $OPENAI_API_KEY"预期返回 HTTP 200 和 JSON 格式的模型列表。如果连接超时,说明需要走代理。
警告
⚠️ 重要警告: 不要在 config.json 里直接写第三方代理服务器地址当 baseURL,除非你完全信任该代理服务商——它能截获你所有的对话内容和代码,包括你的 API Key。自建代理是唯一安全方案。免费公共代理绝对不要用。
故障排查速查表
把所有常见问题汇总成一张表,遇到问题先来这里查。
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
启动 OpenCode 报 command not found: opencode | 安装失败或 PATH 没生效 | 重开终端;用 npm install -g opencode 重新装;检查 ~/.npm-global/bin 是否在 PATH |
启动报 Error: Cannot find module '@ai-sdk/openai' | npm 包没装全 | 执行 npm install -g @ai-sdk/openai |
opencode --version 版本低于 0.18.0 | OpenCode 太旧,不支持 CodexMax 全部能力 | 重新跑安装脚本或 npm update -g opencode 升级 |
/models 列表里看不到 OpenAI | 配置文件没加载 / JSON 语法错误 | 用 node -e "JSON.parse(...)" 验证 JSON;确认文件路径正确 |
/models 显示 OpenAI 但列表里没有 gpt-5.1-codexmax | OpenCode 版本太旧,未收录该模型 ID | 升级 OpenCode 到 ≥ 0.18.0;或手填模型 ID(方式 B) |
选中 gpt-5.1-codexmax 但对话报 model not found | 账户未获得该模型访问权限 | 检查 OpenAI 账户是否在 CodexMax 灰度名单内;联系 OpenAI 支持 |
对话报 401 Unauthorized | API Key 错 / 失效 / 没设环境变量 | 重新生成 Key;echo $OPENAI_API_KEY 检查环境变量 |
对话报 403 Forbidden | 账户未充值 / 被风控 / 国家地区不支持 | 登录 platform.openai.com 充值或检查账户状态、地区 |
对话报 404 Not Found | baseURL 缺 /v1 或有多余斜杠 | 改成 https://api.openai.com/v1 |
对话报 429 Too Many Requests | 触发了 OpenAI 的速率限制 | 降低请求频率;升级账户套餐;在 config.json 配置 rateLimit |
对话报 context length exceeded | 输入超长,超出 contextWindow | 调大 contextWindow 到 262144;或用 /clear 清空当前会话历史 |
| 响应很慢,30 秒以上 | 网络问题 / 模型选错 / reasoning effort 太高 | 切换到 gpt-5.1-mini;走代理;把 reasoningEffort 调到 medium 或 low |
| 响应截断(生成到一半就停了) | maxTokens 太小 | 调大 maxTokens,比如 16384 或 32768 |
| agentic loop 中途停下来说「达到 maxSteps」 | maxSteps 配太小 | 在 config.json 里调大 maxSteps 到 100;或回复 继续 让它接着干 |
| 工具调用失败(AI 说「我无法读文件」) | tools: true 没配 | 在 model 配置里加 "tools": true |
| 中文回复里夹英文 | system prompt 没要求用中文 | 在 systemPrompt 末尾加「请始终用中文回复」 |
| 代码里出现不存在的 API(幻觉) | temperature 太高 / 模型本身幻觉 | 降 temperature 到 0.2;要求 AI「只用项目里已有的依赖」;开启 reasoning |
git diff / npm test 等命令执行失败 | 权限不够 / 命令不在 permissions.bash 白名单 | 在 config.json 的 permissions.bash 里加该命令 |
| 多人共享同一 Key 导致频繁限流 | 同一 Key 被多人使用 | 给每人独立建 Key;或在 auth.json 里轮换 Key |
| 配置改了不生效 | 还在用旧会话 | /exit 退出后重新 opencode 启动 |
| Windows 下路径报错 | 反斜杠转义问题 | JSON 里写 \\ 表示单个反斜杠,或用正斜杠 / |
| OpenCode 界面卡死 | TUI 渲染 bug | 按 Ctrl+C 退出重试;升级 OpenCode 版本 |
| reasoning 链太长导致响应很慢 | reasoningEffort 配成了 high | 改成 medium 或 low;只有复杂任务用 high |
费用与用量管理
GPT-5.1-CodexMax 是 OpenAI 旗舰模型,按 token 计费,比 GPT-4o 贵但能力强得多。了解下面这些数字有助于控制成本。
GPT-5.1 系列定价参考
| 模型 | 输入价格 | 输出价格 | reasoning 加价 | 备注 |
|---|---|---|---|---|
gpt-5.1-codexmax | $5.00 / 1M tokens | $15.00 / 1M tokens | reasoning 部分按输出价计 | 编程旗舰,256K 上下文 |
gpt-5.1 | $3.00 / 1M tokens | $10.00 / 1M tokens | - | 通用旗舰 |
gpt-5.1-mini | $0.50 / 1M tokens | $1.50 / 1M tokens | - | 轻量版,便宜 10 倍 |
信息
价格可能随 OpenAI 政策调整,以 platform.openai.com/pricing 实时显示为准。
控制成本的 7 个技巧
- 小改动用
gpt-5.1-mini:简单问答、注释生成、单行补全完全够用,便宜 10 倍 - 合理设
maxTokens:不要无脑设 32K,按实际需要设(写函数 4K、重构 16K),能省不少 - 及时
/clear:OpenCode 会累积会话历史,每次请求都会把全部历史发给模型。任务完成后立即/clear清空,避免无谓的 token 消耗 - 大文件用
read_file工具而非粘贴:粘贴到输入框的内容会计入输入 token;用工具读取走的是文件路径,相对便宜 - 按需调
reasoningEffort:high模式 reasoning 链可能 5000+ token,简单任务用low或medium - 按需调
contextWindow:日常 32K 够用,只有大任务才开 256K - 关掉不必要的
agentic:简单一次性任务设"agentic": false,避免 AI 自主多步执行消耗
在 OpenCode 里查看用量
/usage
会显示当前会话的 token 累计消耗(按模型分组)和估算费用。也可以登录 platform.openai.com/usage 查看账户总用量。
月度成本估算
| 使用强度 | 月估算费用(CodexMax) | 月估算费用(mini 为主) |
|---|---|---|
| 轻度:每天 5 次对话 | $5~$10 | $1~$2 |
| 中度:每天 20 次对话 + 1 次重构 | $30~$60 | $5~$10 |
| 重度:每天 50 次对话 + 5 次重构 + 1 次大任务 | $100~$200 | $15~$30 |
提示
小白提示: 建议在 OpenCode 里设置每日用量上限(在 config.json 加 "dailyTokenLimit": 500000),达到上限自动停,防止某次 agentic loop 跑飞了烧光余额。
安全最佳实践
接入 AI 工具时,安全比效率更重要。下面这些是生产环境必须做的事。
1. 用环境变量隔离 Key
永远不要把 sk- 或 sk-proj- 开头的 Key 直接写在 config.json 里,即使是你本地用的。用环境变量(见方式 B 第 4 步)。
2. config.json 提交到 Git 前先扫描
在项目根目录建 .gitignore,把可能含敏感信息的文件排除:
1# .gitignore
2.opencode/auth.json
3.opencode/sessions/
4.opencode.log
5*.env
6.env.localconfig.json 如果只引用环境变量、不含真实 Key,可以放心提交。
3. 用 permissions 限制 CodexMax 能做的事
1{
2 "permissions": {
3 "edit": ["src/**", "tests/**", "docs/**"],
4 "bash": ["npm test", "npm run lint", "npm run build", "git status", "git diff"]
5 }
6}白名单制——只允许 CodexMax 干你明确允许的事,其他全部拒绝。特别要禁止 rm、git push --force、git reset --hard 等危险命令。
4. 定期轮换 API Key
每 1~3 个月在 OpenAI 控制台创建新 Key,删除旧 Key。即使旧 Key 泄露也无法被利用。
5. 不要让 AI 处理真实生产数据
不要在 OpenCode 里直接粘生产数据库的真实用户数据让 AI 分析
警告
⚠️ 重要警告: 把用户数据发给 AI 等同于数据外泄,可能违反 GDPR / 个保法 / 数据安全法。处理敏感数据时,先脱敏(用假名替换真实姓名、邮箱、身份证号、银行卡号),再让 AI 分析。
6. Code Review 不能省
AI 生成的代码必须人工 Review才能合并。CodexMax 虽然强,但仍可能:
- 引入不存在的 API(幻觉)
- 漏掉边界情况
- 写出语法正确但语义错误的代码
- 用了不安全的依赖
- 在并发场景下有竞态条件
警告
⚠️ 重要警告: AI 生成的代码默认不可信,必须走和人写代码一样的 Review 流程:CI 通过 + 同事 Review + 关键路径手动验证。
团队协作:多人共用同一套 OpenCode + CodexMax 配置
如果你在团队里推广 OpenCode + CodexMax,下面这套流程能让团队成员 5 分钟接入。
1. 把 config.json 模板提交到项目仓库
1// .opencode.json (放在项目根目录)
2{
3 "$schema": "https://opencode.ai/config.json",
4 "provider": {
5 "openai": {
6 "npm": "@ai-sdk/openai",
7 "name": "OpenAI",
8 "options": {
9 "baseURL": "https://api.openai.com/v1",
10 "apiKey": { "env": "OPENAI_API_KEY" }
11 },
12 "models": {
13 "gpt-5.1-codexmax": {
14 "name": "CodexMax",
15 "temperature": 0.2,
16 "contextWindow": 65536,
17 "tools": true,
18 "reasoning": true,
19 "reasoningEffort": "medium",
20 "agentic": true,
21 "maxSteps": 30,
22 "systemPrompt": "团队代码规范:\n1. 使用 ESM\n2. 函数必须有 JSDoc\n3. 禁止 any 类型\n4. 数据库操作用事务\n5. 所有 API 入参用 zod 校验\n6. 永远用中文回复"
23 }
24 }
25 }
26 },
27 "model": "openai/gpt-5.1-codexmax",
28 "permissions": {
29 "edit": ["src/**", "tests/**"],
30 "bash": ["npm test", "npm run lint", "git status", "git diff"]
31 }
32}2. 写一份 README,告诉新人怎么配
新成员入职只需:
1# 1. 拉项目
2git clone https://github.com/your-team/your-project.git
3cd your-project
4
5# 2. 配环境变量
6echo 'export OPENAI_API_KEY="sk-proj-你的Key"' >> ~/.zshrc
7source ~/.zshrc
8
9# 3. 启动 OpenCode
10opencode3. 给每个成员独立的 Key
不要全团队共用一个 Key——一旦某人触发限流,全员都受影响。让每个人在 OpenAI 平台用自己的账号创建 Key。如果团队有组织账户,可以在 OpenAI 后台给每个成员分配子账户,统一计费。
4. 设置用量预警
在 OpenAI 控制台 Settings → Billing → Usage limits 设置月度上限和邮件预警,比如:
- 月度硬上限 $50
- $30 时邮件预警
- $45 时邮件再预警
这样某人不小心跑飞了也不会让团队账单爆掉。
进阶玩法:把 OpenCode + CodexMax 嵌入 CI/CD
写代码不是 OpenCode 的全部——你还可以在 CI 里用 CodexMax 做自动化代码审查、PR 总结、文档同步等。
GitHub Actions 示例:AI Code Review
1# .github/workflows/ai-review.yml
2name: AI Code Review
3on:
4 pull_request:
5 types: [opened, synchronize]
6
7jobs:
8 review:
9 runs-on: ubuntu-latest
10 steps:
11 - uses: actions/checkout@v4
12 with:
13 fetch-depth: 0
14
15 - uses: actions/setup-node@v4
16 with:
17 node-version: 20
18
19 - name: Install OpenCode
20 run: npm install -g opencode
21
22 - name: Run AI review with CodexMax
23 env:
24 OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
25 run: |
26 # 用非交互模式调用 OpenCode,让它审查 diff
27 opencode run "请审查 git diff origin/main...HEAD 的改动,重点关注:
28 1. 是否有安全漏洞(SQL 注入、XSS、敏感信息泄露、未授权访问)
29 2. 是否有性能问题(O(n²) 循环、不必要的内存分配、N+1 查询)
30 3. 是否符合团队代码规范(ESM、JSDoc、禁止 any)
31 4. 是否有边界情况遗漏
32 5. 测试是否充分覆盖新代码
33 输出 Markdown 格式的审查报告,按严重程度分级(🔴 严重 / 🟡 警告 / 🔵 建议)" \
34 --model openai/gpt-5.1-codexmax \
35 --max-tokens 8192 > review.md
36
37 - name: Post review comment
38 uses: actions/github-script@v7
39 with:
40 script: |
41 const fs = require('fs');
42 const body = fs.readFileSync('review.md', 'utf8');
43 github.rest.issues.createComment({
44 issue_number: context.issue.number,
45 owner: context.repo.owner,
46 repo: context.repo.repo,
47 body: `## 🤖 GPT-5.1-CodexMax AI 代码审查\n\n${body}`
48 });警告
⚠️ 重要警告: 把 OPENAI_API_KEY 配在 GitHub Secrets 里,绝对不要写在 yaml 明文。同时建议在 permissions 里只允许 read,禁止 edit 和 bash,防止 AI 在 CI 里跑出意外命令。CI 里建议用 gpt-5.1 而不是 codexmax,便宜很多。
GitLab CI 示例
1# .gitlab-ci.yml
2ai-review:
3 stage: review
4 image: node:20
5 only:
6 - merge_requests
7 script:
8 - npm install -g opencode
9 - |
10 opencode run "审查 git diff origin/$CI_MERGE_REQUEST_TARGET_BRANCH_NAME...HEAD 的改动..." \
11 --model openai/gpt-5.1-codexmax > review.md
12 - cat review.md
13 artifacts:
14 paths:
15 - review.md
16 variables:
17 OPENAI_API_KEY: $OPENAI_API_KEY总结
到这里,你已经掌握了把 GPT-5.1-CodexMax 接入 OpenCode 的全部要点。回顾一下:
你学到了什么
- OpenCode 是什么:一个开源的终端 AI 编程工具,可以通过 OpenAI 兼容协议接入任意大模型
- GPT-5.1-CodexMax 是什么:OpenAI 在 2026-09-01 发布的编程专用旗舰模型,支持 256K 上下文、agentic loop、深度推理
- 两种接入方式:
- 方式 A(应用端交互):用
/models命令在 TUI 里点点选选,适合新手 - 方式 B(配置文件手动):直接编辑
~/.opencode/config.json,适合进阶用户和团队部署,能解锁全部高级参数
- 方式 A(应用端交互):用
- 验证配置的 5 个自检:模型列表、对话、工具调用、上下文、流式输出
- 实战用法:从零写 REST API、重构祖传代码、定位隐藏 Bug、读懂陌生代码库
- 高级配置:参数调优、上下文窗口、多模型切换、system prompt、项目级覆盖、permissions 权限管理、agentic loop 调优
- 网络问题排查:代理方案、Azure OpenAI、连通性测试
- 故障排查:20 行速查表覆盖所有常见问题
- 费用管理:定价参考、7 个省钱技巧、月度成本估算
- 安全最佳实践:环境变量隔离、permissions 白名单、Key 轮换、敏感数据脱敏、Code Review
- 团队协作与 CI/CD 集成:配置文件版本化、GitHub Actions / GitLab CI 自动代码审查
推荐的下一步
- 如果你想更熟悉 OpenCode:读 opencode-terminal
- 如果你想对比一下其他模型:看 Grok 接入 OpenCode、DeepSeek 接入 OpenCode、Gemini 接入 OpenCode
- 如果你想深度定制 AI 行为:研究 OpenCode 的 MCP 协议支持,给 CodexMax 接入更多工具(数据库、浏览器、文件系统等)
- 如果你想做大规模代码迁移:把
contextWindow调到 256K +maxSteps调到 100,让 CodexMax 自主处理整个迁移流程
一句话总结
信息
GPT-5.1-CodexMax + OpenCode = 一个住在你终端里、能自主拆活干活的资深工程师搭子。
配好之后,别只把它当 AI 聊天工具用——它的真正价值在于「接住你的工作流」:你想读代码它就读、想改它就改、想跑测试它就跑、想重构它就重构、想从零搭项目它就一条龙搭完。一旦形成肌肉记忆,你会回不去以前那种「复制到网页、再粘回来」的低效模式。
CodexMax 的 agentic loop 是革命性的——你不再需要一步步指挥 AI,给它一个目标,它自己拆解、执行、验证、修复。这把 AI 编程助手从「打字员」升级成了「能干活的工程师」。
祝你写得顺手!
附录:完整配置文件模板
如果你懒得一步步配,下面这份是直接可用的完整模板,复制存为 ~/.opencode/config.json,配上 OPENAI_API_KEY 环境变量就能跑:
1{
2 "$schema": "https://opencode.ai/config.json",
3 "provider": {
4 "openai": {
5 "npm": "@ai-sdk/openai",
6 "name": "OpenAI",
7 "options": {
8 "baseURL": "https://api.openai.com/v1",
9 "apiKey": { "env": "OPENAI_API_KEY" }
10 },
11 "models": {
12 "gpt-5.1-codexmax": {
13 "name": "CodexMax · 重活",
14 "temperature": 0.2,
15 "maxTokens": 16384,
16 "contextWindow": 131072,
17 "tools": true,
18 "reasoning": true,
19 "reasoningEffort": "medium",
20 "agentic": true,
21 "maxSteps": 50,
22 "systemPrompt": "你是一个资深的全栈工程师。写代码时遵循:1. 使用 ESM;2. 函数必须有 JSDoc;3. 优先 async/await;4. 禁用 any 类型;5. 始终用中文回复。"
23 },
24 "gpt-5.1": {
25 "name": "GPT-5.1 · 通用",
26 "temperature": 0.5,
27 "maxTokens": 8192,
28 "contextWindow": 32768,
29 "tools": true,
30 "reasoning": false
31 },
32 "gpt-5.1-mini": {
33 "name": "GPT-5.1 Mini · 轻活",
34 "temperature": 0.3,
35 "maxTokens": 4096,
36 "contextWindow": 16384,
37 "tools": true,
38 "reasoning": false
39 }
40 }
41 }
42 },
43 "model": "openai/gpt-5.1-codexmax",
44 "permissions": {
45 "edit": ["src/**", "tests/**", "docs/**"],
46 "bash": ["npm test", "npm run lint", "npm run build", "git status", "git diff", "git log"]
47 }
48}环境变量一键配置脚本
macOS / Linux:
1#!/bin/bash
2# setup-gpt5-opencode.sh
3
4read -p "请粘贴你的 OpenAI API Key (sk- 或 sk-proj- 开头): " KEY
5if [[ ! "$KEY" =~ ^sk- ]]; then
6 echo "❌ Key 格式不正确,应以 sk- 或 sk-proj- 开头"
7 exit 1
8fi
9
10# 写入 zshrc
11echo "export OPENAI_API_KEY=\"$KEY\"" >> ~/.zshrc
12source ~/.zshrc
13
14# 验证
15if [ -z "$OPENAI_API_KEY" ]; then
16 echo "❌ 环境变量设置失败"
17 exit 1
18fi
19
20echo "✅ OPENAI_API_KEY 已配置"
21echo "✅ 请重启终端后执行 opencode 启动"Windows PowerShell:
1# setup-gpt5-opencode.ps1
2$key = Read-Host "请粘贴你的 OpenAI API Key (sk- 或 sk-proj- 开头)"
3if ($key -notmatch "^sk-") {
4 Write-Host "❌ Key 格式不正确,应以 sk- 或 sk-proj- 开头" -ForegroundColor Red
5 exit 1
6}
7
8[System.Environment]::SetEnvironmentVariable("OPENAI_API_KEY", $key, "User")
9Write-Host "✅ OPENAI_API_KEY 已配置为用户级环境变量" -ForegroundColor Green
10Write-Host "✅ 请重启 PowerShell 后执行 opencode 启动" -ForegroundColor Green自检脚本
启动 OpenCode 前,跑一下这个脚本确认环境就绪:
1#!/bin/bash
2# check-gpt5-opencode.sh
3
4echo "🔍 检查 Node.js..."
5if ! command -v node &> /dev/null; then
6 echo "❌ Node.js 未安装"
7 exit 1
8fi
9NODE_VERSION=$(node -v | sed 's/v//' | cut -d. -f1)
10if [ "$NODE_VERSION" -lt 18 ]; then
11 echo "❌ Node.js 版本过低 (当前: $(node -v), 需要: 18+)"
12 exit 1
13fi
14echo "✅ Node.js $(node -v)"
15
16echo "🔍 检查 OpenCode..."
17if ! command -v opencode &> /dev/null; then
18 echo "❌ OpenCode 未安装,请运行: curl -fsSL https://opencode.ai/install | bash"
19 exit 1
20fi
21echo "✅ OpenCode $(opencode --version)"
22
23echo "🔍 检查 OPENAI_API_KEY..."
24if [ -z "$OPENAI_API_KEY" ]; then
25 echo "❌ OPENAI_API_KEY 环境变量未设置"
26 exit 1
27fi
28if [[ ! "$OPENAI_API_KEY" =~ ^sk- ]]; then
29 echo "⚠️ OPENAI_API_KEY 格式异常,应以 sk- 或 sk-proj- 开头"
30fi
31echo "✅ OPENAI_API_KEY 已设置 (前 8 位: ${OPENAI_API_KEY:0:8}...)"
32
33echo "🔍 检查 config.json..."
34CONFIG_FILE="$HOME/.opencode/config.json"
35if [ ! -f "$CONFIG_FILE" ]; then
36 echo "⚠️ config.json 不存在 ($CONFIG_FILE)"
37 echo " 请先启动一次 opencode 生成默认配置,或参考教程创建"
38else
39 if node -e "JSON.parse(require('fs').readFileSync('$CONFIG_FILE', 'utf8'))" 2>/dev/null; then
40 echo "✅ config.json JSON 格式正确"
41 else
42 echo "❌ config.json JSON 格式错误"
43 exit 1
44 fi
45fi
46
47echo "🔍 测试 OpenAI API 连通性..."
48HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" \
49 -H "Authorization: Bearer $OPENAI_API_KEY" \
50 https://api.openai.com/v1/models)
51
52if [ "$HTTP_CODE" = "200" ]; then
53 echo "✅ OpenAI API 连通正常"
54elif [ "$HTTP_CODE" = "401" ]; then
55 echo "❌ OpenAI API 鉴权失败 (401),请检查 Key"
56 exit 1
57elif [ "$HTTP_CODE" = "000" ]; then
58 echo "⚠️ 无法连接 OpenAI API,可能需要代理"
59 echo " 尝试: export HTTPS_PROXY=http://127.0.0.1:7890"
60else
61 echo "⚠️ OpenAI API 返回 HTTP $HTTP_CODE"
62fi
63
64echo ""
65echo "🎉 自检完成!执行 opencode 启动"附录:进阶实战案例集锦
光说不练假把式。下面是 5 个真实的开发场景,每个都附带完整的 Prompt 模板,可以直接复制使用。
案例 1:把一个回调地狱的代码改写成 async/await
场景:老代码里有一段五层嵌套的回调,看一眼就头疼。CodexMax 的强项。
1请重构 src/legacy/uploadFile.ts 里的 uploadFile 函数:
2
31. 把所有回调改成 async/await
42. 用 Promise.all 并行化可以并行的步骤(比如生成缩略图 + 上水印 + 提取元数据)
53. 失败时给出明确错误,不要吞异常
64. 加上超时控制(单个步骤超过 30 秒就失败)
75. 用 perf_hooks 测量每一步耗时,打印到日志
86. 保持对外接口签名不变
97. 跑 npm test 验证,失败自主修复CodexMax 会读取旧文件、推理依赖关系、输出重构版,并解释每处改动的理由。
案例 2:批量给一个项目里的所有函数加 JSDoc
场景:接手的项目几乎没注释,想批量补一遍 JSDoc。
1扫描 src/ 下所有 .ts 文件,给每个 export 的函数补上 JSDoc 注释:
2
31. 用 /** */ 格式,不要用 //
42. 包含 @param 和 @returns
53. 描述要具体,不要写「该函数返回数据」这种废话
64. 类型如果是 union(如 'create' | 'update' | 'delete'),注释里要列出所有可能值
75. 不要改函数实现,只加注释
86. 处理完后跑 npm run lint 确认没问题
9
10文件较多,请一个一个处理,每处理完一个就告诉我进度警告
⚠️ 重要警告: 让 AI 批量改文件时务必先 git commit 一次作为回滚点。CodexMax 处理多个文件时可能中途出错,留下半改不改的状态。
案例 3:根据一份接口文档生成完整的 TypeScript SDK
场景:你拿到了后端的 OpenAPI 规范文件 openapi.yaml,想生成一个类型安全的 SDK 给前端用。
1读取 openapi.yaml 文件,帮我生成一个 TypeScript SDK,要求:
2
31. 输出到 src/sdk/ 目录
42. 用 axios 做 HTTP 客户端
53. 每个 endpoint 一个方法,方法名按 operationId 生成
64. 请求和响应都用 interface 定义类型
75. 错误统一抛出 ApiError 类,包含 status、message、data
86. 支持拦截器配置(认证 token、日志)
97. 写好完整的使用示例 src/sdk/example.ts
108. 给 SDK 配 Vitest 测试,mock axios 验证调用
119. 生成完跑 npm test 验证CodexMax 会读取 OpenAPI 文件、解析每个 path 和 schema、生成对应的 TypeScript 代码。预期生成的结构:
1src/sdk/
2├── index.ts # 统一导出
3├── client.ts # ApiClient 类
4├── types.ts # 所有 interface
5├── errors.ts # ApiError 类
6├── users.ts # users 相关接口
7├── orders.ts # orders 相关接口
8├── example.ts # 使用示例
9└── tests/
10 ├── client.test.ts
11 └── users.test.ts案例 4:让 CodexMax 帮你写一份单元测试覆盖率报告
场景:你准备给项目加测试,但不知道哪些函数最该优先覆盖。
1扫描 src/ 下所有 .ts 文件,输出一份测试优先级报告:
2
31. 找出所有 export 的函数
42. 按复杂度(圈复杂度)从高到低排序
53. 标注每个函数当前的测试覆盖状态(读 tests/ 目录看是否已有测试)
64. 给出 Top 10 急需补测试的函数列表
75. 对 Top 3 的函数,给出建议的测试用例(输入、预期输出、边界情况)
8
9报告输出到 docs/test-coverage-report.md预期报告格式:
1# 测试覆盖优先级报告
2
3生成时间:2026-09-02
4扫描范围:src/**/*.ts
5
6## 急需补测试的函数 Top 10
7
8| 排名 | 函数 | 文件 | 圈复杂度 | 当前测试 | 优先级 |
9|---|---|---|---|---|---|
10| 1 | processOrder | src/services/processOrder.ts | 18 | ❌ 无 | 🔴 高 |
11| 2 | calculateDiscount | src/services/discount.ts | 12 | ❌ 无 | 🔴 高 |
12| 3 | validateUserInput | src/utils/validator.ts | 10 | ✅ 有但不全 | 🔴 高 |
13| ... | ... | ... | ... | ... | ... |
14
15## Top 3 函数的测试用例建议
16
17### 1. processOrder (src/services/processOrder.ts)
18
19**功能**:处理订单,含金额计算、库存扣减、优惠券应用
20
21**建议测试用例**:
22
23| 用例 ID | 描述 | 输入 | 预期输出 |
24|---|---|---|---|
25| TC001 | 正常下单 | { items: [...], coupon: null } | 订单创建成功 |
26| TC002 | 库存不足 | { items: [超量的商品] } | 抛出 OutOfStockError |
27| TC003 | 优惠券叠加导致负金额 | { items: [...], coupon: 0.9, discount: 50 } | 金额归零,打 warning |
28| TC004 | 空订单 | { items: [] } | 抛出 ValidationError |
29| TC005 | 价格为 0 的商品 | { items: [{ price: 0 }] } | 订单创建成功,金额为 0 |案例 5:从 Git 历史推断某段代码为什么这么写
场景:你看到一段奇怪的代码,注释只写「fix: 临时方案」,不知道为什么这么写。让 CodexMax 考古。
1src/utils/dateFormat.ts 第 142 行的 timezoneOffset 看起来很奇怪,
2请你:
3
41. 用 git log -p src/utils/dateFormat.ts 查这行的修改历史
52. 找到引入这行的 commit,读完整的 commit message 和当时的 diff
63. 看看当时同时改了哪些文件(可能有联动)
74. 推断这段代码是为了解决什么问题
85. 评估这个「临时方案」是否还有必要保留
96. 如果可以重构,给出方案
10
11输出一份「代码考古报告」CodexMax 会调用 run_command 执行多个 git 命令,综合推理出代码的演化历史和原因。
附录:性能基准参考
下面是在一台 M2 MacBook Air、家庭千兆网络(走代理)下的实测数据,供你判断「正常」和「异常」的边界。
单次请求响应时间
| 任务类型 | 输入长度 | 输出长度 | CodexMax (high) | CodexMax (medium) | GPT-5.1-mini |
|---|---|---|---|---|---|
| 简单问答 | 50 tokens | 200 tokens | 2.1s | 1.5s | 0.6s |
| 写一个函数 | 200 tokens | 800 tokens | 5.8s | 3.5s | 1.8s |
| 重构一个 200 行文件 | 5000 tokens | 5000 tokens | 28s | 18s | 12s |
| 读完整代码库并总结 | 50000 tokens | 2000 tokens | 42s | 25s | 18s |
| 单元测试批量生成 | 3000 tokens | 6000 tokens | 22s | 14s | 8s |
| 从零搭 REST API(agentic) | 500 tokens | 30000 tokens | 180s | 120s | - |
信息
判断标准:如果你的响应时间是上表的 2 倍以上,说明有问题,需要排查网络或模型选择。agentic loop 任务耗时较长是正常的,因为它涉及多次工具调用。
单次任务 token 消耗
| 任务 | 平均输入 token | 平均输出 token | reasoning token | 估算费用 (CodexMax) |
|---|---|---|---|---|
| 写一个函数 | 200 | 800 | 0 | $0.013 |
| 修一个 Bug | 1500 | 1200 | 2000 | $0.053 |
| 重构一个 200 行文件 | 5000 | 5000 | 3000 | $0.13 |
| 整文件代码审查 | 8000 | 3000 | 1000 | $0.085 |
| 项目导读 | 50000 | 2000 | 500 | $0.28 |
| 从零搭 REST API | 500 | 30000 | 8000 | $0.53 |
提示
一个月日均写 20 个函数、改 5 个 Bug、重构 1 次大文件的话,月费用大约 $50~$80。如果团队 5 人共用,建议开组织账户统一计费。
附录:常见 Prompt 模板库
把下面这些模板存起来,遇到对应场景直接套用。
模板 1:写新函数
1请帮我写一个 [函数名],要求:
2- 输入:[参数列表,含类型]
3- 输出:[返回值类型]
4- 行为:[功能描述]
5- 边界:[边界情况处理]
6- 错误处理:[异常情况]
7
8写到 [文件路径],用 TypeScript 写,必须有 JSDoc模板 2:修 Bug
1[文件路径] 里有个 bug:
2- 现象:[用户看到的表现]
3- 重现步骤:[怎么触发]
4- 预期行为:[应该是什么样]
5
6请你:
71. 读文件,找到根因(展开推理过程)
82. 给出修复方案(不要立刻改文件,先告诉我思路)
93. 我确认后再改
104. 加单元测试覆盖这个场景
115. 跑 npm test 验证模板 3:重构代码
1请重构 [文件路径] 里的 [函数名]:
2
31. [重构目标,比如:拆成单一职责的小函数]
42. [约束,比如:不改对外接口、保持性能不下降]
53. 重构完跑 [测试命令] 验证
64. 如果测试失败自主修复
7
8请先 git commit 保存当前状态作为回滚点模板 4:代码审查
1请审查 [文件路径] 或 [git diff 范围],重点检查:
2
31. 安全漏洞(SQL 注入、XSS、敏感信息泄露、未授权访问)
42. 性能问题(O(n²) 循环、不必要的内存分配、N+1 查询)
53. 可维护性(命名、嵌套层级、注释完整性)
64. 代码规范(是否符合 ESLint 配置)
75. 测试覆盖(新代码是否有测试)
8
9输出 Markdown 格式报告,按严重程度分级(🔴 严重 / 🟡 警告 / 🔵 建议)模板 5:学习陌生代码
1我刚接手这个项目,请帮我做一份「5 分钟上手指引」:
2
31. 读 package.json,告诉我这是什么类型的项目、用了哪些主要依赖
42. 读 README.md,总结项目定位和核心功能
53. 找到入口文件,梳理启动流程
64. 列出最核心的 5 个文件,每个用一句话说明作用
75. 指出最复杂的部分(通常是测试覆盖最差、改动最频繁的代码)
86. 画模块依赖图(Mermaid 语法)模板 6:写单元测试
1给 [文件路径] 里的 [函数名] 写完整的单元测试,要求:
2
31. 用 [Jest/Vitest]
42. 覆盖所有分支(包括异常路径)
53. 测试边界情况:[空输入、null、超长字符串、并发调用]
64. 用 describe/it 组织结构
75. 测试文件放到 [tests/对应路径]
8
9写完跑一次 npm test 确认全部通过模板 7:文档生成
1扫描 src/ 下所有 export 的函数和类,生成一份 API 文档:
2
31. 输出到 docs/api.md
42. 按模块分组(users / orders / auth 等)
53. 每个函数列出:签名、参数、返回值、示例、注意事项
64. 类型定义用 TypeScript 代码块
75. 文档末尾附目录,方便跳转模板 8:性能优化
1[文件路径] 里的 [函数名] 性能不达标,请你:
2
31. 读取代码,找出性能瓶颈(用 perf_hooks 测量)
42. 列出 3 个优化方向,说明每个能提升多少、有什么代价
53. 我选一个方向后,由你实施优化
64. 优化前后跑 benchmark 对比
75. 不要为了性能牺牲代码可读性,关键优化点加注释说明模板 9:从零搭项目(agentic 大任务)
1帮我从零搭一个 [项目类型] 项目,要求:
2
3[列出全部需求]
4
5请直接创建所有文件到当前目录,
6处理完后跑 npm test 确认测试通过,
7失败则自主修复直到通过。
8最后给我一份「创建清单 + 启动方式」模板 10:代码考古
1[文件路径] 第 [行号] 行的代码看起来很奇怪,请你:
2
31. 用 git log -p 查这行的修改历史
42. 找到引入这行的 commit,读完整的 commit message 和当时的 diff
53. 看看当时同时改了哪些文件(可能有联动)
64. 推断这段代码是为了解决什么问题
75. 评估这个方案是否还有必要保留
86. 如果可以重构,给出方案
9
10输出一份「代码考古报告」附录:常用命令速查表
| 命令 | 作用 |
|---|---|
opencode | 在当前目录启动 OpenCode |
opencode --version | 查看版本 |
opencode --log-level debug | 调试模式启动,输出详细日志 |
opencode run "提示词" | 非交互模式执行一次性任务(CI 友好) |
opencode run "提示词" --model openai/gpt-5.1-codexmax | 指定模型执行 |
/models | 列出 / 切换可用模型 |
/usage | 查看当前会话 token 用量 |
/clear | 清空当前会话历史(释放上下文) |
/exit | 退出 OpenCode |
/help | 查看所有可用命令 |
/file <path> | 把文件加入 AI 上下文 |
/undo | 撤销 AI 最近一次的文件改动 |
/diff | 查看 AI 在本会话里做的所有改动 |
/save <name> | 保存当前会话为快照 |
/load <name> | 加载之前保存的会话快照 |
/permissions | 查看当前权限配置 |
/cost | 查看本次会话累计费用 |
附录:GPT-5.1 各模型能力对比
| 模型 | 代码能力 | 推理能力 | 工具调用 | agentic loop | 上下文窗口 | 推荐场景 |
|---|---|---|---|---|---|---|
gpt-5.1-codexmax | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ✅ | ✅ | 256K | 复杂代码生成、重构、深层 Bug、整项目分析 |
gpt-5.1 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ✅ | ❌ | 128K | 通用任务、写文档、非代码内容 |
gpt-5.1-mini | ⭐⭐⭐ | ⭐⭐⭐ | ✅ | ❌ | 64K | 简单问答、注释生成、轻量补全 |
提示
小白提示: 不确定用哪个?默认用 gpt-5.1-codexmax,遇到简单任务切到 gpt-5.1-mini 省钱。这是 95% 场景下的最优策略。需要写非代码内容(README、产品文案)时切到 gpt-5.1。
附录:CodexMax 独有能力详解
相比普通 GPT-5.1,CodexMax 多了三个独有能力,理解它们能帮你更好地发挥模型潜力。
1. Agentic Loop(自主多步执行)
普通模型:你说一句,它答一句,你得一步步指挥。
CodexMax agentic 模式:你给一个目标,它自主拆解、连续调用工具、自我验证、循环修复,直到任务完成或达到 maxSteps 上限。
典型 agentic 流程:
1用户:从零搭一个 Express 项目
2 ↓
3CodexMax:
4 Step 1: [思考] 需要创建 package.json, tsconfig.json, src/index.ts
5 Step 2: [工具] write_file package.json
6 Step 3: [工具] run_command npm install
7 Step 4: [工具] write_file tsconfig.json
8 Step 5: [工具] write_file src/index.ts
9 Step 6: [工具] run_command npm test
10 Step 7: [思考] 测试失败,缺依赖 express
11 Step 8: [工具] run_command npm install express
12 Step 9: [工具] run_command npm test
13 Step 10: [完成] 测试通过,输出报告何时开 agentic:
- ✅ 从零搭项目、整模块重构、复杂 Bug 修复(涉及多文件)
- ❌ 简单问答、单文件改动、查文档(浪费 step)
2. Reasoning Chain(推理链)
普通模式:直接给答案。
Reasoning 模式:先展示思考过程,再给答案。思考过程是灰色的,类似 Chain-of-Thought 但更结构化。
reasoningEffort 三档:
| 档位 | 推理深度 | token 消耗 | 适用场景 |
|---|---|---|---|
low | 几句话 | 100~500 | 简单任务、改注释、加 JSDoc |
medium | 一两段 | 500~2000 | 日常写代码、改 Bug |
high | 详细分析 | 2000~8000 | 复杂根因分析、架构设计、深层 Bug |
何时开 reasoning:
- ✅ 调试难 Bug、架构设计、复杂重构、安全审查
- ❌ 写注释、改 typo、简单问答(浪费 token)
3. 256K 超长上下文
普通模型:8K~32K 上下文,读不下大文件。
CodexMax:256K 上下文,约 60 万汉字 / 8 万行代码,能一次吞下整个中型项目。
用法:
1{
2 "gpt-5.1-codexmax": {
3 "contextWindow": 262144
4 }
5}然后在 OpenCode 里:
请读取 src/ 下所有 .ts 文件,分析整个项目的架构,找出所有循环依赖
CodexMax 会真的把整个 src/ 吞下去(如果不超过 256K),给出全局分析。
警告
⚠️ 重要警告: 256K 上下文 = 一次请求最多消耗 26 万 token = 单次最多 $1.3。不要随便开 256K,按需调整。
附录:术语表
| 术语 | 含义 |
|---|---|
| API Key | 调用 AI 服务的「通行证」,每个 Key 对应一个账户的计费 |
| Base URL | AI 服务的接口入口地址,OpenAI 是 https://api.openai.com/v1 |
| Provider | OpenCode 里对「AI 服务商」的称呼,OpenAI 就是一个 Provider |
| Model | 具体的大模型,比如 gpt-5.1-codexmax、gpt-5.1、gpt-5.1-mini |
| Token | AI 处理文本的最小单位,1 个英文单词 ≈ 1.3 token,1 个汉字 ≈ 2 token |
| Context Window | 模型一次能处理的「记忆容量」,256K token 约等于 60 万汉字 |
| Temperature | 控制输出随机性,0 = 最严谨,1 = 最发散 |
| Function Calling / Tools | 让 AI 调用外部工具(读文件、跑命令)的能力 |
| Reasoning | 让 AI 先思考再答,类似 Chain-of-Thought |
| reasoningEffort | 推理深度,low / medium / high 三档 |
| Agentic Loop | AI 自主多步执行能力,循环调用工具直到任务完成 |
| maxSteps | agentic loop 的最大步数上限 |
| TUI | Terminal UI,终端图形界面,OpenCode 启动后看到的那个全屏界面 |
| System Prompt | 给 AI 设定的「角色设定」和「行为规范」 |
| Permissions | OpenCode 的权限白名单,限制 AI 能改哪些文件、跑哪些命令 |
| CodexMax | GPT-5.1 的编程专用变体,OpenAI 2026-09-01 发布 |
信息
📅 最后更新:2026-09-02 ✍️ 作者:教程团队 🔗 相关教程:grok-opencode · deepseek-opencode · gemini-opencode
常见问题
QGPT-5.1-CodexMax 和普通 GPT-5 有什么区别?
CodexMax 是 GPT-5.1 的编程专用版本,针对代码生成、调试和多步编程任务做了专项优化。它支持更长的上下文窗口、更精准的代码补全,以及自主执行多步编程流程的能力。
Q使用 GPT-5.1-CodexMax 的费用如何?
CodexMax 按 token 计费,输入和输出分别计价。具体价格请参考 OpenAI 官网定价页面。建议在 OpenCode 中设置 maxTokens 上限来控制单次请求成本。
QOpenCode 和 Codex CLI 有什么区别?
Codex CLI 是 OpenAI 官方的终端编程工具,仅支持 OpenAI 模型;OpenCode 是开源工具,支持多种模型(GPT、Claude、Gemini、Grok 等)自由切换,配置更灵活。两者可以共存使用。