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 支持多种输出格式,比如:
jsonyamljsonlprettyraw
这意味着什么?
意味着它天然适合和 grep、awk、sed、xargs、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 流程里的人。
如果你平时就爱把工具链串起来,这个库值得第一时间试一下。