S
Codex SDK 教程 TypeScript
第 01 章

SDK 是什么

SDK 是什么?为什么要用代码调 Codex

这章搞清楚一件事:Codex SDK 到底是什么,跟直接敲 codex 命令有什么区别。

先讲个故事

假设你雇了一个超级程序员助手(就是 Codex),有两种方式跟它合作:

方式一:当面指挥(CLI)

你坐在终端前,敲一个命令,它干一件事,你看结果,再敲下一个命令。就像开手动挡车——你踩离合、挂挡、给油,每一步都得自己来。

方式二:写个程序指挥(SDK)

你写一段 TypeScript 代码,告诉它:"先分析这个项目的代码质量,然后检查有没有安全漏洞,最后生成一份报告。" 它自己跑完全程,中间不用你盯着。就像自动驾驶——你设好目的地,坐着就行。

SDK 就是"方式二"的工具包。

真实场景:你想让 Codex 每天凌晨 3 点自动扫描代码仓库、生成报告、发到飞书群里。用 CLI 怎么搞?写 shell 脚本 + parse 文本输出 + 各种 workaround?太累了。用 SDK 几十行 TypeScript 搞定。

SDK 的核心架构

一句话版本:你的代码 → SDK → 生成 CLI 子进程 → JSONL 事件流 → 你的代码处理结果

展开说:

┌──────────────┐    生成子进程     ┌─────────────┐
│  你的 TS 代码  │ ──────────────→ │  Codex CLI   │
│  (用 SDK)     │ ←────────────── │  (Rust 二进制) │
└──────────────┘    JSONL 事件流    └─────────────┘

SDK 在背后干了什么?

  1. 帮你生成一个 Codex CLI 子进程(就是 codex exec 命令)
  2. 把你的输入通过 stdin 传进去
  3. stdout 一行一行读取 JSON 事件(这就是 JSONL——每行一个 JSON 对象)
  4. 把这些事件解析好,包装成 TypeScript 类型,交给你处理

你完全不需要知道底层的 JSONL 长什么样,SDK 全帮你封装好了。但知道这个架构,出了问题你知道去哪儿排查。

什么时候该用 SDK

场景 用 CLI 用 SDK
日常写代码、改 bug ✅ 直接用,体验最好 杀鸡用牛刀
一次性脚本任务 ✅ 够用 可以但没必要
自动化流水线(CI/CD) 勉强,得 parse 文本 ✅ 首选,结构化输出
集成到自己的应用/服务 ❌ 没法用 ✅ 唯一选择
批量处理多个项目 写 shell 循环,很痛苦 ✅ 一个 for 循环搞定
需要结构化数据(JSON) ❌ CLI 输出是文本 ✅ 原生支持 JSON Schema
构建 AI 工具/机器人 ✅ 就是干这个的

经验法则:如果你要写代码来调 Codex,就用 SDK;如果你是坐在终端前手动用,就用 CLI。

四个核心概念(先混个脸熟)

在 SDK 的世界里,只有 4 个东西需要记住:

概念 类比 干什么的
Codex App 的入口 创建实例,配置 API Key、模型等全局参数
Thread 微信聊天窗口 一个对话线程,支持多轮对话,上下文连续
Event 直播弹幕 实时事件流,告诉你 AI 正在干什么
Item 订单里的商品 AI 产出的具体东西:回复文本、执行的命令、改的文件

用代码串起来就三行:

typescriptconst codex = new Codex();                    // 创建入口
const thread = codex.startThread();            // 开一个聊天窗口
const turn = await thread.run("帮我看看代码"); // 说一句话,等结果

后面的章节会逐个展开。现在知道有这 4 个东西就够了。

小结

  • SDK 是用代码调 Codex 的工具包,底层就是帮你管理 CLI 子进程
  • CLI 适合手动用,SDK 适合写程序调
  • 记住 4 个核心概念:Codex、Thread、Event、Item
  • SDK 基于 JSONL 协议通信,但你不用关心细节

下一章安装与 Hello World — 5 分钟跑通第一个 SDK 程序。