第七章 Codex 提示词Prompt实践
一、提示词基本结构

基本要素
#EslqTvhenKgo text { white-space: pre; }#EslqTvhenKgo .fb0 { stroke: var(--N900-FG, 0.15); }#EslqTvhenKgo .fb0 {stroke: rgba(31,35,41, 0.15)}#EslqTvhenKgo .fx0 { stroke-miterlimit: 10; }#EslqTvhenKgo .fx0 {stroke-miterlimit: 10}#EslqTvhenKgo .fa1 { fill: rgb(187, 191, 196); }#EslqTvhenKgo .fa1 {fill: rgb(187, 191, 196)}#EslqTvhenKgo .fx1 { font: 400 12px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#EslqTvhenKgo .fx1 {font-style: normal}#EslqTvhenKgo .fx2 { text-anchor: middle; }#EslqTvhenKgo .fx2 {text-anchor: middle}#EslqTvhenKgo .fx3 { dominant-baseline: central; }#EslqTvhenKgo .fx3 {dominant-baseline: central}#EslqTvhenKgo .fx4 { stroke: none; }#EslqTvhenKgo .fx4 {stroke: none}#EslqTvhenKgo .fc0 { fill: var(--text-caption); }#EslqTvhenKgo .fc0 {fill: #646a73}#EslqTvhenKgo .fa2 { fill: var(--text-link-disabled); }#EslqTvhenKgo .fa2 {fill: rgb(187, 191, 196)}#EslqTvhenKgo .fa3 { fill: rgb(225, 234, 255); }#EslqTvhenKgo .fa3 {fill: rgb(225, 234, 255)}#EslqTvhenKgo .fx5 { font: 700 18px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#EslqTvhenKgo .fx5 {font-style: normal}#EslqTvhenKgo .fx6 { text-anchor: start; }#EslqTvhenKgo .fx6 {text-anchor: start}#EslqTvhenKgo .fx7 { dominant-baseline: alphabetic; }#EslqTvhenKgo .fx7 {dominant-baseline: alphabetic}#EslqTvhenKgo .fc1 { fill: rgb(31, 35, 41); }#EslqTvhenKgo .fc1 {fill: rgb(31, 35, 41)}#EslqTvhenKgo .fx8 { font: 700 14px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#EslqTvhenKgo .fx8 {font-style: normal}#EslqTvhenKgo .fc2 { fill: rgb(51, 51, 51); }#EslqTvhenKgo .fc2 {fill: rgb(51, 51, 51)}#EslqTvhenKgo .fx9 { font: 400 14px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#EslqTvhenKgo .fx9 {font-style: normal}#EslqTvhenKgo .fb1 { fill: var(--N900-FG, 0.15); }#EslqTvhenKgo .fb1 {fill: rgba(31,35,41, 0.15)}#EslqTvhenKgo .fb2 { fill: rgb(212, 212, 212); }#EslqTvhenKgo .fb2 {fill: rgb(212, 212, 212)}#EslqTvhenKgo .fb3 { fill: rgb(232, 234, 246); }#EslqTvhenKgo .fb3 {fill: rgb(232, 234, 246)}#EslqTvhenKgo .fa4 { fill: var(--bg-body); }#EslqTvhenKgo .fa4 {fill: #fff}ABC12345要素说明示例任务描述上下文约束条件期望结果你想做什么相关背景信息限制和要求具体产出"实现用户登录功能""使用现有的 auth 模块""必须兼容现有 API""返回 JWT token"
结构化提示词
代码块
Markdown
# 任务描述
实现一个用户登录 API 端点
# 上下文
- 项目使用 FastAPI 框架
- 已有 auth 模块处理认证逻辑
- 数据库使用 PostgreSQL
# 约束条件
- 使用现有的 JWT 工具生成 token
- 密码使用 bcrypt 验证
- 需要添加请求日志
# 期望结果
- 路径:POST /api/auth/login
- 请求体:{"email": "...", "password": "..."}
- 成功响应:{"token": "...", "user": {...}}
- 失败响应:{"error": "..."}
二、任务拆解原则
拆解原则
😀
•
每个步骤有明确目标、步骤之间依赖关系清晰
•
每步完成后验证结果、遇到问题可以回退
拆解示例
代码块
Python
# 大任务
"实现完整的用户认证系统"
# 拆解成小任务
步骤 1:"设计认证系统的数据结构,包括用户表和 token 表"
步骤 2:"实现用户注册功能,包括密码加密和验证"
步骤 3:"实现用户登录功能,生成 JWT token"
步骤 4:"实现 token 验证中间件"
步骤 5:"实现用户登出功能"
步骤 6:"编写认证系统的测试"
步骤 7:"更新 API 文档"
使用 /plan 模式可以帮助 Codex 自动拆解复杂任务。
三、提供上下文信息
四、错误信息处理
五、图片输入
Codex 支持图片输入,适合视觉信息传递。
适用场景
图片输入方式
代码块
Python
# CLI
codex -i screenshot.png
codex --image design.png "根据设计稿实现页面"
六、迭代优化
通过迭代逐步优化代码质量。
迭代流程
😀
Codex 完成初步实现
检查结果,提出改进点
Codex 根据反馈调整
验证改进效果
迭代优化
代码块
Python
# 初步实现
"实现用户列表 API,支持分页"
# 检查后提出改进
"添加排序功能,支持按创建时间排序"
# 继续优化
"添加搜索功能,支持按用户名搜索"
# 性能优化
"优化查询性能,添加索引"
七、避免歧义
明确的提示词减少误解和返工。
歧义示例
代码块
Python
# 模糊的提示词(不好)
"修改那个函数"
# 明确的提示词(好)
"修改 src/utils/helper.py 中的 format_date 函数"
# 模糊的提示词(不好)
"让它更快"
# 明确的提示词(好)
"优化 query_users 函数,查询时间从 500ms 降低到 100ms 以内"
八、使用参考示例
提供参考代码或文档,帮助 Codex 理解期望风格。
代码块
Python
# 参考现有代码风格
"参考 src/api/products.py 的风格,实现用户 API"
# 参考文档
"按照 OpenAPI 规范文档 docs/api-spec.yaml 实现"
# 参考示例
九、常见提示词模板
功能开发模板
代码块
Python
在 [模块路径] 添加 [功能名称] 功能
要求:
- 使用 [技术/库]
- 兼容 [现有系统]
Bug 修复模板
代码块
Python
问题描述:[Bug 表现]
触发条件:[什么情况下出现]
错误信息:
[完整错误堆栈]
期望行为:[正确结果应该是什么]
请分析原因并修复,不要影响其他功能。
代码审查模板
代码块
Python
/review [范围] for [重点]
# 示例
/review src/auth/ for security issues
/review HEAD~5..HEAD for performance regressions
十、最佳实践总结
核心原则
•
明确具体,避免模糊表述
•
提供充分上下文
•
复杂任务拆解执行
•
迭代优化,逐步完善
•
验证结果,确保正确
效率技巧
•
使用 AGENTS.md 减少重复说明
•
利用 Skills 封装常用提示词
•
使用图片传递视觉信息
•
提供错误信息时要完整
十一、常见问题
Q: Codex 理解错了怎么办?
提供更明确的描述,补充上下文,或使用参考示例。
Q: 如何让 Codex 遵循项目规范?
创建 AGENTS.md 文件定义规范,Codex 会自动遵循。
Q: 复杂任务如何处理?
使用 /plan 模式制定计划,分步执行并验证。
Q: 图片输入有什么限制?
支持 PNG、JPG、WebP 格式,建议分辨率适中(不要太小或太大)。