🌱入门OpenCode接入GPT-5.1-CodexMax

OpenCode 接入 GPT-5.1-CodexMax 完整指南

手把手教你将 OpenAI 最新编程模型 GPT-5.1-CodexMax 接入 OpenCode 终端工具,通过双路径(应用端交互+配置文件手动)快速实现 AI 辅助编程

教程团队
2026-09-02
1 个步骤

前置条件

  • 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,它在三个方面做了专项强化:

  1. 更长的上下文窗口:原生支持 256K token(约 60 万汉字),可以一次性吞下整个中型项目的代码
  2. 更精准的代码补全:在 HumanEval+、MBPP+、SWE-Bench-Verified 等编程基准上刷新 SOTA,函数级生成准确率超过 95%
  3. 自主多步执行:原生支持 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。打开终端执行:

bash
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:

powershell
1# 安装 nvm 后执行
2nvm install 20
3nvm use 20
4node -v

macOS / Linux 用户推荐用 nvm:

bash
1curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
2# 重开终端后执行
3nvm install 20
4nvm use 20

2. npm 已就绪

npm 是 Node.js 的包管理器,装 Node.js 时会一起装好。验证一下:

bash
1npm -v

预期输出形如 10.2.4。只要数字 ≥ 9 就能用 OpenCode。

3. 已注册 OpenAI 账号并获取 API Key

GPT-5.1-CodexMax 是 OpenAI 旗下模型,需要 OpenAI 平台的 API Key 才能调用。如果你还没拿到,请按下面步骤领取:

  1. 浏览器访问 OpenAI 开发者控制台:https://platform.openai.com
  2. 用邮箱注册 / 登录(新账号需手机号验证)
  3. 第一次进入会让你同意服务条款,点同意即可
  4. 在左侧导航点击 「API Keys」
  5. 点击 「Create new secret key」 按钮
  6. 给 Key 起个名字(例如 opencode-codexmax-prod),选择对应组织/项目,点击创建
  7. 立即复制弹出的 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 通用)

bash
1curl -fsSL https://opencode.ai/install | bash

提示

小白提示: 这行命令的意思是「从 opencode.ai 官网下载安装脚本,并用 bash 执行它」。期间屏幕会滚动一些下载进度文字,那是正常现象,等它停下来、再次出现命令提示符($ 或 >)就装好了。

Windows PowerShell 用户如果 curl 不可用,可以直接用官方提供的 PowerShell 版本:

powershell
1irm https://opencode.ai/install.ps1 | iex

方式 2:npm 全局安装(Node.js 用户备选)

如果你已经熟悉 npm,也可以用:

bash
1npm install -g opencode

方式 3:Homebrew(macOS 用户备选)

bash
1brew install opencode

验证版本(关键)

装完后验证一下版本:

bash
1opencode --version

预期输出形如 opencode version 0.18.2。版本号必须 ≥ 0.18.0 才能完整支持 GPT-5.1-CodexMax 的全部能力(256K 上下文、agentic loop、reasoning 链)。

如果版本低于 0.18.0,升级:

bash
1# 一键脚本用户
2curl -fsSL https://opencode.ai/install | bash
3
4# npm 用户
5npm update -g opencode
6
7# Homebrew 用户
8brew upgrade opencode

启动 OpenCode

在任意你想要做开发工作的项目目录下执行:

bash
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),重新跑一次安装命令覆盖更新,然后再启动:

bash
1# 退出后执行
2curl -fsSL https://opencode.ai/install | bash
3# 再启动
4opencode

OpenAI 是 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 UnauthorizedKey 错误或已失效回 OpenAI 平台重新生成 Key,重新粘贴
404 Not FoundBase 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
WindowsC:\Users\<你的用户名>\.opencode\config.json

如果该目录不存在,说明你还没启动过 OpenCode。先随便启动一次让它生成默认结构:

bash
1opencode
2# 启动后按 Ctrl+C 退出

然后再查看目录:

