2026年,OpenAI Codex 的 Agent 模式已经从实验性功能演进为生产级工具。本文将带你从零开始,利用 Codex Agent 模式构建一个自动化的代码审查机器人,实现真正的"AI 驱动开发"。

什么是 Codex Agent 模式?

Codex Agent 是 OpenAI 在 2025 年底推出的革命性功能,它不仅仅是代码补全工具,而是具备自主规划、执行、验证能力的 AI 编程代理。与传统 Copilot 的"你写我补"不同,Agent 模式可以:

  • 理解任务目标:接收自然语言描述的需求,自主拆解为可执行步骤
  • 跨文件操作:在多个文件间导航、修改、创建,保持代码一致性
  • 运行测试验证:自动执行测试用例,确保修改不破坏现有功能
  • 迭代优化:根据测试结果自我修正,直到满足要求

Agent 模式 vs 传统 Copilot

维度传统 CopilotCodex Agent
交互方式单行/多行补全任务驱动,自主执行
上下文范围当前文件整个代码库
执行能力仅生成代码生成+测试+调试
适用场景快速编码复杂重构、功能开发

环境准备

前置要求

  • OpenAI API Key(需开通 Codex 权限)
  • Python 3.10+
  • Git 仓库(用于代码审查场景)

安装 Codex CLI

# 通过 npm 安装全局命令行工具
npm install -g @openai/codex

# 验证安装

codex --version

# 输出: codex/1.2.0



# 配置 API Key

codex auth login

# 按提示输入 OpenAI API Key

项目初始化

mkdir codex-review-bot && cd codex-review-bot
git init

# 创建示例 Python 项目结构

mkdir -p src/codex_bot tests
touch src/codex_bot/__init__.py
touch src/codex_bot/reviewer.py
touch src/codex_bot/utils.py
touch tests/test_reviewer.py
touch requirements.txt

实战:构建代码审查机器人

Step 1:编写待审查的示例代码

创建 src/codex_bot/utils.py,故意放入一些典型问题:

"""工具函数模块 - 包含待优化的代码示例"""
import os
import json

def load_config(path="config.json"):
    """加载配置文件"""
    f = open(path, "r")
    data = json.load(f)
    return data



def calc_discount(price, level):
    """计算折扣价格"""
    if level == "gold":
        return price * 0.8
    elif level == "silver":
        return price * 0.9
    elif level == "bronze":
        return price * 0.95
    else:
        return price



def fetch_user_data(user_id):
    """获取用户数据(模拟SQL查询)"""
    query = "SELECT * FROM users WHERE id = " + str(user_id)
    # TODO: 执行查询
    return {"id": user_id, "name": "test"}



def process_items(items):
    """处理列表数据"""
    result = []
    for i in range(len(items)):
        result.append(items[i] * 2)
    return result

这段代码包含以下典型问题:

  • 文件未关闭(资源泄漏)
  • 缺少类型注解
  • SQL 注入风险
  • 列表推导式可优化
  • 缺少异常处理

Step 2:使用 Codex Agent 进行审查

在终端中启动 Codex Agent 模式:

codex agent

然后输入自然语言指令:

审查 src/codex_bot/utils.py 文件,修复以下问题:- 确保文件正确关闭或使用 with 语句
- 添加类型注解
- 修复 SQL 注入漏洞,使用参数化查询
- 将 process_items 改为列表推导式
- 添加适当的异常处理
- 为所有函数添加文档字符串


修改完成后运行 tests/test_reviewer.py 确认没有破坏现有功能。

Step 3:观察 Agent 的自主执行过程

Codex Agent 会按以下流程自主工作:

[Agent] 分析任务目标...
[Agent] 读取 src/codex_bot/utils.py 文件内容
[Agent] 识别 6 处需要修改的位置
[Agent] 生成修复方案...

[Agent] 正在修改: 使用 with 语句确保文件关闭
[Agent] 正在修改: 添加类型注解
[Agent] 正在修改: 修复 SQL 注入漏洞
[Agent] 正在修改: 优化 process_items 为列表推导式
[Agent] 正在修改: 添加异常处理
[Agent] 正在修改: 完善文档字符串



[Agent] 运行测试: pytest tests/test_reviewer.py -v
[Agent] 测试通过,所有修改完成!

Step 4:查看 Agent 生成的优化代码

"""工具函数模块 - 代码审查优化后的版本"""
import os
import json
from typing import Any, Dict, List, Union

def load_config(path: str = "config.json") -> Dict[str, Any]:
    """加载 JSON 配置文件。



Args:
        path: 配置文件路径,默认为当前目录下的 config.json



Returns:
        解析后的配置字典



Raises:
        FileNotFoundError: 配置文件不存在时抛出
        json.JSONDecodeError: JSON 格式无效时抛出
    """
    try:
        with open(path, "r", encoding="utf-8") as f:
            return json.load(f)
    except FileNotFoundError:
        raise FileNotFoundError(f"配置文件未找到: {path}")
    except json.JSONDecodeError as e:
        raise json.JSONDecodeError(f"配置文件 JSON 格式错误: {e}")



def calc_discount(price: float, level: str) -> float:
    """根据会员等级计算折扣后价格。



Args:
        price: 原始价格,必须大于等于 0
        level: 会员等级,可选值为 "gold", "silver", "bronze"



Returns:
        折扣后的价格



Raises:
        ValueError: 价格小于 0 或会员等级无效时抛出
    """
    if price < 0:
        raise ValueError("价格不能为负数")



