把 Codex 塞进《毁灭战士》:OpenAI 开源了智能体的「发动机」

Dominik Kundel · OpenAI 开发者体验工程师 · 2026-10-14
听中文精华AI 合成朗读00:00
我在想怎么能在 Doom 里面运行 Codex,而不是在 Codex 里面运行 Doom。
— Dominik Kundel

关联

Dominik Kundel 在 OpenAI 负责 Codex 的开发者体验。这场 18 分钟的演讲讲了一件事:

Codex 的底层 harness 和包装它的 app server 协议都已开源,任何人都可以在它之上构建自己的智能体界面——哪怕是在电子游戏里。

什么是 Codex 的 app server?

app server 是一个包装 Codex harness 的协议,思路类似 agent client protocol(ACP):你写的应用作为客户端,通过消息和 Codex 服务端交互,发送指令、接收事件。

OpenAI 自己的 Codex 应用、VS Code 扩展等第一方界面都跑在它上面,第三方的 Xcode、JetBrains 集成,以及 Theo 的 T3 Code、RemoteX 等开源项目也一样 。

甚至有人用它做了个插件,让你在 Claude Code 里调用 Codex。

关键信息:harness 和 app server 都是开源的,Apache 2 许可,可以随意复刻修改,还能接到任何兼容 responses API 的模型上,包括 LM Studio 或 Olama 这类本地方案。

事件一大堆,但都很实在

Kundel 现场演示了一个自制的事件查看器,截获真实 Codex 应用和 app server 之间的全部通信。

你会看到线程启动、配置读取、流式返回的数据增量等一连串事件,乍看吓人,其实大部分含义直白。

目前协议有超过 120 种客户端消息,还在持续增加:初始化、线程管理、设置目标、列插件、文件搜索、修改文件系统,全都可以调用 。

而且它比 ACP 更深入——不只是通用协议,还能通过协议细粒度配置底层智能体本身。

用户还能用自己的 ChatGPT 订阅登录,消耗自己的 Codex 额度。

想定制智能体?两件武器

一是开发者指令(developer instructions):在 Codex 的系统提示词后面追加内容,而不是重写。

官方推荐这么做,因为原本的提示词针对各个模型做过大量调优,自己另起炉灶会丢掉这些积累 。

二是动态工具:

你可以直接定义新函数给智能体用,还能标记为延迟加载——不塞进系统提示词占上下文,而是让 Codex 需要时通过工具搜索去找到它们 。

每个线程还能单独改配置,换模型、换服务商,甚至精细控制沙箱能访问哪些网络连接和文件。

真没必要自己从头学

用起来出乎意料地简单。app server 就打包在 Codex CLI 里,同一个二进制文件,装了 CLI 就能直接启动。可以让 Codex 帮你生成特定版本的 TypeScript 绑定或 JSON schema。

官方还新出了 Python SDK,替你处理生命周期管理。

不过 Kundel 打趣说,在场都是 AI 工程师,多数人大概会选第二条路:直接让 Codex 自己写。它实现这个协议非常拿手,指个文档方向就行。

他自己就用这个方法让 Codex 用 Visual Basic 写了个 Windows 原生客户端,基本一次成型 。

在《毁灭战士》里写代码

最放飞的部分:Kundel 没有把《毁灭战士》塞进 Codex,而是反过来,把 Codex 塞进了《毁灭战士》。

他用 Electron 和 Cloudflare 的 Doom WASM 渲染器搭了个应用,Codex 的界面直接渲染在游戏画面里,通过 Electron 的进程间通信连到 app server 。

在游戏里跟 Codex 打招呼,它会回话;用动态工具给它开挂——满血满甲、全武器无限弹药,一喊就调;

问它当前目录,它真的去调 ZShell 查工作目录。「可以直接在《毁灭战士》里凭感觉写代码了。不过我不太推荐,还是 Codex 应用更好用。」

和 Codex Exec 有什么区别?

Codex Exec 是 CLI 里另一个命令,起一个非交互式界面跑任务,适合脚本化场景,比如在持续集成里自动修复 PR 。

但如果你要做一个完整的客户端、展示智能体状态,或者同时开很多 Codex 线程(比如跑自己的评测),app server 才是正解——你完全掌控 harness,不用自己琢磨怎么并行一堆 exec 调用。

本集带走

  • Codex harness 和 app server 协议都开源(Apache 2),可复刻、可接其他模型。
  • 超过 120 种客户端消息,从线程管理到沙箱控制都能调,支持用户自带 ChatGPT 订阅。
  • 定制用开发者指令追加系统提示词,别急着重写;自定义工具标记延迟加载,别污染上下文窗口。
  • 应用要自带一份 harness 二进制,别依赖用户装的 CLI 版本,省去大量兼容麻烦。
  • 界面不必是聊天框:智能体可以塞进游戏、后台任务或任何奇怪的地方。
全部金句 2 条

我在想怎么能在 Doom 里面运行 Codex,而不是在 Codex 里面运行 Doom。
I thought about how can I actually run Codex inside of Doom rather than running Doom inside of Codex.
—— Dominik Kundel · [12:08]

第一个是,你应该真正发布你自己版本的 harness。
The first one is you should actually ship your own version of the harness.
—— Dominik Kundel · [16:05]

接着看

顺着「AI 编程」挖下去

换个口味