ChatGPT Plus / Pro 开通后,Codex 到底该怎么玩?——从命令行到 IDE 的深度实战手册(2026-09-01)
1. 引言
2026 年,OpenAI 的 ChatGPT 与 Codex 已经深度融合,成为开发者日常工作中不可或缺的 AI 搭档。无论是 Plus 还是 Pro 订阅用户,都能借助 Codex 在 IDE、终端和云端完成从需求分析、代码生成、调试修复到自动化测试的完整闭环。
本文不涉及任何充值或订阅购买相关内容,而是聚焦技术实战:如何用 ChatGPT Plus / Pro 搭配 Codex 高效完成真实开发任务。全文约 3000 字,包含可运行的代码示例,适合已经拥有订阅、希望把 AI 编程能力真正用起来的开发者。
2. 环境准备与工具链
2.1 订阅能力差异(技术视角)
从技术能力上看,Plus 与 Pro 在 Codex 的使用上主要有以下差异:
| 能力项 | Plus | Pro |
|---|---|---|
| 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 会指出:
- 缺少对
price为负数的校验; - 未处理
level大小写不一致的问题; - 建议使用字典映射替代
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 处理任务的流程图。
生成结果:
8. 实战技巧与最佳实践
8.1 善用工作区上下文
Codex 会读取当前工作区的文件结构。在提问时明确指定相关文件,能显著提升生成质量:
请参考 src/models/user.py 和 src/services/auth.py,帮我实现登录接口。
8.2 分步确认
对于大型改动,建议分步执行:
- 先生成整体方案;
- 确认后再生成代码;
- 最后生成测试。
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 的潜力,让日常开发更高效。
更多推荐




所有评论(0)