1. 引言

2026 年,OpenAI 的 ChatGPT 与 Codex 已经深度融合,成为开发者日常工作中不可或缺的 AI 搭档。无论是 Plus 还是 Pro 订阅用户,都能借助 Codex 在 IDE、终端和云端完成从需求分析、代码生成、调试修复到自动化测试的完整闭环。

本文不涉及任何充值或订阅购买相关内容,而是聚焦技术实战:如何用 ChatGPT Plus / Pro 搭配 Codex 高效完成真实开发任务。全文约 3000 字,包含可运行的代码示例,适合已经拥有订阅、希望把 AI 编程能力真正用起来的开发者。

2. 环境准备与工具链

2.1 订阅能力差异(技术视角)

从技术能力上看,Plus 与 Pro 在 Codex 的使用上主要有以下差异:

能力项PlusPro
Codex 云端任务并发数较低更高
单次代码库扫描规模中等更大
高级推理模型调用额度标准增强
长时后台任务受限更宽松

注意:以上为技术能力层面的典型差异,具体以官方最新说明为准。本文示例在 Plus 与 Pro 上均可运行,仅在处理超大规模代码库时体验不同。

2.2 安装 Codex CLI

Codex CLI 是连接 ChatGPT 账号与本地开发环境的核心工具。安装方式如下:

# 使用 npm 全局安装
npm install -g @openai/codex

# 验证安装
codex --version

安装完成后,执行一次登录:

codex login

登录成功后,Codex 会读取你的 ChatGPT Plus / Pro 订阅权限,自动启用对应的模型能力。

2.3 在 IDE 中使用 Codex

以 VS Code 为例,安装官方扩展:

code --install-extension openai.chatgpt

安装后在侧边栏打开 ChatGPT 面板,选择 Codex 模式,即可在编辑器内直接对话、选中代码提问、生成 diff 并应用。

3. 用 Codex 生成完整项目骨架

3.1 需求描述

我们从一个真实需求开始:构建一个 Python 命令行工具,用于批量重命名文件并生成操作日志。

3.2 对话式生成

在 Codex 中直接输入:

请帮我生成一个 Python CLI 工具,功能如下:
1. 递归遍历指定目录下的所有文件
2. 支持按扩展名过滤
3. 将文件名中的空格替换为下划线
4. 支持 --dry-run 参数,只预览不实际执行
5. 每次执行后生成 JSON 格式的日志文件

Codex 会结合当前工作区上下文,生成如下代码:

#!/usr/bin/env python3
"""批量文件重命名工具。"""

import argparse
import json
import logging
from pathlib import Path
from datetime import datetime

logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s")
logger = logging.getLogger(__name__)


def collect_files(root: Path, ext: str | None) -> list[Path]:
    """递归收集符合条件的文件。"""
    files = []
    for path in root.rglob("*"):
        if path.is_file():
            if ext is None or path.suffix == ext:
                files.append(path)
    return files


def build_rename_plan(files: list[Path]) -> list[dict]:
    """生成重命名计划。"""
    plan = []
    for src in files:
        new_name = src.name.replace(" ", "_")
        dst = src.with_name(new_name)
        if src != dst:
            plan.append({"src": str(src), "dst": str(dst)})
    return plan


def apply_plan(plan: list[dict], dry_run: bool) -> None:
    """执行或预览重命名计划。"""
    for item in plan:
        src = Path(item["src"])
        dst = Path(item["dst"])
        if dry_run:
            logger.info("[预览] %s -> %s", src.name, dst.name)
        else:
            src.rename(dst)
            logger.info("[执行] %s -> %s", src.name, dst.name)


def write_log(plan: list[dict], dry_run: bool) -> None:
    """写入 JSON 日志。"""
    log_entry = {
        "timestamp": datetime.now().isoformat(),
        "dry_run": dry_run,
        "count": len(plan),
        "items": plan,
    }
    log_path = Path("rename_log.json")
    with log_path.open("w", encoding="utf-8") as f:
        json.dump(log_entry, f, ensure_ascii=False, indent=2)
    logger.info("日志已写入 %s", log_path)


def main() -> None:
    parser = argparse.ArgumentParser(description="批量重命名文件")
    parser.add_argument("directory", type=Path, help="目标目录")
    parser.add_argument("--ext", type=str, default=None, help="扩展名过滤,如 .txt")
    parser.add_argument("--dry-run", action="store_true", help="仅预览不执行")
    args = parser.parse_args()

    if not args.directory.is_dir():
        logger.error("目录不存在: %s", args.directory)
        raise SystemExit(1)

    files = collect_files(args.directory, args.ext)
    plan = build_rename_plan(files)
    apply_plan(plan, args.dry_run)
    write_log(plan, args.dry_run)


if __name__ == "__main__":
    main()

3.3 运行验证

# 预览模式
python rename_tool.py ./test_dir --ext .txt --dry-run

