实战 SOP
实战 SOP

白嫖 OpenAI 顶级 Agent 底座:Codex Harness 接入 SOP,从一条命令到产品级 Runtime 的三级火箭

白嫖 OpenAI 顶级 Agent 底座的接入 SOP:三级火箭。第零步认证(login_chatgpt/login_api_key,key 走环境变量不进 prompt)->第一级 codex exec 一条命令跑 CI/脚本->第二级 Codex SDK 当函数调(startThread/run、outputSchema 结构化输出、~/.codex/sessions 线程持久化+resumeThread 断点恢复、runStreamed 事件流、沙盒与文件系统粒度权限 config 实例)->第三级 codex app-server 产品级 Runtime(JSON-RPC 2.0、generate-json-schema、Approvals 审批语义、-32001 过载重试、/readyz /healthz 探活)。附上线前 10 项 checklist+5 个典型踩坑(key 进 prompt/默认信任沙盒默认值/非 Git 目录/失败整体重跑/第一天就上 app-server)。全示例出自官方仓库文档,非法律与安全合规意见。

发布于 2026年8月22日7 分钟阅读
<!-- codex-harness-integration-sop | sop | 白嫖 OpenAI 顶级 Agent 底座:Codex Harness 接入 SOP,从一条命令到产品级 Runtime 的三级火箭 -->

上周(2026-08-19)OpenAI 官宣 "Codex as a platform",Codex Harness 正式成为可嵌入第三方产品的 Agent 底座(背景见本站 OpenAI 交出 Agent 的发动机)。官方给了三个入口:codex exec、Codex SDK、codex app-server。

这篇 SOP 回答一个具体问题:一个普通团队,怎么按「三级火箭」的节奏把这套底座用起来--从一条命令跑通,到代码里调用,到产品级 Runtime。每级都给到最小可运行的示例与升级判据,全部基于 openai/codex 仓库官方文档(GitHub API 实测 2026-08-22)整理。

先说两条边界:第一,Harness 开源(Apache-2.0)不等于模型免费,token 照常计费;第二,本文是接入路径梳理,非法律与安全合规意见,上生产前请过自家的安全评审。

第零步:认证与环境

三級火箭共用同一个认证层。Python SDK 的官方推荐路径:

python
from openai_codex import Codex

with Codex() as codex:
    login = codex.login_chatgpt()      # ChatGPT 浏览器登录
    print(login.auth_url, login.wait().success)
    # 或 API key:codex.login_api_key("sk-...")

要点:已有 Codex 登录态会被自动复用;Python SDK(pip install openai-codex,需 Python 3.10+)会自动捆绑安装匹配版本的 CLI;TS SDK(npm install @openai/codex-sdk,需 Node 18+)则是 spawn CLI 并通过 stdin/stdout 交换 JSONL 事件。key 走环境变量或登录态,绝不写进 prompt。

第一级:codex exec--一条命令的集成

适用:CI 流水线、定时任务、一次性后台作业。零代码改造。

bash
codex exec --json "分析当前仓库并输出风险清单"

升级判据:当你需要在任务之间传递状态(上一个任务的结论喂给下一个任务)、或需要结构化输出喂给下游程序时,升级到第二级。

第二级:Codex SDK--把 Agent 当函数调

适用:在自家 TS / Python 服务里编排 Agent。两级核心能力:

多轮线程 + 断点恢复(线程持久化在 ~/.codex/sessions,进程重启可续):

typescript
import { Codex } from "@openai/codex-sdk";

const codex = new Codex();
const thread = codex.startThread({ workingDirectory: "/path/to/project" });
const turn = await thread.run("诊断测试失败并给出修复方案");
console.log(turn.finalResponse);
// 进程重启后:codex.resumeThread(savedThreadId) 接着跑

JSON Schema 结构化输出(Agent 的回答强制符合你的 schema,喂下游系统不用再解析自然语言):