discount_map = {
        "gold": 0.8,
        "silver": 0.9,
        "bronze": 0.95,
    }



if level not in discount_map:
        raise ValueError(f"无效的会员等级: {level},可选值: {list(discount_map.keys())}")



return price * discount_map[level]



def fetch_user_data(user_id: int) -> Dict[str, Union[int, str]]:
    """安全地获取用户数据。



使用参数化查询防止 SQL 注入攻击。



Args:
        user_id: 用户唯一标识符



Returns:
        包含用户信息的字典



Raises:
        ValueError: user_id 无效时抛出
    """
    if not isinstance(user_id, int) or user_id <= 0:
        raise ValueError("user_id 必须是正整数")



# 使用参数化查询,彻底杜绝 SQL 注入
    query = "SELECT * FROM users WHERE id = %s"
    params = (user_id,)



# TODO: 使用 ORM 或数据库连接池执行查询
    # db.execute(query, params)



return {"id": user_id, "name": "test"}



def process_items(items: List[int]) -> List[int]:
    """将列表中的每个元素乘以 2。



Args:
        items: 整数列表



Returns:
        每个元素乘以 2 后的新列表
    """
    return [item * 2 for item in items]

Step 5:批量审查整个代码库

Codex Agent 支持对整个目录进行批量审查:

# 审查 src 目录下所有 Python 文件
codex agent --scope src/ \
  --prompt "审查所有 Python 文件,统一添加类型注解,修复安全问题,优化性能瓶颈"

Agent 会自动:

  • 遍历目录下所有匹配文件
  • 分析每份代码的质量问题
  • 按依赖关系排序修改顺序
  • 执行修改并运行测试验证

高级技巧:自定义审查规则

创建 .codex/rules.yaml

# Codex Agent 审查规则配置
code_review:
  # 强制要求
  required:- type_annotations: true
- docstrings: true
- error_handling: true


# 安全规则
  security:

- no_sql_injection: true
- no_hardcoded_secrets: true
- input_validation: true


# 性能规则
  performance:

- prefer_list_comprehension: true
- avoid_nested_loops: warn


# 风格规则
  style:

- line_length: 88
- import_order: google

在 Agent 指令中引用规则

使用 .codex/rules.yaml 中的规则审查 src/ 目录,
对不符合 required 规则的问题必须修复,
对 performance 和 style 规则的问题给出优化建议。

集成到 CI/CD 流水线

GitHub Actions 配置

# .github/workflows/codex-review.yml
name: Codex Auto Review

on:
  pull_request:
    paths:

- "src//*.py"


jobs:
  codex-review:
    runs-on: ubuntu-latest
    steps:

- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
        with:
          node-version: "20"- name: Install Codex CLI
run: npm install -g @openai/codex- name: Run Codex Agent Review
env:
          OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
        run: |
          codex agent \
            --scope ${{ github.event.pull_request.changed_files }} \
            --prompt "审查变更的代码文件,生成审查报告并输出到 codex-review.md" \
            --output codex-review.md- name: Upload Review Report
uses: actions/upload-artifact@v4
        with:
          name: codex-review-report
          path: codex-review.md

常见问题 FAQ

Q: Codex Agent 模式消耗多少 Token?

Agent 模式由于需要多次 API 调用(分析→规划→执行→验证),Token 消耗约为传统补全的 5-10 倍。建议为复杂任务预留充足的 API 配额。可以通过 --max-iterations 参数限制最大迭代次数。

Q: Agent 修改出错了怎么办?

Codex Agent 在执行前会自动创建 Git 分支或备份点。如果修改不满意,可以:

  • 使用 git diff 查看具体变更
  • 执行 git checkout . 回滚到修改前状态
  • 在指令中增加更多约束条件,重新运行 Agent Q: 是否支持私有代码库?

Codex CLI 支持本地模式(--local 参数),代码不会上传到 OpenAI 服务器,仅在本地环境运行。但功能会受到一定限制,建议根据代码敏感度选择合适的模式。

Q: Agent 模式和 Cursor Composer 有什么区别?

两者都是 AI 编程代理,但设计理念不同:

  • Codex Agent:OpenAI 官方工具,与 GPT-4o/5 深度集成,API 优先
  • Cursor Composer:编辑器内置功能,交互更流畅,适合日常开发

建议根据团队技术栈选择,也可以两者结合使用。

Q: 如何提升 Agent 的执行准确率?- 指令要具体:明确列出需要修改的点,避免模糊描述

  • 提供上下文:在指令中说明项目架构、技术约束
  • 分步执行:复杂任务拆分为多个小任务,降低出错概率
  • 配置规则文件:使用 .codex/rules.yaml 统一审查标准

总结

OpenAI Codex Agent 模式代表了 AI 编程工具的下一个进化阶段——从"辅助编码"到"自主执行"。通过本文的实战演练,你已经掌握了:

  • Agent 模式的核心概念与适用场景
  • 使用 Codex CLI 进行代码审查的完整流程
  • 自定义审查规则与 CI/CD 集成方法

随着大模型推理能力的持续提升,AI Agent 在软件开发中的角色将越来越重要。现在就开始在你的项目中尝试 Codex Agent,体验真正的 AI 驱动开发吧。