← Harness 图谱
Codex SDK
OpenAI
TypeScript
Python
Rust
开源
Apache-2.0
编程底座
CLI包装
非交互执行
沙箱
审批模式
代码x
verified
lifecycle: active
核验 2026-10-01
「把 Codex CLI 变成 Node 进程里可驱动的对象」 —— 官方 README 首句就是
适合与不适合
适合:要把 Codex 塞进 Node / Electron 应用或 CI;需要非交互执行;
固定坐标系
8 个维度,与同赛道其他对象逐项可比。
- 模型与开放条件
- 两条路径,本站的判断是「默认走OpenAI,但架构上没锁死」。 证据一:README 里的配置示例
baseUrl会被翻译成--config openai_base_url=...传给 CLI, 即换 API 端点是一等配置项(原文:If you setbaseUrl, the SDK passes it as a--config openai_base_url=...override)。 证据二:codex-rs源码里model_providers是正式配置项(站内搜索 162 处引用, 分布在config/src/thread_config.rs、core/src/config/requirements.rs等)。 证据三:ThreadOptions有独立的model?: string字段。 但要说清:SDK 本身没有任何「provider-agnostic」表述,也没有像 OpenAI Agents SDK 那样列出可选 extra(litellm / any-llm)。 换第三方模型后工具调用与 structured output 的可靠性,本站未核验。 - 运行位置
- 进程形态是「你的 Node 进程 + 一个被 spawn 的 CLI 子进程」。 README 的
env参数说明值得注意:「By default, the Codex CLI inherits the Node.js process environment」,你可以整体控制 CLI 看到哪些环境变量, 官方给的用途是 sandboxed hosts like Electron apps。 SDK 仍会在这之上注入自己需要的变量(如CODEX_API_KEY)。 这条对 Electron / 桌面应用集成是决定性的,官方明确点了这个场景。 - 本地文件
- 本地文件是 CLI 的原生能力,SDK 侧只需给工作目录。
workingDirectory设置运行目录;additionalDirectories可追加额外目录; 另有local_image类型的输入条目可把本地图片传给 CLI(走--image)。 一个必须知道的行为:Codex 要求工作目录是一个 Git 仓库, 否则拒绝运行(官方原文:To avoid unrecoverable errors, Codex requires the working directory to be a Git repository)——可以用skipGitRepoCheck跳过。 这对选型是硬约束:非 Git 目录(纯数据目录、临时目录)里开箱即用不了。 - 关机后的任务
- 最值得注意的一点:这是本站收录对象里唯一官方明确支持「非交互执行」的。 仓库里有
docs/exec.md,标题就是 Non-interactive mode(正文只留外链, 指向 developers.openai.com/codex/noninteractive)。 与 CLI 站那份档案里 Gemini CLI 是「唯一明确支持非交互」的对照正好构成一组: 在这个 harness 站里,Codex SDK 同样是非交互执行这条路的主要候选。 线程持久化有官方支撑:README 说 Threads are persisted in~/.codex/sessions, 内存里的 Thread 对象丢了可以用resumeThread()重建继续。 注意 ~/.codex/sessions 是文件目录而非数据库 —— 意味着状态与进程同机器, 跨机迁移与并发写的语义本站未核验。 - 工具与扩展
- 工具面完全由 CLI 决定,SDK 不新增也不裁剪。README 全文没有出现 MCP。 SDK 侧你拿到的是结构化事件流:
runStreamed()返回 async generator, 事件类型包括item.completed(工具调用、流式响应、文件变更通知) 与turn.completed(含 usage 统计)。 Structured output 是 SDK 明确支持的一等能力:outputSchema可传 JSON Schema,也有官方推荐的 Zod 转换路径 (zodToJsonSchema(schema, { target: "openAi" }))。 注意这里有个命名陷阱:那个target 是"openAi", 但它产出的是 JSON Schema 给任意遵守该schema 的模型用,不代表只能 OpenAI。 本站点MCP 收录的 9 个 server 里没有它的位置 —— Codex CLI 是否支持 MCP、 本站未核验(SDK README 未提,主仓 docs 目录里也没有 mcp.md)。 - 上下文与记忆
- 本站最关心的维度,本对象提供的是「会话续接」而不是「上下文管理」。 证据是
resumeThread(threadId):能恢复对话继续跑,但没有压缩、摘要或落盘机制。 换句话说:Thread解决的是可靠续跑(本站主张的「状态」面), 不解决长上下文(本站主张的「上下文」面)。 要压上下文只能靠 CLI 侧的配置或换模型,SDK 层没有暴露相关选项。 - 权限与限制
- 这是本站核对下来最有价值的一处发现 —— 它把 CLI 站那份档案里标为「未核验」的问题补上了。 证据来自 SDK 源码
sdk/typescript/src/threadOptions.ts的类型定义(不是文档,是源码):ApprovalMode = "never" | "on-request" | "on-failure" | "untrusted"—— 四种审批模式;SandboxMode = "read-only" | "workspace-write" | "danger-full-access"—— 三档沙箱。 网络单独控制:networkAccessEnabled?: boolean、webSearchMode?: "disabled" | "cached" | "live"、webSearchEnabled?: boolean。 推理强度可调:ModelReasoningEffort有 8 档 (minimal / low / medium / high / xhigh / max / ultra / persistent)。 另一层权限机制是配置透传:SDK 支持config(自动展平成 dotted path转 TOML 传给--config) 与configOverrides(原始 TOML 逐条透传)。官方示例直接给出了文件系统级规则:permissions.audit.filesystem={":root"="read","/path/to/project/.env"="deny"}, 即可以按路径精确拒绝读.env 这类文件。官方说明优先级: 原始 overrides >结构化 config > SDK 托管设置。 ⚠ 三档沙箱各档在具体平台(Windows / macOS / Linux)上的实现差异本站未核验 (docs/sandbox.md 正文只有外链)。 - 适合什么任务
- 适合:要把 Codex 塞进自己的 Node 应用 / Electron 应用 / CI; 需要非交互执行;需要精确的文件级权限规则;TypeScript 或 Python 栈; 已经决定用 OpenAI 模型但想让模型层可换。 不适合:想要一个纯库、不想额外背一个 CLI 子进程(用 OpenAI Agents SDK); 目标目录不是 Git 仓库又不愿开
skipGitRepoCheck; 需要 SDK 层自己做上下文压缩(本站未核验 CLI 侧是否有可配的压缩策略)。
头号误解
- 以为 v3 计划里的 openai/codex-sdk 存在 —— 该仓 404,SDK 是 monorepo 子目录
- 以为 SDK 版本号能反映能力 —— package.json 里是 0.0.0-dev,实际版本跟CLI 走(当前 0.159.3)
- 在非 Git 目录里开箱即用就跑不了 —— CLI 要求工作目录是 Git 仓库,必须显式跳过
- 把
sandbox_workspace_write.network_access与 SDK 的networkAccessEnabled当成两套东西 —— 后者才是 SDK 层入口,前者是 config透传的写法 - 把 OpenAI Agents SDK(纯 Python 库)当成本 SDK 的同类替代 —— 形态不同,见 layer_position
价格
| 月度入口 | SDK 本身免费(Apache-2.0),推理按你接的 provider 计费 |
|---|---|
| 额度说明 | 三条计费路径要分清: (1)SDK 与 CLI 都开源免费,跑起来要 OpenAI API key 或 ChatGPT 额度; (2)可以配 baseUrl 指向自建/第三方网关,此时计费跟着那个网关走; (3)OpenAI 另有 Codex Web(chatgpt.com/codex)这条云端产品线, 那是订阅制,与本地 SDK 不是同一件事。 |
不同币种不做折算。优惠、地区、税费与登录后报价可能变化,购买前请到官方页面确认。
未知项清单
- 三档沙箱在 Windows / macOS / Linux 的实现差异(尤其 Windows 是否走 WSL)
证据来源
判断可回到以下一手源复核。本站核验日 2026-10-01,内容更新日 2026-10-01。
| 类型 | 名称 | 链接 |
|---|---|---|
| repo | openai/codex · 仓库(monorepo,SDK 在 sdk/ 子目录) | https://github.com/openai/codex |
| docs | TypeScript SDK README(包裹 CLI、JSONL 通信、thread/turn、resume、config 透传) | https://github.com/openai/codex/tree/main/sdk/typescript |
| code | 源码 sdk/typescript/src/threadOptions.ts(ApprovalMode 四档/ SandboxMode 三档 / 网络与推理强度) | https://github.com/openai/codex/blob/main/sdk/typescript/src/threadOptions.ts |
| code | sdk/typescript/package.json(包名 @openai/codex-sdk、Apache-2.0、Node≥18) | https://github.com/openai/codex/blob/main/sdk/typescript/package.json |
| docs | docs/exec.md · Non-interactive mode(正文仅外链) | https://github.com/openai/codex/blob/main/docs/exec.md |
| docs | docs/sandbox.md · Sandbox & approvals(正文仅外链) | https://github.com/openai/codex/blob/main/docs/sandbox.md |
| repo | Python SDK 目录(本站记录存在,细节未核验) | https://github.com/openai/codex/tree/main/sdk/python |
| changelog | Releases(0.159.3 @ 2026-09-30,另有 0.161.0-alpha 预发布) | https://github.com/openai/codex/releases |
| docs | 官方安全文档(沙箱与审批,JS 渲染,本站点未取到正文) | https://developers.openai.com/codex/security |
实测记录
本站尚未完成实测。测试协议见 tasks/_protocol.md。
本页由 ai-coding-agent-atlas 数据层生成(CC BY 4.0)。
方法论与坐标系定义见仓库内 METHODOLOGY.md。