首页 / 正文

openai-cli 上手:在终端里直接调 OpenAI API,把 Agent 工作流塞进你的脚本和 CI

Mooko
发布于 2026-05-11 · 5分钟阅读
447 浏览
0 点赞 暴击点赞!

openai-cli 上手:终端里直接调 OpenAI API(不写 SDK 也能跑 Agent)

你有没有这种时刻:

  • 就想在服务器上临时跑一次模型调用,还得开个 Python/Node 项目。
  • CI 里要用到 LLM,结果一堆依赖装来装去,缓存还老失效。
  • 纯命令行党更惨:不是手写 curl,就是自己写一堆脚本拼参数。

现在 OpenAI 官方出了 openai-cli(开源仓库:openai/openai-cli),方向很直接:把 SDK 的能力搬进 shell。你在终端打一行命令,就能调用 Responses API,还能用 OpenAI 托管工具(web 搜索、代码解释器、文件检索、图像生成等)把“Agent 味儿”的流程串起来。

下面咱们按“能直接照抄”的方式讲。用完你会发现:很多小工具脚本可以删了。


openai-cli 能干啥?你关心的重点我给你挑出来

1)Responses API + Cloud Tools:Agent 工作流命令行直通

responses 是核心入口。

  • 你可以像调用普通模型一样生成文本
  • 也可以把 OpenAI 托管工具塞进一次请求里(web 搜索、代码解释器、文件检索、图像生成等)

这意味着什么?

你在终端里就能做“查资料 → 总结 → 输出结构化结果 → 进入下一步脚本”的流程。很适合放进自动化。

2)输出很 Unix:JSON / YAML / JSONL / pretty / raw

命令行工具最烦的就是输出不好接管道。

openai-cli 直接给你准备了:

  • json:你要喂给其他程序
  • jsonl:你要写日志、做批处理
  • yaml:人类读着舒服
  • pretty:调试专用
  • raw:只要纯文本

更狠的是:它还内建字段抽取(类似 jq 的感觉),能直接从输出里抠你要的字段,不用你再写一堆解析。

3)图像/语音这些“以前要写 SDK 的活”,一行命令

比如:

  • 图像生成 / 编辑
  • 语音转录(STT)
  • 语音合成(TTS)

以前你可能得写 Python,装依赖,处理文件上传。现在命令行直接搞。

4)管理能力也给了:project / key 更省事

对团队和运维来说,这块很实用:

  • 创建 project
  • 分发/管理 API key

不用你再去网页点点点,脚本里就能做。


安装:两种主流方式(按你的习惯来)

项目是 Apache 2.0 协议,代码在 GitHub:github.com/openai/openai-cli

安装方式官方给了两条路:

  • Homebrew:macOS 用户大概率顺手
  • Go 安装:你机器上有 Go 环境就走这个

具体安装命令以仓库 README 为准(作者也提到会补更多文档)。


核心用法:资源化命令结构,一眼就懂

它的命令长这样:

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

你把它理解成:

  • openai:主命令
  • responses:资源
  • create:动作
  • --input / --model:参数

这个结构的好处是:你不用背一堆“神秘子命令”,看到就知道在干嘛。


立刻能用的示例:复制就跑

下面示例偏“模板”。模型名、参数名以你账户可用的为准。

1)终端里做一次最小调用

openai responses create \
  --input "把这段话改成三条要点:……" \
  --model <model>

你会得到结构化输出(看你选择的格式)。

2)输出选型:给脚本用 vs 给人看

调试时你可能想看得舒服点:

openai responses create --input "写个 30 字广告文案" --model <model> --format pretty

要接管道给别的程序:

openai responses create --input "给我一个 JSON,包含 title 和 tags" --model <model> --format json

要记日志、批处理:

openai responses create --input "生成 10 条样本,每条一行 JSON" --model <model> --format jsonl

3)内建字段抽取:少写一堆 jq(这点很爽)

典型场景:你只想拿到“最终文本”,别的元数据都不关心。

思路是:

  • 让输出保持结构化
  • 直接抽字段
  • 把抽到的值塞进下一个命令

示例(字段路径以实际输出为准):

openai responses create --input "给我一句话总结" --model <model> --format json \
  | openai gjson '...'

如果你平时用 jq,你会立刻明白它的价值:少装一个依赖,少记一套语法,命令更短。

4)文件参数:@file.ext 跟 curl 一个味儿

你在命令行传文件,不用你自己读文件再 base64。

openai responses create \
  --input @prompt.txt \
  --model <model>

还有个更“硬核”的:二进制内容你可以显式写成 base64 数据源(用 @data:// 这种形式)。适合你在脚本里动态生成二进制,再塞给命令。


把它塞进 CI/CD:适合哪些活?

openai-cli 的最佳打开方式就是“别当成玩具”,当成你流水线的一环。

几个特别实用的场景:

  • PR 自动总结:把变更 diff 喂给模型,输出一段 release note
  • 生成测试数据:一批 JSONL 直接落盘,给集成测试用
  • 日志清洗:把 noisy 的日志分类、提取关键字段
  • 客服/工单归类:输入原始工单,输出标准标签 + 优先级

你会发现:以前这些要写一个小服务,现在脚本里一两条命令就行。每天早下班半小时那种。


避坑清单:踩过的人都懂 😅

  • 输出格式别选错:要接管道就用 json/jsonl,别用 pretty
  • 字段抽取路径对不上:不同模型/不同接口返回结构可能有差异。先用 --format json 打印一遍,确认字段路径再抽。
  • 二进制/文件传参:文本文件用 @file 很省心;二进制别硬塞字符串,走 @data:// 这类显式编码方式更稳。
  • 命令行里塞太长 prompt:建议把 prompt 放文件里,版本可控,也方便复用。

这工具适合谁?

  • 你爱写 shell 脚本,讨厌为了调个 API 搭项目
  • 你在搞 CI/CD,想把 LLM 能力变成一个可重复的步骤
  • 你在做 Agent 工作流,想快速把“工具调用”跑通
  • 你是运维/团队管理员,想把 project/key 管理脚本化

openai-cli 目前作者在 X 上也说了更像是 small ship / passion project,偏轻量发布。我的建议是:

  • 现在就拿来解决“脚本自动化”这类确定性场景
  • 复杂业务逻辑该写服务还是写服务

仓库地址:github.com/openai/openai-cli

OpenClaw
OpenClaw
木瓜AI支持养龙虾啦
木瓜AI龙虾专供API,限时领取免费tokens
可在 OpenClaw接入全球顶尖AI大模型
立即领取