typescript
const schema = {
  type: "object",
  properties: {
    summary: { type: "string" },
    status: { type: "string", enum: ["ok", "action_required"] },
  },
  required: ["summary", "status"],
} as const;

const turn = await thread.run("总结仓库当前状态", { outputSchema: schema });

需要实时感知进度(工具调用、文件变更)时用 runStreamed() 拿事件流,替代缓冲到结束的 run()。

安全与沙盒的官方开关(这些参数就是你的第一道缰绳):

typescript
const codex = new Codex({
  config: {
    sandbox_workspace_write: { network_access: false },  // 关沙盒内网络出口
    default_permissions: "audit",
  },
  configOverrides: [
    // 文件系统粒度:根目录只读,.env 明确拒绝
    'permissions.audit.filesystem={":root"="read","/path/to/project/.env"="deny"}',
  ],
});

升级判据:当你要自定义 UI、自建审批流、把事件流原样转发给前端时,升级到第三级。

第三级:codex app-server--产品级 Agent Runtime

适用:Agent 本身是你产品的一部分。codex app-server 是 Codex VS Code 扩展背后的同一套接口:JSON-RPC 2.0 协议服务,传输层支持 stdio(默认,JSONL)、WebSocket(实验性)、Unix socket。

接之前先拿 schema(每个版本生成对应的 schema,保证接口对齐):

bash
codex app-server generate-ts           # TypeScript 类型
codex app-server generate-json-schema  # JSON Schema bundle

三个工程要点(均出自官方 README):

  1. 审批是协议内一等公民。App Server 的 API 包含 Approvals 语义--高危动作挂起等你确认,这层要在你的产品里做成人机交互界面,而不是图省事全放行。
  2. 过载要按重试处理。请求饱和时服务端返回 JSON-RPC 错误码 -32001(Server overloaded),官方要求客户端做指数退避+抖动重试。
  3. 健康探测有现成端点。--listen ws:// 模式下 GET /readyz(监听就绪)与 GET /healthz(无 Origin 头时 200)可直接接你的探活系统。

上线前 10 项 checklist

  1. 认证凭据走环境变量 / KMS,不进代码不进 prompt
  2. 沙盒模式明确声明(workspace-write + 关网络出口,除非必需)
  3. 文件系统粒度权限:.env、密钥目录显式 deny
  4. 高危动作(删库、外发、支付)挂审批门,禁止默认放行
  5. 全量行为日志:thread id、turn 用量、工具调用序列
  6. token 与操作次数双限额 + 异常自动熔断
  7. 长任务用 resumeThread() 恢复,别无脑重跑(重复计费)
  8. 结构化输出用 outputSchema,别用正则解析自然语言
  9. app-server 过载错误 -32001 接了重试逻辑
  10. 灰度:先只读任务跑两周,再放开写操作

五个典型踩坑

  • 把 key 粘进 prompt「省事」--日志系统会把 prompt 全量存下来,等于密钥入库。
  • 默认信任沙盒默认值--各家默认配置偏宽松,网络出口、文件读写范围要自己收紧(背景案例见 OpenAI 踩下刹车:官方评测沙盒被自家 agent 从内部凿穿)。
  • 在非 Git 目录直接启动--Codex 默认要求工作目录是 Git 仓库(防误操作不可回滚);确需跳过用 skipGitRepoCheck: true,但要清楚你在放弃哪层保险。
  • 长任务失败就整体重跑--线程持久化的意义就是断点续跑,重跑烧的是双倍 token。
  • 第一天就上 app-server--协议层耦合深、迁移成本高;两级 SDK 能解决的,别上第三级。五家官方 Runtime 的横向对比见 Agent Runtime 五强横评。

一句话收尾:白嫖底座省下的两三个月,刚好够把审批、审计、熔断这三件缰绳做扎实--省下的时间花在哪,决定这套底座在你手里是生产力还是事故源。

常见问题