# 实际执行
python rename_tool.py ./test_dir --ext .txt

执行后查看生成的日志:

cat rename_log.json

4. 用 Codex 调试与修复 Bug

4.1 构造一个 Bug

假设我们有一个计算订单折扣的函数:

def calc_discount(price: float, level: str) -> float:
    """根据会员等级计算折扣价。"""
    if level == "gold":
        return price * 0.8
    elif level == "silver":
        return price * 0.9
    else:
        return price

4.2 让 Codex 审查

在 Codex 中选中上述代码,输入:

请审查这个函数,找出潜在问题并给出修复建议。

Codex 会指出:

  1. 缺少对 price 为负数的校验;
  2. 未处理 level 大小写不一致的问题;
  3. 建议使用字典映射替代 if-elif 链。

4.3 应用修复

def calc_discount(price: float, level: str) -> float:
    """根据会员等级计算折扣价。"""
    if price < 0:
        raise ValueError("price 不能为负数")

    discount_map = {
        "gold": 0.8,
        "silver": 0.9,
    }
    rate = discount_map.get(level.lower(), 1.0)
    return price * rate

通过对话式审查,Codex 帮助我们快速定位边界条件问题,并给出更简洁的实现。

5. 用 Codex 编写单元测试

5.1 自动生成测试

选中 calc_discount 函数,输入:

请为这个函数生成 pytest 单元测试,覆盖正常、边界和异常情况。

Codex 生成:

import pytest


def test_gold_discount():
    assert calc_discount(100, "gold") == 80.0


def test_silver_discount():
    assert calc_discount(100, "silver") == 90.0


def test_normal_discount():
    assert calc_discount(100, "normal") == 100.0


def test_case_insensitive():
    assert calc_discount(100, "GOLD") == 80.0


def test_negative_price():
    with pytest.raises(ValueError):
        calc_discount(-1, "gold")

5.2 运行测试

pytest test_discount.py -v

6. 用 Codex 重构遗留代码

6.1 原始代码

def process(data):
    result = []
    for item in data:
        if item["type"] == "a":
            result.append(item["value"] * 2)
        elif item["type"] == "b":
            result.append(item["value"] * 3)
        else:
            result.append(item["value"])
    return result

6.2 重构指令

请将这段代码重构为策略模式,并保持行为完全一致。

6.3 重构结果

from typing import Callable


def double(v: int) -> int:
    return v * 2


def triple(v: int) -> int:
    return v * 3


def identity(v: int) -> int:
    return v


STRATEGIES: dict[str, Callable[[int], int]] = {
    "a": double,
    "b": triple,
}


def process(data: list[dict]) -> list[int]:
    return [STRATEGIES.get(item["type"], identity)(item["value"]) for item in data]

重构后代码更易扩展:新增类型只需在 STRATEGIES 中注册即可。

7. 用 Codex 生成 Mermaid 架构图

在撰写技术文档时,Codex 可以直接生成 Mermaid 图。例如输入:

请用 Mermaid 画一个 Codex 处理任务的流程图。

生成结果:

开发者输入需求

Codex 解析上下文

是否需要读取代码库

扫描工作区文件

直接生成方案

生成代码 Diff

开发者审查

是否通过

应用修改

反馈修改意见

8. 实战技巧与最佳实践

8.1 善用工作区上下文

Codex 会读取当前工作区的文件结构。在提问时明确指定相关文件,能显著提升生成质量:

请参考 src/models/user.py 和 src/services/auth.py,帮我实现登录接口。

8.2 分步确认

对于大型改动,建议分步执行:

  1. 先生成整体方案;
  2. 确认后再生成代码;
  3. 最后生成测试。

8.3 使用 --dry-run 预览

在终端使用 Codex 时,可以先预览改动:

codex "为所有 API 路由添加速率限制" --dry-run

8.4 结合 Git 管理

每次应用 Codex 的改动前,先提交当前版本:

git add -A && git commit -m "before codex changes"

这样即使生成结果不理想,也能随时回退。

9. 总结

ChatGPT Plus / Pro 与 Codex 的组合,已经将 AI 编程从「问答式辅助」推进到「深度协作式开发」。通过本文的实战可以看到:

  • Codex 能快速生成完整项目骨架;
  • 能辅助调试、审查代码质量;
  • 能自动生成单元测试;
  • 能安全地重构遗留代码;
  • 还能直接产出架构图文档。

关键在于:把 Codex 当作结对编程伙伴,而不是简单的代码生成器。通过清晰的需求描述、分步确认和 Git 版本管理,AI 编程的效率和可靠性都能得到质的提升。

希望本文的实战经验能帮助你更好地发挥 ChatGPT Plus / Pro + Codex 的潜力,让日常开发更高效。

Logo

AtomGit AI 社区提供模型库、数据集、Agent、Token等资源

更多推荐