bash
1# macOS / Linux
2ls -la ~/.opencode/
3
4# Windows PowerShell
5ls $env:USERPROFILE\.opencode\

预期看到:

text
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、记事本都行):

bash
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 里:

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 / highhigh(复杂任务用)
agentic是否启用自主多步执行true(CodexMax 核心能力)
maxStepsagentic 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):

bash
1echo 'export OPENAI_API_KEY="sk-proj-你的真实Key"' >> ~/.zshrc
2source ~/.zshrc

Windows PowerShell(用户级环境变量,永久生效):

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 配置里显式指定:

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": "GPT-5.1 CodexMax"
13        }
14      }
15    }
16  }
17}

提示

小白提示: "apiKey": { "env": "OPENAI_API_KEY" } 这行的意思是「请去读环境变量 OPENAI_API_KEY 的值作为 Key」。这样你的 config.json 可以放心提交到 Git,因为里面只有变量名、没有真实 Key。

4.3 验证环境变量已生效

bash
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 启动失败。用下面命令验证:

bash
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 并验证

bash
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 输入框里输入:

text
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:

  1. 调用 write_file 工具创建 package.json、tsconfig.json
  2. 调用 run_command 工具执行 npm install
  3. 创建 Prisma schema 并执行 npx prisma migrate dev
  4. 一个一个创建路由、中间件、service 文件
  5. 创建测试文件
  6. 执行 npm test,如果有失败自主修复后重跑
  7. 最后给你一份「创建清单 + 启动方式」

预期生成的目录结构:

text
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 内容大致如下:

typescript
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 帮你拆解。

text
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:

  1. read_file 读取整个文件
  2. 推理阶段(reasoning chain):分析函数职责、依赖关系、潜在风险
  3. 输出重构方案(流式展示,可中途按 Esc 取消)
  4. write_file 写入重构后的代码
  5. 调用 run_command 工具执行 npm test
  6. 如果测试失败 → read_file 看错误 → 修复 → 重跑,最多循环 maxSteps 次
  7. 输出重构报告

预期重构后的代码结构(示意):

typescript
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 能力特别适合这种「根因分析」。

text
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),可能输出类似:

text
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 的触发判断改为基于「已优惠后金额」

然后给出修复代码:

typescript
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}

并配套测试:

typescript
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 上下文能一次吞下相当一部分代码。

text
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.md

CodexMax 会自动多次调用 read_file、run_command 工具,串联起整个调查链:

  1. 读 package.json → 提取依赖
  2. 读 README.md → 提取项目定位
  3. run_command 执行 git log --oneline -50 → 找出最频繁改动的文件
  4. run_command 执行 find src -name "*.ts" | head -100 → 列出源码结构
  5. 读关键入口文件 → 梳理调用链
  6. 综合分析 → 输出报告

预期报告大致如下:

markdown
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

  1. src/order/order.service.ts — 订单核心业务逻辑
  2. src/payment/payment.service.ts — 支付编排
  3. src/infrastructure/rabbitmq/consumer.ts — MQ 消费者
  4. src/common/decorators/idempotent.ts — 幂等装饰器
  5. src/infrastructure/db/typeorm.config.ts — 数据库配置

最复杂的部分

  • src/order/order.service.ts(1800 行,单文件最大,圈复杂度 47)
  • 测试覆盖率仅 23%,建议优先补测试

潜在问题

  1. 🔴 src/payment/payment.service.ts:142 — amount 未做非负校验,可能传入负数
  2. 🟡 src/infrastructure/rabbitmq/consumer.ts:78 — 消费失败无重试上限,可能死循环
  3. 🟡 src/order/order.service.ts:956 — 用 setTimeout 做超时控制,不可靠
text
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.950.90.91.0
maxTokens单次最大输出长度163848192163844096
frequencyPenalty抑制重复词00.300
presencePenalty抑制重复话题00.200
reasoningEffort推理深度mediumlowhighmedium
maxStepsagentic loop 最大步数30105020

提示

小白提示: 写代码时把 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 里改成完整大小:

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 里同时配多个模型,按需切换:

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:

