新工具 2026年05月11日

OpenAI 终于把 CLI 做出来了:以后很多 API 活都能直接在终端里跑

by BLL

OpenAI 终于把 CLI 做出来了:以后很多 API 活都能直接在终端里跑

OpenAI 这次发布的 openai-cli,我第一反应不是“又多了一个工具”,而是:

这下很多原来要写一层 SDK、再包一层脚本的活,终于可以直接在终端里做完了。

它的定位很直接:OpenAI 的官方命令行工具。
开源在 GitHub,协议是 Apache 2.0。
安装方式也很朴素,Homebrew 或 Go 都能上手。

对经常和 API、自动化脚本、CI/CD、服务器运维打交道的人来说,这种工具的意义不在“新鲜”,而在“省步骤”。

它到底解决了什么问题

以前很多人调 OpenAI API,典型路径是这样的:

先选 SDK。
再配环境。
再写一段代码。
再封装一下输出。
最后把它塞进 shell、CI、定时任务、运维脚本里。

这条链路没错,但很重。

openai-cli 的思路很简单:
把 OpenAI 的能力直接变成命令行资源。

你不用先写一个完整程序。
你可以先在终端里试,试通了再接入工作流。

这对于下面几类场景特别友好:

  • 快速验证一个模型调用是否正确
  • 在 shell 里拼自动化流程
  • 在 CI 里做文本、图像、音频类任务
  • 给运维或团队管理做批量操作
  • 把一次性的 API 调试,变成可复用命令

换句话说,它把“写代码调 API”这件事,往“直接用命令完成工作”推近了一步。

真正好用的点,不只是“官方出品”

我觉得这个工具最值钱的地方,反而不是“OpenAI 官方”四个字。

而是它把一堆原本分散的能力,收进了一个统一的命令行界面里。

1. 资源化结构很适合人脑记忆

它的命令形式不是那种东一块西一块的拼装风格,而是偏资源化:

openai responses create --input "..." --model <model>

这种结构的好处是,学习成本低。
你理解一次 resource + action + flags,后面很多命令都能顺着推出来。

这比“每个接口都长得不一样”强太多了。

2. 输出格式很适合接管道

CLI 真正的价值,不是“能输出内容”,而是“能输出结构化内容”。

openai-cli 支持多种输出格式,比如:

  • json
  • yaml
  • jsonl
  • pretty
  • raw

这意味着什么?

意味着它天然适合和 grepawksedxargs、CI 工具、任务编排器一起工作。

如果你想把模型输出塞进另一个脚本,最怕的就是格式不稳。
一旦输出稳定了,CLI 就不再只是一个“手工试试”的工具,而是能进入正式流程的零件。

它还内建了类似 GJSON 的字段抽取能力。
这点很实用,因为很多时候你不想整包 JSON 交给 jq 再处理一遍,直接在命令里抽字段就够了。

3. 文件传参更接近 curl 习惯

它支持 @file.ext 这种写法,和 curl 的使用习惯很接近。

对于文件类输入,你还可以更明确地控制编码方式:

  • @file:// 表示按文本处理
  • @data:// 表示按 base64 处理

这对图片、音频、二进制数据特别友好。
以前这些东西你往往要先写读取逻辑,现在直接交给命令行参数就行。

4. 不只跑模型,还能做管理类操作

这个点很容易被忽略。

openai-cli 不只是给你一个“发请求”的壳,它还把一些管理类操作整合进来了,比如 project、API key、组织使用情况等。

这意味着它不只是开发者玩具,还是运维和团队管理的工具。

如果你做的是团队级工作流,这种统一入口会省掉很多切换上下文的成本。

5. 图像、语音、转写这类事终于能像命令一样调用

这类能力原本很多人都习惯写 Python 脚本去调 SDK。
现在如果 CLI 把这些能力都包起来,就很适合做:

  • 自动生成素材
  • 批量转写
  • 语音合成
  • 图像生成或编辑
  • 轻量级内容流水线

这也是我觉得它最“适合 Agent 使用”的地方。

