Codex 已不再是简单的行级补全工具,而是能读代码库、规划任务、修改文件、运行测试、迭代修复的编码智能体。专业使用的核心是:约束上下文、定义验收标准、沙箱执行、人工审查 Diff。本文以 Codex CLI 为例,拆解实战工作流。
npm install -g @openai/codex
export OPENAI_API_KEY="sk-..."
codex --helpCodex 支持交互模式与 exec 非交互模式。生产环境建议开启沙箱与审批,避免误删文件或执行危险命令。
在仓库根目录放置 AGENTS.md,相当于给 Codex 的“项目宪法”:
# 项目约定
- 使用 Python 3.11 + pytest
- 禁止修改 migrations/ 与 secrets/
- 提交前必须运行 pytest -q
- 公共函数必须有类型注解
- 新功能先写测试,再实现这样 Codex 生成代码时会自动遵循团队规范,减少风格漂移。
假设要实现阶梯折扣,先给出明确任务:
codex exec "为 src/price.py 实现 calculate_discount,支持 normal/silver/gold,未知等级抛 ValueError;补充 pytest,运行 pytest -q 直到全部通过"Codex 会读取现有代码、生成实现与测试,并执行验证。示例产出:
Codex 已不再是简单的行级补全工具,而是能读代码库、规划任务、修改文件、运行测试、迭代修复的编码智能体。专业使用的核心是:约束上下文、定义验收标准、沙箱执行、人工审查 Diff。本文以 Codex CLI 为例,拆解实战工作流。
npm install -g @openai/codex
export OPENAI_API_KEY="sk-..."
codex --helpCodex 支持交互模式与 exec 非交互模式。生产环境建议开启沙箱与审批,避免误删文件或执行危险命令。
在仓库根目录放置 AGENTS.md,相当于给 Codex 的“项目宪法”:
# 项目约定
- 使用 Python 3.11 + pytest
- 禁止修改 migrations/ 与 secrets/
- 提交前必须运行 pytest -q
- 公共函数必须有类型注解
- 新功能先写测试,再实现这样 Codex 生成代码时会自动遵循团队规范,减少风格漂移。
假设要实现阶梯折扣,先给出明确任务:
bash
codex exec "为 src/price.py 实现 calculate_discount,支持 normal/silver/gold,未知等级抛 ValueError;补充 pytest,运行 pytest -q 直到全部通过"Codex 会读取现有代码、生成实现与测试,并执行验证。示例产出:
# src/price.py
from decimal import Decimal
def calculate_discount(amount: Decimal, tier: str) -> Decimal:
"""根据会员等级计算折扣后金额。"""
rates = {
"normal": Decimal("1.0"),
"silver": Decimal("0.95"),
"gold": Decimal("0.9"),
}
if tier not in rates:
raise ValueError(f"未知等级: {tier}")
return (amount * rates[tier]).quantize(Decimal("0.01"))# tests/test_price.py
import pytest
from decimal import Decimal
from src.price import calculate_discount
@pytest.mark.parametrize("amount,tier,expected", [
(Decimal("100"), "normal", Decimal("100.00")),
(Decimal("100"), "gold", Decimal("90.00")),
])
def test_calculate_discount(amount, tier, expected):
assert calculate_discount(amount, tier) == expected
def test_invalid_tier():
with pytest.raises(ValueError):
calculate_discount(Decimal("100"), "vip")将测试纳入 CI,确保 Codex 的修改可验证:
name: ci
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with: { python-version: '3.11' }
- run: pip install -r requirements.txt
- run: pytest -qCodex 可结合 CI 日志自动修复失败用例,形成“生成→测试→修复”闭环。
git worktree 让多个 Codex 任务互不干扰。Codex 的价值不在于“写得更快”,而在于把编码流程工程化:规范可注入、任务可验证、结果可审查。掌握这套方法,才能让 AI 真正成为可控、可交付的生产力工具。
# src/price.py
from decimal import Decimal
def calculate_discount(amount: Decimal, tier: str) -> Decimal:
"""根据会员等级计算折扣后金额。"""
rates = {
"normal": Decimal("1.0"),
"silver": Decimal("0.95"),
"gold": Decimal("0.9"),
}
if tier not in rates:
raise ValueError(f"未知等级: {tier}")
return (amount * rates[tier]).quantize(Decimal("0.01"))# tests/test_price.py
import pytest
from decimal import Decimal
from src.price import calculate_discount
@pytest.mark.parametrize("amount,tier,expected", [
(Decimal("100"), "normal", Decimal("100.00")),
(Decimal("100"), "gold", Decimal("90.00")),
])
def test_calculate_discount(amount, tier, expected):
assert calculate_discount(amount, tier) == expected
def test_invalid_tier():
with pytest.raises(ValueError):
calculate_discount(Decimal("100"), "vip")将测试纳入 CI,确保 Codex 的修改可验证:
name: ci
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with: { python-version: '3.11' }
- run: pip install -r requirements.txt
- run: pytest -qCodex 可结合 CI 日志自动修复失败用例,形成“生成→测试→修复”闭环。
git worktree 让多个 Codex 任务互不干扰。Codex 的价值不在于“写得更快”,而在于把编码流程工程化:规范可注入、任务可验证、结果可审查。掌握这套方法,才能让 AI 真正成为可控、可交付的生产力工具。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。