ChatGPT Plus/Pro 开通后 Codex 实战指南:从零开始到独立完成一个真实项目
1. 引言:Codex 到底是什么
很多朋友开通 ChatGPT Plus 或 Pro 之后,第一反应是去聊天窗口里问问题、写文案、翻译文档。但如果你是一名开发者,或者正在学习编程,那么有一个功能你绝对不能错过——那就是 Codex。
Codex 是 OpenAI 推出的 AI 编程智能体(Agent),它不是一个简单的代码补全工具,而是一个能够独立理解需求、规划任务、编写代码、运行调试、甚至提交 Git 的自动化编程助手。简单来说,你给它一个任务,它能像一名初级工程师一样,自己打开终端、创建文件、安装依赖、运行测试,然后告诉你结果。
本文将从零开始,带你了解开通 ChatGPT Plus/Pro 后如何快速上手 Codex,并通过一个真实的小项目,把整个开发流程完整走一遍。全程有代码、有实例、有踩坑记录,建议收藏后跟着操作。
2. 开通后第一步:找到 Codex 入口
2.1 网页端入口
登录 ChatGPT 网页版后,在左侧边栏可以看到一个名为 Codex 的入口(通常带有一个终端图标)。点击进入后,你会看到一个类似聊天窗口的界面,但底部输入框旁边多了一个「运行」按钮。
2.2 桌面应用入口
如果你安装了 ChatGPT 桌面客户端(Windows / macOS),同样可以在侧边栏找到 Codex。桌面端的优势在于,Codex 可以直接操作你本地的文件系统,读写项目文件。
2.3 云端沙箱与本地环境
Codex 提供两种运行环境:
- 云端沙箱(Cloud Sandbox):OpenAI 为你分配一台远程 Linux 虚拟机,Codex 在其中自由操作,适合快速验证想法,不污染本地环境。
- 本地环境(Local):Codex 通过命令行工具连接到你自己的电脑,直接在你的项目目录里干活,适合真实项目开发。
建议:刚开始学习时先用云端沙箱,熟悉操作后再切换到本地环境。
3. 第一次对话:让 Codex 帮你写一个 Python 脚本
3.1 明确需求
进入 Codex 界面后,直接在输入框里用自然语言描述你的需求。注意,需求描述越具体,Codex 的产出质量越高。
例如,我们让它写一个批量重命名文件的脚本:
请帮我写一个 Python 脚本,功能是批量重命名指定文件夹下的所有 .jpg 文件,新文件名格式为 photo_001.jpg、photo_002.jpg 这样的递增编号。要求支持命令行参数传入文件夹路径,并打印重命名前后的对照表。
3.2 观察 Codex 的执行过程
提交需求后,你会看到 Codex 开始「思考」并逐步执行:
- 它会在沙箱中创建一个工作目录;
- 自动生成
rename_files.py文件; - 写入代码;
- 创建测试图片文件并运行脚本验证;
- 最后向你汇报结果。
整个过程就像在看一个远程同事干活,非常直观。
3.3 查看生成的代码
Codex 生成的代码大致如下:
import os
import sys
from pathlib import Path
def batch_rename(folder: str) -> None:
"""批量重命名文件夹下的 .jpg 文件为递增编号。"""
folder_path = Path(folder)
if not folder_path.exists():
print(f"错误:文件夹不存在 - {folder}")
sys.exit(1)
jpg_files = sorted(folder_path.glob("*.jpg"))
if not jpg_files:
print("提示:该文件夹下没有 .jpg 文件。")
return
print("重命名对照表:")
for index, old_path in enumerate(jpg_files, start=1):
new_name = f"photo_{index:03d}.jpg"
new_path = old_path.with_name(new_name)
old_path.rename(new_path)
print(f" {old_path.name} -> {new_name}")
if __name__ == "__main__":
if len(sys.argv) != 2:
print("用法:python rename_files.py <文件夹路径>")
sys.exit(1)
batch_rename(sys.argv[1])
3.4 运行验证
Codex 会自动运行脚本并展示输出结果,你不需要手动复制代码到本地执行。如果脚本报错,它会自己读取错误信息、修复代码、重新运行,直到通过为止。
4. 实战项目:用 Codex 从零搭建一个待办事项 Web 应用
光写小脚本不过瘾,我们来做一个完整的 Web 应用。这个项目会用到 Flask(Python 轻量级 Web 框架)、SQLite 数据库和简单的 HTML 前端,非常适合作为 Codex 的入门实战。
4.1 向 Codex 描述项目需求
请帮我用 Flask 搭建一个待办事项(Todo List)Web 应用,要求:
1. 支持添加、删除、标记完成/未完成待办事项;
2. 数据持久化到 SQLite 数据库;
3. 页面使用简洁的 Bootstrap 风格样式;
4. 提供清晰的代码结构,包含 app.py、templates/index.html、requirements.txt;
5. 最后启动服务并验证功能可用。
4.2 Codex 的规划与执行
Codex 收到任务后,会先列出执行计划:
计划:
1. 创建项目目录 todo-app;
2. 初始化 requirements.txt 并安装 Flask;
3. 编写 app.py 实现后端 API 与页面渲染;
4. 编写 templates/index.html 前端页面;
5. 启动 Flask 服务,用 curl 测试接口;
6. 修复发现的问题并汇报。
然后它就开始逐项执行。你可以在界面上实时看到它敲入的命令和输出。
4.3 核心代码展示
app.py:
from flask import Flask, render_template, request, redirect, url_for
import sqlite3
from datetime import datetime
app = Flask(__name__)
DB_PATH = "todo.db"
def init_db():
"""初始化数据库表。"""
with sqlite3.connect(DB_PATH) as conn:
conn.execute("""
CREATE TABLE IF NOT EXISTS todos (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
completed INTEGER DEFAULT 0,
created_at TEXT NOT NULL
)
""")
@app.route("/")
def index():
"""首页:展示所有待办事项。"""
with sqlite3.connect(DB_PATH) as conn:
todos = conn.execute(
"SELECT * FROM todos ORDER BY completed ASC, id DESC"
).fetchall()
return render_template("index.html", todos=todos)
@app.route("/add", methods=["POST"])
def add_todo():
"""新增待办事项。"""
title = request.form.get("title", "").strip()
if title:
with sqlite3.connect(DB_PATH) as conn:
conn.execute(
"INSERT INTO todos (title, completed, created_at) VALUES (?, ?, ?)",
(title, 0, datetime.now().strftime("%Y-%m-%d %H:%M:%S")),
)
return redirect(url_for("index"))
@app.route("/toggle/<int:todo_id>")
def toggle_todo(todo_id):
"""切换完成状态。"""
with sqlite3.connect(DB_PATH) as conn:
conn.execute(
"UPDATE todos SET completed = 1 - completed WHERE id = ?",
(todo_id,),
)
return redirect(url_for("index"))
@app.route("/delete/<int:todo_id>")
def delete_todo(todo_id):
"""删除待办事项。"""
with sqlite3.connect(DB_PATH) as conn:
conn.execute("DELETE FROM todos WHERE id = ?", (todo_id,))
return redirect(url_for("index"))
if __name__ == "__main__":
init_db()
app.run(host="0.0.0.0", port=5000, debug=True)
templates/index.html:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>我的待办事项</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body class="bg-light">
<div class="container py-5" style="max-width: 640px;">
<h1 class="text-center mb-4">📝 我的待办事项</h1>
<form action="/add" method="post" class="d-flex gap-2 mb-4">
<input type="text" name="title" class="form-control" placeholder="输入新的待办事项..." required>
<button type="submit" class="btn btn-primary">添加</button>
</form>
<ul class="list-group">
{% for todo in todos %}
<li class="list-group-item d-flex justify-content-between align-items-center">
<div>
<a href="/toggle/{{ todo[0] }}" class="text-decoration-none {% if todo[2] %}text-decoration-line-through text-muted{% endif %}">
{{ todo[1] }}
</a>
<small class="d-block text-muted">{{ todo[3] }}</small>
</div>
<a href="/delete/{{ todo[0] }}" class="btn btn-sm btn-outline-danger">删除</a>
</li>
{% endfor %}
</ul>
</div>
</body>
</html>
requirements.txt:
flask==3.0.0
4.4 验证与交付
Codex 启动服务后,会用 curl 命令模拟请求,验证页面能正常返回、添加和删除功能正常。最终它会告诉你:
✅ 服务已启动:http://localhost:5000
✅ 添加功能测试通过
✅ 删除功能测试通过
✅ 数据库持久化验证通过
5. 进阶玩法:让 Codex 帮你调试和重构
Codex 不只是「写代码」的工具,它更擅长「改代码」。以下是几个高频场景:
5.1 报错修复
把报错信息直接粘贴给 Codex:
运行下面这段代码时报了 TypeError: unsupported operand type(s) for +: 'int' and 'str',请帮我修复:
def calc(a, b):
return a + b
print(calc(1, "2"))
Codex 会定位问题、解释原因并给出修复后的代码。
5.2 代码重构
请把下面这段面条式代码重构为使用函数和类型注解的清晰版本,并补充 docstring。
5.3 添加单元测试
请为 todo-app 项目编写 pytest 单元测试,覆盖添加、删除、切换状态三个核心接口,并运行测试确认全部通过。
6. 实用技巧与避坑指南
6.1 需求描述要具体
❌ 差:「帮我写个爬虫」
✅ 好:「帮我写一个 Python 爬虫,抓取某网站首页的新闻标题和链接,输出为 CSV 文件,要求使用 requests + BeautifulSoup,并处理请求超时异常。」
6.2 善用「继续」和「修正」
Codex 第一次给出的结果不满意时,不要重新开对话,直接在原对话里补充:
功能没问题,但我想把界面改成暗色主题,并且把数据库换成 PostgreSQL。
6.3 注意安全边界
- 不要在生产环境直接让 Codex 操作数据库或执行删除操作,先让它输出命令,你确认后再执行;
- 涉及 API 密钥、密码等敏感信息时,不要让 Codex 写入代码并提交到 Git;
- 本地模式下,Codex 拥有你电脑的文件读写权限,建议在独立项目目录中使用。
6.4 结合 Git 使用
让 Codex 帮你管理版本:
请把当前项目初始化 Git 仓库,创建 .gitignore 忽略 __pycache__ 和 *.db 文件,然后提交初始版本。
7. 总结:从「会用」到「用好」
开通 ChatGPT Plus/Pro 只是第一步,真正拉开差距的是你如何使用 Codex。回顾本文,我们完成了从「写一个脚本」到「搭建一个完整 Web 应用」的进阶,还掌握了调试、重构、测试等实战技巧。
最后给你三条建议:
- 从小任务开始:先让 Codex 写脚本、改 bug,熟悉它的工作方式;
- 把它当同事:需求讲清楚、反馈给到位,它就能帮你扛下大量重复劳动;
- 保持代码审美:Codex 生成代码后,自己读一遍、改一改,能力才会真正长在自己身上。
现在,打开你的 Codex,给它派第一个任务吧。
更多推荐



所有评论(0)