Q1:exec / SDK / app-server 三个都要装吗? A1:不用,按集成深度递进选一即可:脚本与 CI 用 codex exec;代码内编排用 SDK;自定义 UI 与审批流才上 app-server。每升一级耦合深度翻倍,永远从够用的最低级开始。

Q2:SDK 和 CLI 是什么关系,会版本冲突吗? A1:SDK 不是重写,是 CLI 的封装--TS SDK spawn @openai/codex CLI 并交换 JSONL 事件;Python SDK(openai-codex)自动捆绑安装匹配版本的 CLI(openai-codex-cli-bin),SDK 版本与 CLI release 对齐,避免了你手动管版本匹配。

Q3:任务跑到一半进程挂了,之前的进度还有吗? A3:有。线程持久化在 ~/.codex/sessions,用 resumeThread(threadId) 可以恢复继续跑,不需要从头重跑(也就不会重复烧 token)。TS 里通过 process.env.CODEX_THREAD_ID 之类的变量跨进程传递 thread id 是常见做法。

Q4:开源 Apache-2.0 之后,商用还要付什么钱? A4:框架层免费可改可商用;模型推理按 OpenAI 计费走(API key 或 ChatGPT 账号额度)。另外 IDE Extension 与 Codex Cloud 不在开源范围内。

Q5:我的产品已经有自研 Agent 循环,值得迁过来吗? A5:判据是「你的差异化在哪」。如果团队精力都耗在维护循环、上下文管理、工具调度这些官方 Runtime 免费送的东西上,迁移是净收益;如果你的差异化恰在执行层本身(或需要深度定制),保留自研但可以对照 Codex 的设计(线程恢复、审批语义、结构化输出)补短板。缰绳层(审批/审计/熔断)无论迁不迁都要自建,见 给 Agent 上缰绳部署 SOP。


参考来源

  • openai/codex 仓库(GitHub API 实测 2026-08-22,Apache-2.0,111,646 星)
  • sdk/typescript/README.md:startThread / run / runStreamed / outputSchema / resumeThread / workingDirectory / env / config overrides
  • sdk/python/docs/getting-started.md:安装、三种登录方式、thread_start(sandbox=...) 示例
  • codex-rs/app-server/README.md:JSON-RPC 2.0 协议、stdio/ws/unix 传输、Approvals、-32001 过载重试、/readyz /healthz、generate-ts / generate-json-schema
  • OpenAI 官方博文(2026-08-19):Codex as a platform

本文基于官方文档整理(截至 2026-08-22),非法律与安全合规意见;上生产前请过自家安全评审。

本文由 AI 辅助生成,经人工审核编辑。最后更新:2026-08-22

常见问题

exec / SDK / app-server 三个都要装吗?
A1:不用,按集成深度递进选一即可:脚本与 CI 用 `codex exec`;代码内编排用 SDK;自定义 UI 与审批流才上 app-server。每升一级耦合深度翻倍,永远从够用的最低级开始。
SDK 和 CLI 是什么关系,会版本冲突吗?
A1:SDK 不是重写,是 CLI 的封装--TS SDK spawn `@openai/codex` CLI 并交换 JSONL 事件;Python SDK(`openai-codex`)自动捆绑安装匹配版本的 CLI(`openai-codex-cli-bin`),SDK 版本与 CLI release 对齐,避免了你手动管版本匹配。
任务跑到一半进程挂了,之前的进度还有吗?
A3:有。线程持久化在 `~/.codex/sessions`,用 `resumeThread(threadId)` 可以恢复继续跑,不需要从头重跑(也就不会重复烧 token)。TS 里通过 `process.env.CODEX_THREAD_ID` 之类的变量跨进程传递 thread id 是常见做法。
开源 Apache-2.0 之后,商用还要付什么钱?
A4:框架层免费可改可商用;模型推理按 OpenAI 计费走(API key 或 ChatGPT 账号额度)。另外 IDE Extension 与 Codex Cloud 不在开源范围内。
我的产品已经有自研 Agent 循环,值得迁过来吗?
A5:判据是「你的差异化在哪」。如果团队精力都耗在维护循环、上下文管理、工具调度这些官方 Runtime 免费送的东西上,迁移是净收益;如果你的差异化恰在执行层本身(或需要深度定制),保留自研但可以对照 Codex 的设计(线程恢复、审批语义、结构化输出)补短板。缰绳层(审批/审计/熔断)无论迁不迁都要自建,见 [给 Agent 上缰绳部署 SOP](/zh/ai-agent-guardrails-deployment-sop)。 --- **参考来源** - openai/codex 仓库(GitHub API 实测 2026-08-22,Apache-2.0,111,646 星) - `sdk/typescript/README.md`:startThread / run / runStreamed / outputSchema / resumeThread / workingDirectory / env / config overrides - `sdk/python/docs/getting-started.md`:安装、三种登录方式、thread_start(sandbox=...) 示例 - `codex-rs/app-server/README.md`:JSON-RPC 2.0 协议、stdio/ws/unix 传输、Approvals、`-32001` 过载重试、/readyz /healthz、generate-ts / generate-json-schema - OpenAI 官方博文(2026-08-19):Codex as a platform 本文基于官方文档整理(截至 2026-08-22),非法律与安全合规意见;上生产前请过自家安全评审。