json
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,覆盖全局配置:

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 只能读写特定目录,防止误删系统文件、误跑危险命令:

json
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 调整:

json
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. 启用流式日志(调试网络问题时用)

如果遇到响应慢、间歇性失败,开启日志看详细请求过程:

bash
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 改成代理地址即可:

json
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 走代理:

bash
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 订阅(国内可正常访问),配置稍有不同:

json
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 是否可达:

bash
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.0OpenCode 太旧,不支持 CodexMax 全部能力重新跑安装脚本或 npm update -g opencode 升级
/models 列表里看不到 OpenAI配置文件没加载 / JSON 语法错误用 node -e "JSON.parse(...)" 验证 JSON;确认文件路径正确
/models 显示 OpenAI 但列表里没有 gpt-5.1-codexmaxOpenCode 版本太旧,未收录该模型 ID升级 OpenCode 到 ≥ 0.18.0;或手填模型 ID(方式 B)
选中 gpt-5.1-codexmax 但对话报 model not found账户未获得该模型访问权限检查 OpenAI 账户是否在 CodexMax 灰度名单内;联系 OpenAI 支持
对话报 401 UnauthorizedAPI Key 错 / 失效 / 没设环境变量重新生成 Key;echo $OPENAI_API_KEY 检查环境变量
对话报 403 Forbidden账户未充值 / 被风控 / 国家地区不支持登录 platform.openai.com 充值或检查账户状态、地区
对话报 404 Not FoundbaseURL 缺 /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 tokensreasoning 部分按输出价计编程旗舰,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 个技巧

  1. 小改动用 gpt-5.1-mini:简单问答、注释生成、单行补全完全够用,便宜 10 倍
  2. 合理设 maxTokens:不要无脑设 32K,按实际需要设(写函数 4K、重构 16K),能省不少
  3. 及时 /clear:OpenCode 会累积会话历史,每次请求都会把全部历史发给模型。任务完成后立即 /clear 清空,避免无谓的 token 消耗
  4. 大文件用 read_file 工具而非粘贴:粘贴到输入框的内容会计入输入 token;用工具读取走的是文件路径,相对便宜
  5. 按需调 reasoningEffort:high 模式 reasoning 链可能 5000+ token,简单任务用 low 或 medium
  6. 按需调 contextWindow:日常 32K 够用,只有大任务才开 256K
  7. 关掉不必要的 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,把可能含敏感信息的文件排除:

gitignore
1# .gitignore
2.opencode/auth.json
3.opencode/sessions/
4.opencode.log
5*.env
6.env.local

config.json 如果只引用环境变量、不含真实 Key,可以放心提交。

3. 用 permissions 限制 CodexMax 能做的事

json
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 模板提交到项目仓库

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,告诉新人怎么配

新成员入职只需:

bash
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
10opencode

3. 给每个成员独立的 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

yaml
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 示例

yaml
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 的全部要点。回顾一下:

你学到了什么

  1. OpenCode 是什么:一个开源的终端 AI 编程工具,可以通过 OpenAI 兼容协议接入任意大模型
  2. GPT-5.1-CodexMax 是什么:OpenAI 在 2026-09-01 发布的编程专用旗舰模型,支持 256K 上下文、agentic loop、深度推理
  3. 两种接入方式:
    • 方式 A(应用端交互):用 /models 命令在 TUI 里点点选选,适合新手
    • 方式 B(配置文件手动):直接编辑 ~/.opencode/config.json,适合进阶用户和团队部署,能解锁全部高级参数
  4. 验证配置的 5 个自检:模型列表、对话、工具调用、上下文、流式输出
  5. 实战用法:从零写 REST API、重构祖传代码、定位隐藏 Bug、读懂陌生代码库
  6. 高级配置:参数调优、上下文窗口、多模型切换、system prompt、项目级覆盖、permissions 权限管理、agentic loop 调优
  7. 网络问题排查:代理方案、Azure OpenAI、连通性测试
  8. 故障排查:20 行速查表覆盖所有常见问题
  9. 费用管理:定价参考、7 个省钱技巧、月度成本估算
  10. 安全最佳实践:环境变量隔离、permissions 白名单、Key 轮换、敏感数据脱敏、Code Review
  11. 团队协作与 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 环境变量就能跑:

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        "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:

