Codex: Codex 提示词最佳实践
最后更新:2026-08-31
Prompt 是你与 Codex 沟通的桥梁。好的 Prompt 让 Codex 一次到位,差的 Prompt 则需要反复修正。
📋 前置知识:了解 Codex 基本操作
1. 你将学到
- 有效 Prompt 的核心原则
- 结构化描述方法
- 上下文提供技巧
- 常见 Prompt 模板
2. 核心原则
(1) CLEAR 原则
| 原则 | 说明 | 示例 |
|---|---|---|
| Context | 提供上下文 | "参考 auth.py 的风格" |
| Limit | 限定范围 | "只修改 src/api/ 目录" |
| Example | 给出示例 | "输出格式参照 types.ts" |
| Assert | 包含验证 | "确保 npm test 通过" |
| Reason | 说明原因 | "因为需要支持 Unicode" |
(2) 好与差的对比
TEXT
📖 仅展示
# 差的 Prompt
"帮我写个函数"
# 好的 Prompt
"在 src/utils/date.ts 中创建 formatDate 函数,
输入 Date 对象和 locale 字符串,
输出本地化日期字符串,
参考同文件中 formatNumber 的风格,
包含空值处理和单元测试。"
3. 结构化描述
(1) 标准结构
TEXT
📖 仅展示
[目标]:要完成什么
[范围]:修改哪些文件/目录
[参考]:参考哪些已有代码
[约束]:需要遵循什么规则
[验证]:如何验证完成
▶ 示例 1: Alice 的结构化 Prompt
TEXT
📖 仅展示
[目标] 添加用户密码重置功能
[范围] src/auth/reset.ts, src/api/reset.ts
[参考] src/auth/login.ts 的代码风格
[约束] 使用 bcrypt 哈希,令牌有效期 1 小时
[验证] npm test -- --grep "reset" 全部通过
(2) 分步指令
对于复杂任务,分步描述:
TEXT
📖 仅展示
第一步:创建 PasswordReset 模型,包含 token、expires_at、user_id 字段
完成后告诉我,我会确认再继续。
第二步:实现 POST /api/auth/reset-request 端点
第三步:实现 POST /api/auth/reset-confirm 端点
第四步:为所有端点写集成测试
4. 上下文提供技巧
(1) 精准引用
TEXT
📖 仅展示
# 好的做法:引用具体文件
> 参考 src/models/user.ts 的 User 类型定义,添加 Profile 类型
# 差的做法:笼统描述
> 参考已有的模型,添加新的
(2) 附件补充
TEXT
📖 仅展示
# 在 App 中附加图片
> 参照截图中的 UI 布局,实现这个页面
# 引用错误日志
> cat error.log 的输出如下:
> TypeError: Cannot read property 'id' of undefined
> 修复这个错误
(3) 环境说明
TEXT
📖 仅展示
> 项目使用 Next.js 14 + App Router + TypeScript
> 数据库用 Prisma ORM + PostgreSQL
> 测试框架是 Vitest
> 为新页面添加 CRUD 功能
5. 验证指令
(1) 测试验证
TEXT
📖 仅展示
# 要求运行测试
> 确保 npm test 通过
> 运行 pytest,修复所有失败用例
> 测试覆盖率不低于 80%
(2) 类型检查
TEXT
📖 仅展示
> 确保 tsc --noEmit 无错误
> 添加完整的 TypeScript 类型注解
(3) Lint 检查
TEXT
📖 仅展示
> 确保 eslint 无错误
> 修复所有 lint 警告
▶ 示例 2: Bob 的完整验证
TEXT
📖 仅展示
为 orders API 添加分页功能:
1. 修改 GET /api/orders 端点
2. 支持 page 和 pageSize 查询参数
3. 返回分页元数据
4. 确保 tsc --noEmit 无错误
5. 确保 eslint 无错误
6. npm test 全部通过
7. 新增测试覆盖分页逻辑
6. 常见 Prompt 模板
(1) 修复 Bug
TEXT
📖 仅展示
修复 <文件> 中的 <Bug描述>。
错误信息:<粘贴错误日志>
期望行为:<正确行为>
确保 <验证命令> 通过。
(2) 添加功能
TEXT
📖 仅展示
在 <模块> 添加 <功能>。
参考 <已有文件> 的代码风格。
包含输入验证和错误处理。
编写单元测试,确保 <验证命令> 通过。
(3) 重构代码
TEXT
📖 仅展示
将 <旧实现> 重构为 <新实现>。
保持对外接口不变。
确保所有现有测试通过。
添加新测试覆盖新实现。
(4) 代码审查
TEXT
📖 仅展示
审查 <文件/PR>,关注:
1. 安全漏洞(SQL注入、XSS等)
2. 性能问题(N+1查询、内存泄漏等)
3. 代码风格一致性
4. 错误处理完整性
5. 测试覆盖率
(5) 文档生成
TEXT
📖 仅展示
为 <模块/API> 生成文档:
- API 接口文档(Markdown 格式)
- 使用示例(包含 curl 命令)
- 参数说明表格
- 错误码列表
7. 高级技巧
(1) 角色设定
TEXT
📖 仅展示
你是一个资深安全工程师,专注于 Web 安全。
审查以下代码中的安全漏洞,按 OWASP Top 10 分类。
(2) 输出格式控制
TEXT
📖 仅展示
按以下格式输出:
1. 每个问题一行
2. 格式:[严重程度] 文件:行号 - 问题描述
3. 严重程度:🔴严重 🟡中等 🟢低
4. 最后给出修复优先级排序
(3) 约束条件
TEXT
📖 仅展示
只使用项目已有的依赖,不要安装新包。
不要修改 .env 文件。
不要删除现有测试。
所有新函数必须有 TypeScript 类型注解。
❓ 常见问题
Q Prompt 用中文还是英文?
A Codex 支持多语言,但英文效果通常更好。复杂任务建议用英文,简单任务中文即可。
Q Prompt 太长会不会影响效果?
A 不会。详细描述比简短描述效果好。但要注意不要超出上下文窗口。
Q 可以一次性给多个任务吗?
A 可以,但建议按优先级排列,或明确分步执行。一次性太多任务可能导致 Codex 遗漏。
Q 如何让 Codex 遵循特定代码风格?
A 在 AGENTS.md 中定义风格规则,或在 Prompt 中引用风格参考文件。也可以引用 ESLint/Prettier 配置。
Q Prompt 中可以引用 URL 吗?
A Codex 无法直接访问 URL,但你可以把 URL 中的关键内容复制粘贴到 Prompt 中。
📖 小节
- CLEAR 原则:Context / Limit / Example / Assert / Reason
- 结构化描述:目标 + 范围 + 参考 + 约束 + 验证
- 上下文提供:精准引用文件 + 附加截图/日志
- 验证指令:测试 + 类型检查 + Lint
- 模板化 Prompt 提升效率
📝 作业
- 基础题(难度⭐):用 CLEAR 原则写 3 个不同场景的 Prompt。
- 进阶题(难度⭐⭐):创建你自己的 Prompt 模板库,覆盖 5 种常见场景。
- 挑战题(难度⭐⭐⭐):对比同一个任务用"好的 Prompt"和"差的 Prompt"的执行效果差异,写一份分析报告。