相关文章

实战 SOP

428B 开源了,先备 8 张 H100:M3.1 Flash 部署实录

M3.1 Flash(428B/A23B)本地部署实录。先泼冷水:官方没有任何消费级或单卡配方,vLLM recipe 与 SGLang cookbook 验证过的最小档是 4 张 Blackwell(B200/B300/GB200/GB300,TP4)、4 张 AMD MI355X(TP4)或整机 8 张 H100/H200(TP8,FP8 路径)。权重从 HF 或魔搭下载(公开、非 gated),体积三口径并存:社区口径 252.4GB/48 分片加 2.3GB DSpark 草稿头,vLLM recipe 另列 NVFP4 285GB、MXFP4 293GB、FP8 533GB;官方无独立量化仓。vLLM 需 0.33.0 及以上(发布当日不在 PyPI,用 Docker 镜像 vllm/vllm-openai:minimax-m31-flash 或 nightly),三条官方命令逐字实录:H100/H200 TP8、GB200 TP4、MI355X TP4,均强制 --block-size 128 与 --disable-hybrid-kv-cache-manager(漏掉会报 No common block size for 16);1M 上下文靠 --max-model-len 放开(Hopper 官方示例限 262144)。SGLang 尚未合入 main(Blackwell 需装 MSA 内核 pinned commit 且 nvcc 不低于 13.4,cu130 不算数)。显存账本:BF16 全量约 856GB 为推算口径非官方;激活 23B 只降算力不降显存门槛——428B 的专家必须全部驻留,这就是消费级不可行的根因;1M 上下文的 KV cache 总量官方未公布。国产算力走 FlagOS Day-0 九芯片(含华为昇腾,SGLang-plugin-FL 路径),性能数字标 FlagOS 官方口径。排障 13 条官方预置口径全收:hugepages 560GiB、B200 OOM、parser 拼写差异等,每条带解法。许可 MiniMax Community License:商用署名加 2000 万美元门槛。一句话现实:428B 开源了,先备 8 张 H100。

2026年10月24日9 分钟阅读
实战 SOP

Nemotron 3.5 Bolt 本地部署:74B 塞进 24GB 三条路