bash
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:

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 前,跑一下这个脚本确认环境就绪:

bash
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 的强项。

text
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。

text
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 给前端用。

text
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 代码。预期生成的结构:

text
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 帮你写一份单元测试覆盖率报告

场景:你准备给项目加测试,但不知道哪些函数最该优先覆盖。

text
1扫描 src/ 下所有 .ts 文件,输出一份测试优先级报告:
2
31. 找出所有 export 的函数
42. 按复杂度(圈复杂度)从高到低排序
53. 标注每个函数当前的测试覆盖状态(读 tests/ 目录看是否已有测试)
64. 给出 Top 10 急需补测试的函数列表
75. 对 Top 3 的函数,给出建议的测试用例(输入、预期输出、边界情况)
8
9报告输出到 docs/test-coverage-report.md

预期报告格式:

markdown
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 考古。

text
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 tokens200 tokens2.1s1.5s0.6s
写一个函数200 tokens800 tokens5.8s3.5s1.8s
重构一个 200 行文件5000 tokens5000 tokens28s18s12s
读完整代码库并总结50000 tokens2000 tokens42s25s18s
单元测试批量生成3000 tokens6000 tokens22s14s8s
从零搭 REST API(agentic)500 tokens30000 tokens180s120s-

信息

判断标准:如果你的响应时间是上表的 2 倍以上,说明有问题,需要排查网络或模型选择。agentic loop 任务耗时较长是正常的,因为它涉及多次工具调用。

单次任务 token 消耗

任务平均输入 token平均输出 tokenreasoning token估算费用 (CodexMax)
写一个函数2008000$0.013
修一个 Bug150012002000$0.053
重构一个 200 行文件500050003000$0.13
整文件代码审查800030001000$0.085
项目导读500002000500$0.28
从零搭 REST API500300008000$0.53

提示

一个月日均写 20 个函数、改 5 个 Bug、重构 1 次大文件的话,月费用大约 $50~$80。如果团队 5 人共用,建议开组织账户统一计费。


附录:常见 Prompt 模板库

把下面这些模板存起来,遇到对应场景直接套用。

模板 1:写新函数

text
1请帮我写一个 [函数名],要求:
2- 输入:[参数列表,含类型]
3- 输出:[返回值类型]
4- 行为:[功能描述]
5- 边界:[边界情况处理]
6- 错误处理:[异常情况]
7
8写到 [文件路径],用 TypeScript 写,必须有 JSDoc

模板 2:修 Bug

text
1[文件路径] 里有个 bug:
2- 现象:[用户看到的表现]
3- 重现步骤:[怎么触发]
4- 预期行为:[应该是什么样]
5
6请你:
71. 读文件,找到根因(展开推理过程)
82. 给出修复方案(不要立刻改文件,先告诉我思路)
93. 我确认后再改
104. 加单元测试覆盖这个场景
115. 跑 npm test 验证

模板 3:重构代码

text
1请重构 [文件路径] 里的 [函数名]:
2
31. [重构目标,比如:拆成单一职责的小函数]
42. [约束,比如:不改对外接口、保持性能不下降]
53. 重构完跑 [测试命令] 验证
64. 如果测试失败自主修复
7
8请先 git commit 保存当前状态作为回滚点

模板 4:代码审查

text
1请审查 [文件路径] 或 [git diff 范围],重点检查:
2
31. 安全漏洞(SQL 注入、XSS、敏感信息泄露、未授权访问)
42. 性能问题(O(n²) 循环、不必要的内存分配、N+1 查询)
53. 可维护性(命名、嵌套层级、注释完整性)
64. 代码规范(是否符合 ESLint 配置)
75. 测试覆盖(新代码是否有测试)
8
9输出 Markdown 格式报告,按严重程度分级(🔴 严重 / 🟡 警告 / 🔵 建议)

