Appearance
Codex 的执行效果完全取决于你给的指令质量。本文从三个层面讲清楚怎么和 Codex 对话:一是 Prompt 怎么写(包含可复现步骤 + 验证方式);二是线程(Thread)是什么,本地线程和云端线程有什么区别;三是上下文窗口怎么管理,以及 Codex 的自动 compact 机制如何让长任务持续推进。
OpenAI Codex Prompting 指南
Prompt 怎么写
你通过发送 Prompt(用户消息)来告诉 Codex 要做什么。Codex 收到 Prompt 后进入执行循环:调用模型 → 执行动作(读文件、改文件、调工具等)→ 任务完成或你手动取消。
text
Explain how the transform module works and how other modules use it.text
Add a new command-line option `--json` that outputs JSON.两条关键原则:
给 Codex 可验证的任务:包含复现步骤、验证方式、运行 lint 和 pre-commit checks 的指令。Codex 能自我验证时,输出质量会明显更高。
拆小任务:复杂任务分成小步骤,每步更容易测试,你也更容易审查。不确定怎么拆时,可以先问 Codex 做个计划。
一个好 Prompt 的结构
text
Bug: 点击"保存"后有时显示"已保存"但实际没持久化
复现步骤:
1) npm run dev
2) 进入 /settings
3) 切换"Enable alerts"
4) 点击 Save
5) 刷新页面:toggle 重置了
约束:
- 不要改 API 格式
- 保持改动最小,能加回归测试更好
先本地复现这个 bug,然后给出 patch 并运行检查。这种结构能让 Codex 专注于目标,而不是猜你想要什么。
更多场景的完整示例参考:工作流示例
线程(Thread)
线程是一次完整的工作会话:你的 Prompt + 模型输出 + 工具调用。一个线程里可以有多轮对话——比如第一条让 Codex 实现功能,第二条让它补测试。
线程处于"运行中"状态时,Codex 正在积极处理任务。你可以同时运行多个线程,但要避免两个线程同时修改同一批文件。线程也可以暂停,之后继续发 Prompt 接着跑。
本地线程 vs 云端线程
| 类型 | 运行位置 | 适合场景 |
|---|---|---|
| 本地线程 | 你的机器上 | 直接读写本地文件、使用已有工具链 |
| 云端线程 | 隔离的云端环境 | 并行跑多个任务、在其他设备上分配任务 |
本地线程:Codex 可以读取和编辑你的文件、运行命令,改动立刻可见。为降低误操作风险,本地线程运行在沙箱中。
云端线程:在隔离的云端环境中运行。Codex 克隆你的仓库并切换到对应分支。使用前需先把代码推到 GitHub。也可以从本地机器分配云端任务,把当前工作状态一并传过去。
上下文(Context)
发 Prompt 时,你可以附上相关文件和图片作为上下文。Codex IDE 扩展会自动把当前打开的文件列表和选中的代码段作为上下文包含进去。
在执行过程中,Codex 还会从文件内容、工具输出、以及自动维护的"已做了什么 / 还需要做什么"记录中持续积累上下文。
上下文窗口与自动压缩
线程里的所有信息都必须放进模型的上下文窗口(不同模型容量不同)。Codex 会监控并提示剩余空间。
长任务中,Codex 可能会自动**压缩(compact)**上下文:保留关键信息的摘要,丢弃次要细节。经过多轮压缩,Codex 可以在复杂任务上持续推进很多步而不中断。
常见问题
Q: 我应该把整个 README 粘贴给 Codex 作为背景吗?
A: 不必要。Codex 会主动读取文件,最好的做法是直接引用文件路径(如 @README.md),而不是手动复制粘贴内容。给 Codex 明确的文件引用比大段粘贴的文本更有效。
Q: 本地线程和云端线程能同时跑吗?
A: 可以。但要注意两个线程不要同时修改同一批文件,否则会产生冲突。
Q: 上下文窗口满了之后 Codex 会停下来吗?
A: 不会,Codex 会自动 compact 上下文(保留关键摘要,丢弃次要信息),让任务可以持续推进。你也可以在任务开始前手动拆分成更小的步骤来节省上下文空间。