Codex 提示词最佳实践

同样的 Codex,提示词写得好不好,结果差很多。本章给出一套可复用的指令结构与技巧,App、CLI、IDE 通用。


一个好指令的结构

[目标] 要达成什么、产出什么
[约束] 不要碰什么、必须遵守什么
[上下文] 相关文件/目录、现有约定(用 @ 提及)
[验证] 怎么算完成(跑哪个测试、看什么输出)
[汇报] 完成后告诉我什么

示例:

为 src/api/users.ts 添加分页支持(目标)。
沿用现有的 Zod 校验与错误处理风格,不要改公共返回结构(约束)。
参考 @src/api/posts.ts 的分页实现(上下文)。
完成后运行 `npm test -- users` 直到通过(验证)。
最后列出改动的文件清单(汇报)。

七条高命中率技巧

  1. 先约束,后目标:先写「不要 force push、不要改 lockfile」,再说要做什么——禁止项最容易被忽略,放前面更稳。
  2. 给可验证的完成标准:「测试通过」「diff 仅含 .ts 文件」比「做好它」有用得多。
  3. @ 提供锚点@文件/目录 让它读对地方,少走弯路;GUI 任务用 @应用名
  4. 分阶段:复杂任务先让它只读规划给方案,确认后再让它执行(见 工作流)。
  5. 一次一个目标:把「重构 + 加功能 + 升级依赖」拆成多个线程/任务,别揉成一坨。
  6. 把反复纠正的规则写进 AGENTS.md:同一类错误纠正一次就固化,别每次重复。
  7. 要它先复述计划:「先给执行计划,不要改文件,等我确认」——便于早发现误解。

善用结构化输入

  • 图片/截图:还原 UI、复现视觉 bug 时附图(CLI 用 -i/--image,App/macOS 用 Appshots)
  • 粘贴报错:直接贴完整 stack trace,比口头描述准
  • 指定输出格式:要 JSON / Markdown 表格 / 清单时明确说,方便后续处理

反例对照

❌ 含糊✅ 明确
「优化一下这段代码」「把 parseConfig 的 O(n²) 查找改为 Map,保持签名不变,补一个基准测试」
「修复测试」「运行 pytest tests/auth,仅修复失败用例,不改被测实现的公共接口」
「加个接口」「按 @routes/posts.py 的注册方式加 GET /health 返回 {status:ok},补单测」

让长任务不跑偏

  • Goal 模式设定持续目标(/goal
  • 在 AGENTS.md 写清「测试命令、目录边界、红线」
  • 中途用 /status 看上下文用量,必要时 /compact 压缩历史
  • 发现方向不对,及时打断并补充约束,而不是等它跑完

CLI 用户的额外技巧

  • 把常用长指令做成 Skill$name 一键触发),见 Agent Skills
  • 一次性任务用 codex exec "...",可管道接其他工具
  • -c 临时调模型/强度配合不同难度的提示

更系统的 CLI 提示技巧见 命令行工具


下一步