很多 Codex SDK 教程一上来就画工作流:队列、数据库、多个 Agent、自动发 PR。图看着很完整,真正照做时,最基础的三个问题却没说清楚:一次任务怎样开始,结果从哪里读,失败以后凭什么继续。
先把范围收窄。当前官方文档明确给出的路径,是服务端 Node.js 18+ 环境里的 TypeScript 包 @openai/codex-sdk。它让你的程序控制本地 Codex agent,可以新建线程、继续当前线程,也可以恢复已有线程。这里写的是这条已确认路径,不把“Codex SDK”泛化成浏览器 SDK,也不凭空补一个功能对等的 Python 版本。
先跑通一条最短链路
准备一个干净目录,确认 Node 版本,再安装包:
node --versionnpm install @openai/codex-sdk
代码结构可以很小。创建客户端,启动一个线程,给它一项边界明确的任务,然后消费返回事件。具体 API 名称应以安装版本对应的官方示例为准,不要从旧文章复制后直接假设仍然兼容。
为什么不在这里放一段“复制即用”的完整代码?因为本轮没有安装依赖,也没有发起真实请求。把未经执行的片段写成可运行答案,比留一个清晰边界更误导。
[真实截图待补:Node.js 版本、依赖安装成功、最小线程运行及最终事件输出]
结果不是只有最后一句话
把 SDK 当成一个返回字符串的函数,很快会踩坑。任务运行过程中可能有状态变化、工具调用、增量内容和错误。程序如果只等最后一段文本,既看不到中途失败,也无法给日志、超时和重试一个可靠依据。
更稳的做法是把事件按三类处理:过程事件用于日志和进度;需要用户注意的事件进入界面或告警;最终结果才进入下游业务。任何事件都别把 API Key、Cookie 或完整敏感输入原样写进日志。
程序还要定义停止条件。超时是结束这一次等待,还是取消任务?连接断开以后恢复原线程,还是新开线程?没有这几个判断,所谓自动化只是把人工卡住换成后台卡住。
新建、继续、恢复,不是一回事
新建线程适合独立任务,历史最干净。继续线程保留同一件事的上下文,适合补充约束或让它根据刚才的结果修订。恢复线程解决的是进程退出后重新接管,而不是无限延长一段混乱对话。
工程里最好保存线程标识、业务任务标识和最后成功事件的位置。三者分开,才能判断重试是否会重复产生副作用。会写文件、发消息、创建 PR 的任务尤其要做幂等检查,不能因为网络重连就执行两遍。
认证和模型入口放在哪一层
SDK 负责把 Codex agent 纳入你的程序,不等于替你解决所有上游认证。Key 应由运行环境的 Secret 管理注入,不能硬编码在 TypeScript,也不能跟线程记录一起落库。
如果团队本来就在管理多个模型入口,AI Code With 的价值在这里是把 API Key、渠道和用量记录集中到控制台,减少每个自动化服务各放一套凭证、各查一套记录的操作。它不是“SDK 的必需依赖”,更不该被写成绕过认证或失败的万能层。当前事实库没有可直接发布的 Endpoint,因此这里不提供地址占位以外的参数。
从最小闭环再往外长
验收顺序很简单:一次线程能开始;过程事件能被记录;最终结果能区分成功和失败;重启程序后能恢复;重复执行不会制造第二份副作用。完成这五项,再接队列、数据库和多个 agent。
这篇稿件仍是 TEST_REQUIRED。发布前要把依赖版本、真实代码、运行输出和错误分支补齐。SDK 自动化最怕的不是写得慢,而是在第一条链路还没闭合时,先把架构画得过于漂亮。