模板 5:学习陌生代码

text
1我刚接手这个项目,请帮我做一份「5 分钟上手指引」:
2
31. 读 package.json,告诉我这是什么类型的项目、用了哪些主要依赖
42. 读 README.md,总结项目定位和核心功能
53. 找到入口文件,梳理启动流程
64. 列出最核心的 5 个文件,每个用一句话说明作用
75. 指出最复杂的部分(通常是测试覆盖最差、改动最频繁的代码)
86. 画模块依赖图(Mermaid 语法)

模板 6:写单元测试

text
1给 [文件路径] 里的 [函数名] 写完整的单元测试,要求:
2
31. 用 [Jest/Vitest]
42. 覆盖所有分支(包括异常路径)
53. 测试边界情况:[空输入、null、超长字符串、并发调用]
64. 用 describe/it 组织结构
75. 测试文件放到 [tests/对应路径]
8
9写完跑一次 npm test 确认全部通过

模板 7:文档生成

text
1扫描 src/ 下所有 export 的函数和类,生成一份 API 文档:
2
31. 输出到 docs/api.md
42. 按模块分组(users / orders / auth 等)
53. 每个函数列出:签名、参数、返回值、示例、注意事项
64. 类型定义用 TypeScript 代码块
75. 文档末尾附目录,方便跳转

模板 8:性能优化

text
1[文件路径] 里的 [函数名] 性能不达标,请你:
2
31. 读取代码,找出性能瓶颈(用 perf_hooks 测量)
42. 列出 3 个优化方向,说明每个能提升多少、有什么代价
53. 我选一个方向后,由你实施优化
64. 优化前后跑 benchmark 对比
75. 不要为了性能牺牲代码可读性,关键优化点加注释说明

模板 9:从零搭项目(agentic 大任务)

text
1帮我从零搭一个 [项目类型] 项目,要求:
2
3[列出全部需求]
4
5请直接创建所有文件到当前目录,
6处理完后跑 npm test 确认测试通过,
7失败则自主修复直到通过。
8最后给我一份「创建清单 + 启动方式」

模板 10:代码考古

text
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 流程:

text
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 万行代码,能一次吞下整个中型项目。

用法:

json
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 URLAI 服务的接口入口地址,OpenAI 是 https://api.openai.com/v1
ProviderOpenCode 里对「AI 服务商」的称呼,OpenAI 就是一个 Provider
Model具体的大模型,比如 gpt-5.1-codexmax、gpt-5.1、gpt-5.1-mini
TokenAI 处理文本的最小单位,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 LoopAI 自主多步执行能力,循环调用工具直到任务完成
maxStepsagentic loop 的最大步数上限
TUITerminal UI,终端图形界面,OpenCode 启动后看到的那个全屏界面
System Prompt给 AI 设定的「角色设定」和「行为规范」
PermissionsOpenCode 的权限白名单,限制 AI 能改哪些文件、跑哪些命令
CodexMaxGPT-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 等)自由切换,配置更灵活。两者可以共存使用。

阿里云推广

读完想动手?新用户首单 8 折上云

服务器 + 大模型 API + 对象存储,新用户首购享 20% 补贴

首单 8 折云服务器大模型 API对象存储

新用户首购享 20% 补贴(8 折)· 本次推广支持本站持续运营

腾讯云推广

腾讯智能体开发平台 ADP

新客首月专属价,最高直降 880 元,构建/分发/治理企业级 Agent

智能体Agent首月直降 880一站式

腾讯云新用户专享 · 本次推广支持本站持续运营

订阅每日 AI 日报

每天早上 8:00(GMT+8)把当天 AI 行业要闻投递到你的邮箱,随时一键退订。

每天早上 8:00(GMT+8)投递当天日报;若当天日报未生成则不发送,也不会补发往期。

更多订阅方式(RSS / 微信推送)仅发送日报,不做任何其他用途

好物推荐 · 广告合作