Skip to content
目录

11 — Arg0 多路复用:单二进制多角色

动机

分发单一 codex 可执行文件,减少:

  • PATH 污染与 错误二进制 风险;
  • 打包体积重复;
  • 沙箱内需要 可信路径重入 时的复杂度。

codex-arg0 入口行为(节选)

codex-rs/arg0/src/lib.rs

  1. argv0 文件名;若为 codex-linux-sandbox → 进入 Linux 沙箱 helper。
  2. 若为 apply_patch / applypatch → 进入 codex_apply_patch::main()
  3. argv1 == CODEX_CORE_APPLY_PATCH_ARG1 → 以 内嵌模式 应用 patch(供 core 子进程调用)。
  4. (Unix)codex-execve-wrapper 路径用于 shell 提权包装等。
88:97:codex-rs/arg0/src/lib.rs
if exe_name == CODEX_LINUX_SANDBOX_ARG0 {
        // Safety: [`run_main`] never returns.
        codex_linux_sandbox::run_main();
    } else if exe_name == APPLY_PATCH_ARG0 || exe_name == MISSPELLED_APPLY_PATCH_ARG0 {
        codex_apply_patch::main();
    }

    let argv1 = args.next().unwrap_or_default();
    if argv1 == CODEX_CORE_APPLY_PATCH_ARG1 {

Arg0DispatchPaths:测试与 harness

结构体字段 codex_self_exe 注释说明:在测试 harness 中 current_exe() 可能指向 测试运行器 而非真实 Codex,因此需要 显式稳定路径 做子进程 re-exec。

一句话

Arg0 多路复用 = 用进程镜像名与 argv 约定切换子系统,配合 稳定自路径,在单二进制下实现沙箱 helper、patch 工具与主 CLI。

延伸阅读

MIT License.