ARTICLE · 987250
Codex深度分析源码版(一): 总体架构
第 1 章:总体架构与二进制组成
约 1964 字·阅读 5 分钟
本系列文章由openai开源的codex项目以及codex客户端二进制逆向分析而来
01
1.1 关键事实:AI 逻辑不在 Electron 里
很多人以为 Codex 桌面应用是"一个 Electron app",但解压 app.asar 后发现 Electron 那一层基本只是 UI 外壳,真正的 Agent 核心是几个 Rust 编译、stripped 的原生二进制。
证据:package.json 元数据
D:/work/ai/app/_extracted/package.json:
main 指向 .vite/build/early-bootstrap.js(仅 216 字节),说明 Electron 入口极其轻量。重型逻辑全在原生侧。
证据:.vite/build/ 下的 JS 都是外围功能
按文件大小排序后最大的几个 JS:
sqlite-BqLffnB9.js | ||
main-CZpDUN17.js | ||
worker.js | ||
child-process-snapshot-worker.js | ||
comment-preload.js | ||
codex-micro-service-Bm59YbrT.js | Work Louder 键盘灯控制 | |
sandbox-preload.js | ||
preload.js |
关键观察:codex-micro-service-Bm59YbrT.js 里全是 WLDeviceDiscovery、sendLightingConfig、batteryPercentage——这是 Work Louder 硬件键盘的灯效服务,跟 AI 毫无关系。
sandbox-preload.js 处理的是 web-sandbox.oaiusercontent.com 这个域的 iframe 通信,是给 MCP App 用的浏览器沙箱,也不是 AI 核心。
grep 这些 JS 文件查找 codex|compact|token|tool_call,命中数为 0,进一步证实 AI 逻辑不在 JS 里。
· · ·
02
1.2 真正的核心:四个 Rust 二进制
codex | |||
codex.exe | |||
codex-code-mode-host.exe | |||
codex-command-runner.exe | |||
codex-windows-sandbox-setup.exe |
证据:Rust 特征字符串
从 codex 二进制 strings 里直接读到的 Rust 生态标志:
确认:Rust + tokio(异步运行时)+ serde_json(序列化)+ tokio-tungstenite(WebSocket)。源码编译路径前缀 /home/runner/work/codex/codex/,对应 GitHub Actions runner。
证据:版本
从 strings 里读到内部版本号片段:
即 Codex CLI 内核版本约 0.144.0(桌面外壳版本 26.707.31428 是另一套版本号)。
· · ·
03
1.3 模块全景图(从源文件路径 + 开源仓库还原)
二进制里残留了大量 event <file>:<line> 格式的 tracing 宏字符串,能还原出 crate 结构。统计 top-level 模块(按出现次数):
⭐开源仓库交叉验证(源码纠正)
以上约 35 个 crate 是从二进制 strings 反推的。对照开源仓库 github.com/openai/codex/codex-rs/,实际有 102 个 crate。二进制反推的是子集(约 1/3),漏掉的都是代码量小、tracing 事件少的小工具 crate:ansi-escape、arg0、async-utils、debug-client、file-search、git-utils、keyring-store、secrets、stdio-to-uds、uds、vendor 等。
几个归属纠正:
write → 实际是独立的 apply-patch crategoal → 在 ext/goal/(扩展)mcp → 是 codex-mcp / mcp-server 的简称sandboxing 和 linux-sandbox 是两个独立 crate(前者策略层,后者 launcher 实现)结论:模块层面 strings 反推与开源仓库零冲突——strings 看到的是真实存在的 crate,只是不完整。完整结构以开源仓库为准。
core/src/ 下又分若干子目录,下一章详述。这里给出整体依赖关系 [推断]:
· · ·
04
1.4 配置与资源文件
D:/work/ai/app/resources/ 下还有这些值得注意的目录:
plugins/openai-bundled/ — 内置 7 个插件(browser/chrome/computer-use/deep-research/latex/sites/visualize),见第 7 章skills/skills/.curated/ — 精选 skill(如 hatch-pet)cua_node/ — 捆绑的 Node.js 运行时(用于 computer-use 等)native/ — 原生模块(computer-use-app-icons.node、windows-account.node、windows-updater.node)webview/apps/ — 各种 IDE 图标(vscode/cursor/zed/intellij...),用于显示"在哪个编辑器里打开"rg / rg.exe — 捆绑的 ripgrep(系统提示里明确要求模型用 rg 而非 grep)· · ·
05
1.5 小结
codex / codex.exe,不是 JS | |
event <file>:<line> tracing 字符串 + cargo 源码路径 |
下一章进入 core 内部,看 Agent 主循环。
本文由AI辅助整理生成,感谢关注。