Skip to main content

Codex 的安装和使用

(一)安装

1. Ubuntu

安装 Node.js(推荐 20+)

sudo apt update
sudo apt install -y nodejs npm

检查版本:

node -v
npm -v

如果版本低于 18,建议用 nvm 重装(很多 Ubuntu 自带版本很老)。

安装 Codex CLI

npm install -g @openai/codex

检查:如果看到帮助说明就成功。

codex --help
tip

Codex CLI 和 Cursor 有什么区别?

Codex CLI 无 UI,它的工作方式是:

  1. 读取当前目录代码
  2. 理解项目
  3. 修改文件
  4. 执行 shell
  5. 运行测试
  6. 再修改

所以它更像: AI DevOps / AI 工程代理, 而不是简单的代码补全工具。

Cursor 是一个 AI IDE

本质上是:VS Code + AI


(二)配置 OpenRouter API

设置 API key

export OPENAI_API_KEY="你的OPENROUTER_KEY"

Codex CLI 默认只支持 OpenAI 官方 API,不直接支持 OpenRouter。所以我们需要 改 API base URL

export OPENAI_BASE_URL="https://openrouter.ai/api/v1"

设置默认模型

export OPENAI_MODEL="openai/gpt-5.2"

可选:写入 .bashrc

否则每次登录都要重新 export。

vim ~/.bashrc

加入:

export OPENAI_API_KEY="你的OPENROUTER_KEY"
export OPENAI_BASE_URL="https://openrouter.ai/api/v1"
export OPENAI_MODEL="openai/gpt-5.2"

保存后:

source ~/.bashrc

(三)测试

进入一个代码目录,比如:

mkdir test_codex
cd test_codex

然后运行:

codex

或者直接给任务:

codex "create a hello world python script"

如果配置正确,它会:

  1. 调用 OpenRouter
  2. 返回代码
  3. 写入文件

image-20260315174759178

Codex CLI 默认会强制使用 gpt-5.3-codex 作为 coding agent 模型,即使你改了 API base URL。

在最新版本 Codex CLI 中:

  • 默认模型:gpt-5.3-codex 是专门给 终端代理 / coding agent 用的模型。

方法1:启动时指定模型

codex -m gpt-5.2-codex

或者:

codex --model gpt-5

例如:

codex -m gpt-5 "explain this repo"

方法2:交互模式切换

在 Codex 终端里输入:

/model

然后选择模型。

CLI 支持:

  • gpt-5.3-codex
  • gpt-5.2-codex
  • gpt-5.1-codex-mini
  • gpt-5
  • 等等

方法3:永久修改默认模型(推荐)

编辑配置文件:

vim ~/.codex/config.toml

写:

model = "gpt-5.2-codex"

以后默认就会用这个模型。


(四) 最常见的 5 个用途

我建议你以后这样用:

1 阅读项目

codex "explain this repository"

2 自动改代码

codex "add logging to this project"

3 自动修 bug

codex "fix the error in main.py"

4 自动写 Dockerfile

codex "create a dockerfile for this project"

5 自动部署

codex "write a systemd service for this app"

(五)权限控制 和 容器隔离

Codex 本身没有“额外权限”,它只拥有你当前 Linux 用户的权限。Codex 本质上只是 替你运行 shell 命令。如果你运行 sudo codex,那么:Codex 会获得 root 权限。

默认情况下 Codex 能读代码,修改代码,运行普通命令,但只限于 当前工作目录

1. Codex 的三种权限级别

  • 默认模式(安全)
--sandbox workspace-write

能力: 读文件,改项目代码,运行普通命令

限制:不允许改系统,不允许访问任意路径,不允许危险命令

  • 半自动模式

    codex --full-auto

    等价于:

    --sandbox workspace-write
    --ask-for-approval on-request

    AI可以:自动改代码,自动运行命令,但如果命令危险会询问。 (OpenAI开发者)

  • 完全自由模式(危险)

codex --dangerously-bypass-approvals-and-sandbox

codex --yolo

效果:

  • 不再询问
  • 没有 sandbox
  • 可以执行任何命令

例如:

apt install
docker run
systemctl
rm -rf

这是 完全系统权限

2. Linux sandbox 机制

Codex 在 Linux 上默认使用 Landlock + seccomp容器化 来限制 AI 执行命令。

它是在 宿主 Linux 进程里运行的,但给 agent 子进程加了一层 Linux sandbox(Landlock + seccomp)。也就是说:

Shell
└─ codex (CLI)
└─ sandboxed subprocess (AI 执行的命令)

而不是:

Docker container
└─ codex

默认情况下是这样:AI 并不是直接执行命令,而是通过一个 sandbox executor。

User Terminal


codex CLI (普通用户进程)


Sandbox Executor

┌───────────────┐
│ Landlock FS │ 限制文件系统访问
│ seccomp │ 限制系统调用
└───────────────┘


AI 生成的 shell commands

其中

  • Landlock 是 Linux kernel 的 安全模块(LSM)

    作用:限制进程可以访问哪些路径。

    例如 Codex 会设置类似规则:

    allow:
    ./project/**
    deny:
    /etc/**
    /usr/**
    /home/**

    所以 AI 执行:

    cat /etc/passwd

    即使你是 sudo 用户也会直接被 kernel 拒绝。

  • seccomp

    作用:限制系统调用(syscalls)

    例如可以禁止:

    mount
    ptrace
    clone
    reboot

    所以 AI 进程不能:

    mount filesystem
    debug other processes
    create privileged namespaces

    这防止 AI 逃逸 sandbox。

为什么不用 Docker

Docker sandbox 成本很高。启动延迟太慢

Codex CLI 本身是在 sandbox 外的。

结构是:

codex CLI

├─ network access
├─ API access

└─ spawn sandboxed subprocess
└─ run commands

所以:

  • Codex 可以联网
  • 可以调用 API
  • 可以管理 sandbox

但 AI 执行的 shell 在 sandbox 里。

tip

如果你运行:

codex --dangerously-bypass-approvals-and-sandbox

或者

codex --yolo

结构就变成:

Shell
└─ codex
└─ AI commands (no sandbox)

此时没有沙箱,AI 就直接执行任何命令。


(六)并发测试