OpenAI CLI 是一款由 OpenAI 于 2026 年 5 月推出的官方命令行工具,主要用于把 Responses、Files、Batches 等接口能力转成终端里可组合的命令行操作,支持按资源分层的子命令与管道友好的结构化输出,适用于接口联调、批量任务处理与脚本集成等场景。
| 基础信息 | 内容 |
|---|---|
| 产品定位 | OpenAI REST 接口的官方命令行客户端 |
| 出品方 | OpenAI |
| 发布时间 | 2026 年 5 月 1 日 |
| 开源协议 | Apache-2.0 |
| 实现语言 | Go;仅源码构建需 Go 1.26 或以上 |
| 命令结构 | openai <resource> <command> [flags],兼容旧写法 |
| 输出格式 | 默认可读文本,可切 json、jsonl、yaml 与 raw |
| 分发方式 | 预编译二进制、Homebrew、go install 三种 |

OpenAI CLI 的核心能力
OpenAI CLI 的设计思路是把 REST 接口原样搬到终端:接口有什么资源,命令就有什么层级。它不替用户封装业务逻辑,只负责把请求发出去、把结果按需要的形式吐出来。
命令层级与接口资源对齐
命令写作 openai <resource> [subresource…] <command> [flags…],资源层级和 REST 的路径一一对应,看文档即可推命令。老式冒号写法如 openai admin:organization:usage completions 仍然可用,旧脚本不必改写。 CLI 不做编排:需要常驻终端的编码智能体,是站内 Command Code 覆盖的那类需求。
给人看的默认值,给机器看的开关
成功的 JSON 响应默认渲染成可读文本,即便输出接进管道也不改这个默认——这点和很多 CLI 不同,避免了「终端里看着舒服、脚本里解析报错」的两难。需要解析时显式加 --format json 或 jsonl。
文件参数的两套写法
二进制上传直接给路径,不做任何猜测;JSON 输入类参数可以用 @path 从本地文件读值。两种写法分开,是为了让「上传一个文件」和「把文件内容当参数」在语义上不混淆。 它本身不带技能或插件体系,想做这类扩展要走站内 Skill Zoo 那一路。
调试信息按需分级
--debug 打印每次重试尝试的 HTTP 耗时,--debug-body 追加脱敏后的 JSON 预览,--debug-sse 与 --debug-event-timing 针对流式响应给出有边界的诊断。分级的意义是排障时不必一次暴露全部请求内容。
自带更新与关闭开关
自动更新行为取决于安装方式:通过官方安装程序配置的受管理版本,可在符合条件的交互式运行里自动更新;go install 与部分系统包仍采用更新提示,Homebrew 与 Linux 系统包则可通过官方辅助程序启用独立的自动更新副本。固定版本的生产环境可用两个开关分别控制:OPENAI_CLI_NO_AUTO_UPDATE 只停自动安装并保留提示,OPENAI_CLI_NO_UPDATE_CHECK 连检查一起停。
OpenAI CLI 与同类终端工具的对比
下表按定位、主要任务、命令结构、计费方式等维度,把 OpenAI CLI 与另外两个同样跑在终端里的工具放在一起对照。
| 对比维度 | OpenAI CLI | Codex CLI | Gemini CLI |
|---|---|---|---|
| 定位 | 官方 REST 接口的命令行客户端 | 终端内运行的轻量编码智能体 | 把 Gemini 接进终端的开源智能体 |
| 出品方 | OpenAI | OpenAI | |
| 主要任务 | 调某个具体接口,或把接口操作写进脚本 | 读写代码、跑命令、实现或调试一处改动 | 在终端里完成由 Gemini 驱动的任务 |
| 命令结构 | 按 REST 资源分层,资源即命令 | 以智能体任务为核心,支持交互与非交互 | 支持交互会话,也提供非交互执行 |
| 输出格式 | 可读文本,或 json、jsonl、yaml、raw | 以对话与改动结果为主 | 以对话与工具调用为主 |
| 安装方式 | 预编译二进制、Homebrew、go install | 以其官方文档为准 | 以其官方文档为准 |
| 计费方式 | 随 API 用量结算 | 随所用模型与账号套餐 | 随所用账号与配额 |
- 表格内数据来源:OpenAI CLI 取官方仓库 README 与 LICENSE;Codex CLI 取 openai/codex 仓库自述与 Apache-2.0 标注;Gemini CLI 取 google-gemini/gemini-cli 仓库自述与 Apache-2.0 标注。安装方式与配额细节未逐项实测,标为以其官方文档为准。三者均以 Apache-2.0 发布,协议一致故不单列成行。
- 产品对比简述:OpenAI CLI 在定位上是接口客户端,Codex CLI 在定位上是终端智能体、在命令结构上以任务为核心兼有非交互执行;Gemini CLI 在命令结构上同样支持交互与非交互模式。
同样在终端里跑,站内的 cmux 解决的是另一个问题:多个会话并行时怎么不打架。
OpenAI CLI 的应用场景与适用人群
凡是「要把一次接口调用变成一行命令」的场合,它都比写临时脚本省事:
- 日志排查:把错误日志整理成模型输入,经 Responses API 归类后再把结构化结果重定向到文件,适合临时排查与批量处理。
- 批处理任务:提交 JSONL 请求文件后等批次结束,再把结果目录拉回本地。
- 素材生产:批量出图或转写语音,产物按目录落盘,路径直接打印出来。
- 接口联调:换模型、换参数只改命令行开关,不必重新打包一个测试程序。
- 定时任务:单二进制放进容器或 crontab,不依赖 Python 或 Node 运行时。
适用人群:适合已经把运维或数据处理放在终端里的工程与数据岗,也适合需要给内部平台补一层脚本化入口的后端团队;全部操作都走图形界面的人用不上它。图像生成这类具体能力可对照站内 Qwen-Image-2.1 看模型侧的做法。
OpenAI CLI 的使用方法
只有终端这一扇门,所以下面是一条连续流程,从装到用再到排错。
- 安装:从 GitHub Releases 取对应系统的压缩包解压后放进 PATH,或先跑
brew update再执行brew install --cask openai/tools/openai,并按官方说明启用自动更新;或go install自行编译。 - 认证:跑 openai help setup 按向导录入密钥;写给脚本用的版本则通过环境变量 OPENAI_API_KEY 传入,管理端接口另用 OPENAI_ADMIN_KEY。
- 试通一次:执行 openai responses create
--modelgpt-5.5--input“Say this is a test”,确认返回正常再往下走。 - 接进脚本:需要解析就加
--formatjsonl,需要抽字段就加--transform配--raw-output,例如 openai models list--formatjsonl | jq ‘.id’。 - 处理文件与批次:用 openai files upload 上传,用 openai batches create 提交并用 openai batches wait 等待结果落盘。
- 排错:先看退出码,再看 stderr 摘要;要明细就加
--format-errorjson,要看耗时加--debug。
三点提醒:默认输出是给人读的,脚本里务必显式指定 --format,否则格式一变解析就断;从不可信来源接收 JSON 或 YAML 时先设 OPENAI_UNTRUSTED_STDIN=1,避免输入触发本地文件读取;固定版本的生产环境建议关掉更新检查,别让自动更新在无人值守时改掉行为。
OpenAI CLI 的项目地址
- GitHub 仓库:https://github.com/openai/openai-cli
- 官方 API 文档:https://platform.openai.com/docs
OpenAI CLI 的价格方案
工具本体以 Apache-2.0 发布,安装与运行都不产生费用,成本全部落在被调用的接口上:按所选模型的输入输出 token 结算,具体单价随官方定价页调整,本文不列单价以免过期。
不同任务采用不同计费口径:文本模型通常按输入与输出 Token 计费;图像模型按具体模型、输入输出内容与生成规格计算;语音任务则依模型与接口采用 Token 或音频时长等方式。批处理 API 另有独立价格优惠,通常低于同步调用,但并非所有模型都支持。做预算时要按任务类型分别估,实际成本以对应模型的官方定价说明为准。
省钱的着力点在调用结构上,不在命令本身。批量任务走批次通道、能用小模型的环节不要上大模型、失败重试加退避避免重复计费,这三件事对账单的影响远大于任何命令行技巧。站内对 API 定价结构 的拆解可以作为对照口径。
先用小样本做一轮,量出单次任务的 token 消耗,再乘业务量做预算——这比凭经验拍一个数更可靠,也便于在模型换代时快速重算。
用量大的团队可以顺手用 openai admin organization usage 拉出组织级用量,按天看趋势,比自己记流水账准。
OpenAI CLI 的常见问题
它和 Codex CLI 有什么区别
分工按官方说明:openai 用来调用某个具体 API,或者把接口操作放进脚本;codex 用来让编码智能体在项目里干活,读写代码、跑命令、实现或调试改动。要脚本化选前者,要改代码选后者。两者装在同一台机器上不冲突,命令名不同,认证各走各的。
必须装 Go 才能用吗
不必须。官方为 macOS、Linux、Windows 提供预编译二进制,解压放进 PATH 即可;Homebrew 也能直接装。只有选择 go install 从源码构建时才需要 Go 1.26 或以上,这是当前仓库源码构建要求,不是运行预编译二进制的最低环境。更新行为也按安装方式区分:官方受管理版本可自动更新,go install 与便携式包保留更新提示。
默认输出为什么在管道里还是文本
这是官方有意为之:默认给人读,管道里也不偷偷换成机器格式,避免同一行命令在终端和脚本里得到两种结果。需要解析就显式加 --format json 或 jsonl。忘记加参数时最典型的表现是 jq 报解析错误,而不是命令本身失败——命令成功但输出格式不对,退出码仍然可能是 0。
密钥怎么放才安全
脚本里用环境变量或密钥管理服务注入 OPENAI_API_KEY,不要写死在命令里,命令会进 shell 历史。管理端接口用的是另一个键 OPENAI_ADMIN_KEY,权限更高,不要和普通调用混用。在共享机器上,--debug-body 与错误明细都可能带出敏感内容,外发前先脱敏。
能替代 SDK 吗
定位不同。SDK 给的是编程语言里的类型与方法,适合嵌进应用逻辑;CLI 给的是命令与退出码,适合脚本、流水线与人手排障。应用里做集成仍然应该用 SDK;反过来说,一次性查数据、跑批、验证参数这类事,起一个 CLI 比写一段 SDK 代码快得多。
浙公网安备33010202004812号