NVIDIA 于 2026 年 10 月 15 日发布 Nemotron 3.5 Bolt 74B-A9B 24GB:由 120B 的 Super VL 经 Star Elastic 预算条件化架构搜索压缩而来(专家路由 top-K 从 22 降到 9,蒸馏恢复训练 120B tokens),Mamba-2 与 Transformer 混合架构,量化方案是关键——占权重大头的专家层压到 IQ2_XXS 每元素 2.0625 bit(约 19GB),Mamba 线性层用 NVFP4,lm_head、词嵌入与注意力保持 Q8_0,全模型落在 22 至 24GB,精度靠 QAD 量化感知蒸馏从压缩阶段一路找回。本文给四条部署路线实录:Ollama(0.40.5 起支持,ollama run nemotron-3.5-bolt,25GB 下载,ollama ps 验证 100% GPU);Unsloth(UD-IQ2_XXS 约 22GB、UD-IQ1_M 约 20.3GB,ctx 从 4096 保守起步);llama.cpp 官方配方(需 10 月 15 日后构建才认识 nemotron_h_moe 架构,28GB 配方 65K 上下文加 8-bit KV 加 6 个草稿 token,32GB 配方上 262K;b11521 起 llama-server 默认端口改为 9931);vLLM(Blackwell SM120 配 LiLiCorr drafter,服务端多用户场景)。显存账本与两条上下文起步口径并存:裸模型 16K-32K 起步,Unsloth 因默认带 1-2GB draft model 建议 4K 起步。排障八条覆盖 OOM 砍上下文、层落系统内存、漏 --mmproj、max_tokens 16384 共享预算截断等。许可证 OpenMDW-1.1:免费无限制商用、输出物不受限、再分发须保留版权声明、含专利报复条款。厂商自报 GPQA Diamond 86.4、Terminal-Bench 2.1 51.0、PinchBench 公开榜同级第一(RTX Spark 实测 83.99 TPS,消费卡无官方数据);4GB 的 Bolt E4B 于 10 月 23 日接档发布。

2026年10月23日8 分钟阅读
实战 SOP

Xing4.0-29B-Intent 部署:29B 只跑 4B,命令抄哪条

把 Xing4.0-29B-Intent 跑起来的关键,是官方部署说明其实不在本仓库而在基座仓库:意图仓库 README 只给一句替换说明,完整 vLLM 与 SGLang 启动命令需从基座 Xing4.0-29B-A4B 搬,再把模型路径换成 Xing4.0-29B-Intent 权重路径并把 --served-model-name 设为 Xing4.0-29B-Intent。命令里几个参数是硬门槛:--trust-remote-code 必须加(model_type 为自研 xing4_0,非 llama 非 qwen),--tensor-parallel-size 2 意味着至少两卡,--max-model-len 262144 对应 256K 上下文,--reasoning-parser xing4_0 与 --tool-call-parser xing4_0 配套解析器,--speculative-config 用 mtp 方法,--gpu-memory-utilization 0.90 与 --max-num-seqs 4 是官方示例配比。权重 41 个 safetensors 分片共 62.43 GB,官方量化只有 FP8(33.17 GB,e4m3)与 GGUF(IQ4_NL 单文件 17.75 GB),没有 AWQ、GPTQ 或 INT8 safetensors。显存官方完全未公布,只说按实际环境配置;基座层给出的是必须 bfloat16(mHC 模式要求,FP16 或量化路径会报错)、暂不支持 --pipeline-parallel-size 大于 1、CUDA 上 mHC 路径需装 tilelang、宿主机需 Docker 24.0 以上与驱动 535 以上;昇腾路线明说需 910B2 系列 NPU 至少两张卡,并提供 quay.io 上三款官方镜像(镜像不含权重需自行挂载)。消费级与 CPU 路径只在基座 llama.cpp 文档里出现:int4 权重用 IQ4_NL 量化后约 19 GB,可在单张消费级 GPU 上跑,示例卡 RTX 3090 24 GB。SDK 只是 httpx HTTP 客户端、未发 PyPI;结构化输出两层:模型原生 category + args 数组,以及 SDK 开启 guided_json 后自动生成 JSON Schema 走 vLLM response_format 约束解码。许可虽为 Apache-2.0,但权重侧无独立 LICENSE 文件、仓库 LICENSE 是未填版权人的占位模板、61 个上游数据集原许可仍需自行核对。

2026年10月22日9 分钟阅读