因为 Agent 最喜欢的不是“人类友好的 UI”,而是“机器友好的接口”。

怎么安装

官方 README 里给了两种主流方式。

Homebrew

brew install openai/tools/openai

Go

如果你想直接用 Go 安装:

go install 'github.com/openai/openai-cli/cmd/openai@latest'

官方 README 里说明了,Go 版本需要 1.25 或更高。
装完以后,二进制一般会在你的 Go bin 目录里。

如果命令找不到,通常补一下 PATH 就行:

export PATH="$PATH:$(go env GOPATH)/bin"

如果你是仓库本地开发,也可以用项目里的脚本直接跑:

./scripts/run args...

怎么用

最基础的用法,就是先配 API key,再发一个 responses create

export OPENAI_API_KEY="sk-..."
openai responses create \
  --input "Say this is a test" \
  --model gpt-5.5

这条命令的思路非常清楚:

  • responses create 是创建一次 Responses 调用
  • --input 是输入内容
  • --model 指定模型

你如果习惯传统 SDK,那会觉得它少了很多“铺垫动作”。
但恰恰是这些铺垫动作,常常让原本很简单的事变复杂。

管理类命令

如果你有 admin 权限,还可以走管理端命令。

export OPENAI_ADMIN_KEY="sk-admin-..."
openai admin:organization:usage completions \
  --start-time 1735689600 \
  --end-time 1735776000 \
  --bucket-width 1d

这类命令对平台管理员、财务、运维、内部工具团队会更有价值。
至少它把“查用量”这种事,从网页后台,变成了可以脚本化的命令。

输出格式与字段抽取

如果你想把结果接进别的工具,建议一开始就定好格式。

openai responses create \
  --input "Hello" \
  --model gpt-5.5 \
  --format json

如果你只想拿某个字段,可以配合 --transform,用 GJSON 表达式直接把关心的数据抽出来。

你会发现,这比“先输出一大坨,再手动找字段”顺手得多。

为什么我觉得它很适合 Agent 工作流

Agent 工作流最怕两件事:

第一,接口多但风格不统一。
第二,结果能看但不好接。

openai-cli 这次正好卡在中间:

  • 一边是 OpenAI 的官方能力
  • 一边是 shell 世界最熟悉的资源化、结构化、可管道化

这意味着你可以把它塞进很多现有流程里,而不必重写整套系统。

比如:

  • 先用 CLI 生成摘要,再交给别的脚本做筛选
  • 先跑一次模型调用,再把 JSON 串给 CI 检查
  • 先生成图片,再接后续的素材处理流水线
  • 先转写音频,再做内容发布前的清洗

这类东西看起来都不“宏大”,但它们最能落地。

因为真正有价值的工具,不是让你多学一套新系统,
而是让你少写很多本来没必要写的胶水代码。

什么时候你会明显感觉它好用

如果你符合下面任意一种情况,大概率会很快感受到它的价值:

  • 你经常手动调 OpenAI API
  • 你经常写 shell / Python 脚本做自动化
  • 你在做 CI/CD 或服务器端任务编排
  • 你需要图像、语音、转写、文本处理混合工作流
  • 你想让 Agent 直接接入终端工具链

反过来,如果你只是偶尔在网页里玩一玩模型,那它的吸引力就没那么强。

因为它解决的不是“会不会用 OpenAI”,而是“怎么把 OpenAI 变成工作流的一部分”。

我的结论

我对这类工具的判断一直很简单:

如果一个 API 工具能让人少写一层脚本,少切一次上下文,少复制一遍输出,那它就是有价值的。

openai-cli 就是这种工具。

它不花哨,但方向很对。
它把 OpenAI 的能力,从“开发者调用接口”推进到“终端里直接干活”。

这一步看着不大,实际上会影响很多人的日常工作方式。

尤其是那些已经在 shell、CI、自动化脚本和 Agent 流程里的人。

如果你平时就爱把工具链串起来,这个库值得第一时间试一下。


官方仓库:https://github.com/openai/openai-cli