Codex Source Notes

Codex 源码阅读系列

这个系列从 openai/codex 的公开源码进入,不先贴功能清单,而是跟一条普通请求走: 它怎样从一句话变成有类型的任务,怎样进入 session 和 turn,怎样整理上下文、暴露工具、 经过权限关口,并把过程留下给客户端展示、后续恢复、长期记忆召回和平台沙箱执行。

源码证据固定到同一个 openai/codex 公开快照;产品契约来自 OpenAI 官方文档。每篇只描述公开客户端代码和协议可见的机制。

源码阅读 · 第一篇 先跟一次请求走完 Codex 的运行主线

先把一个普通修 bug 请求拆成几道关口:入口、protocol、session、turn、上下文、工具权限、事件和持久记录。

源码阅读 · 第二篇 上下文不是聊天记录,而是运行时账本

ContextManagerTurnContextfor_prompt() 和 compaction replacement 读懂上下文管理。

源码阅读 · 第三篇 protocol 与事件流,客户端怎样共享同一套事实

TurnStartParamsSubmissionOpEventMsg 到 app-server v2 projection 和 rollout 恢复。

源码阅读 · 第四篇 工具调用背后的运行时合约

ToolSpecToolRouterToolRegistryToolInvocation 到 approval、sandbox、events 和 history。

源码阅读 · 第五篇 权限与 sandbox,副作用怎样被运行时收口

approval_policy、permission hooks、ToolOrchestratorSandboxAttempt 和 retry 读懂副作用边界。

源码阅读 · 第六篇 客户端投影,同一套事实怎样变成可见状态

EventMsgTurnItemThreadItemServerNotification、TUI history cell 和 rollout 恢复读懂客户端状态。

源码阅读 · 第七篇 扩展与多 agent,额外能力怎样进入一次 turn

skillsplugins、MCP tool exposure、tool_search、dynamic tools 和 AgentControl 读懂扩展入口。

源码阅读 · 第八篇 Hooks 与生命周期,边界处还能改变什么

HookEventName、hook discovery、HookStartedHookCompleted、prompt gate、tool gates 和 Stop 读懂 hooks。

源码阅读 · 第九篇 性能与 prompt cache,速度来自请求形状

从 OpenAI prompt caching 契约、prompt_cache_key、stable prefix、dynamic tail、compaction 和 token usage 指标读懂性能路径。

源码阅读 · 第十篇 rollout 与恢复,能继续的前提是能重放

RolloutItem、JSONL writer、InitialHistory、reverse scan、replay suffix、rollback marker 和 fork snapshot 读懂恢复。

源码阅读 · 第十一篇 SDK 与 app-server,外部调用怎样进入同一套 runtime

从 app-server 的 initialize、typed ClientRequestthread/startturn/start、listener 和 SDK 读懂外部入口。

源码阅读 · 第十二篇 Memory 记忆层,旧线程怎样变成可用经验

Feature::MemoryToolmemory_mode、Phase 1 / Phase 2、 memories/ workspace、read path、citation 和 polluted thread 读懂长期召回层。

源码阅读 · 第十三篇 Windows 沙箱,权限边界怎样落到操作系统

SandboxAttempt、sandbox users、ACL、防火墙、command runner 和 restricted token 读懂 Windows 本地执行边界。