写好 Codex 提示词
你通过发送 prompts(用户消息)和 Codex 交互。Prompt 描述你希望它做什么。
提示词
你通过发送 prompts(用户消息)和 Codex 交互。Prompt 描述你希望它做什么。
示例 prompts:
请解释 transform module 是如何工作的,以及其他模块如何使用它。请添加一个新的命令行选项 `--json`,用于输出 JSON。当你提交 prompt 后,Codex 会进入一个循环:它调用模型,然后执行模型输出指示的动作,例如读取文件、编辑文件和调用工具。这个过程会在任务完成或你取消任务时结束。
和 ChatGPT 一样,Codex 的效果取决于你给它的指令质量。下面是一些有用建议:
- 当 Codex 能验证自己的工作时,输出质量更高。请包含复现问题、验证功能、运行 lint 和 pre-commit checks 的步骤。
- 当你把复杂工作拆成更小、更聚焦的步骤时,Codex 处理得更好。小任务更容易让 Codex 测试,也更容易让你 review。如果你不确定怎么拆任务,可以让 Codex 先提出计划。
更多 prompting Codex 的想法见 workflows:
https://developers.openai.com/codex/workflows
线程
Thread(线程)是一个单独 session:包含你的 prompt,以及随后产生的模型输出和 tool calls。
一个 thread 可以包含多个 prompts。例如,第一个 prompt 让 Codex 实现某个功能,后续 prompt 让它添加测试。
当 Codex 正在 actively working(主动处理)一个 thread 时,这个 thread 被称为 running。
你可以同时运行多个 threads,但要避免让两个 threads 修改同一批文件。
你也可以稍后 resume(恢复)一个 thread,通过继续发送 prompt 让它接着做。
Threads 可以在本地运行,也可以在云端运行:
- Local threads:在你的机器上运行。Codex 可以读取和编辑你的文件,并运行命令,所以你能看到改动,也能使用现有工具。为了降低 workspace 外发生非预期改动的风险,local threads 会运行在 sandbox 中: https://developers.openai.com/codex/agent-approvals-security
- Cloud threads:在隔离 environment 中运行。Codex 会 clone 你的 repository,并 checkout 它正在处理的 branch。Cloud threads 适合并行运行工作,或从另一台设备委托任务。要让 cloud threads 使用你的 repo,需要先把代码 push 到 GitHub。你也可以从本机委托任务,并带上当前工作状态:
- Environment:https://developers.openai.com/codex/cloud/environments
- Delegate local tasks:https://developers.openai.com/codex/ide/cloud-tasks
在 Codex app 中,你也可以不选择 project,直接开始 chat。
这些 chats 不绑定到保存过的 repository 或 project folder。它们适合 research、planning、connected-tool workflows,或其他不应该从代码库开始的工作。
Chats 会使用 Codex 管理的 threads 目录作为工作位置。默认位置是:
~/.codex/threads如果要修改这个状态的基础位置,可以设置 CODEX_HOME。见 Config and state locations:
https://developers.openai.com/codex/config-advanced#config-and-state-locations
上下文
提交 prompt 时,请包含 Codex 可以使用的 context(上下文),例如相关文件和图片引用。
Codex IDE extension 会自动把 open files(已打开文件)列表和 selected text range(选中的文本范围)作为上下文。
Agent 工作过程中,也会从文件内容、tool output 和持续记录中收集上下文。这个记录包括它已经做了什么,以及接下来还需要做什么。
一个 thread 中的所有信息都必须放进模型的 context window(上下文窗口)。不同模型的窗口大小不同。Codex 会监控并报告剩余空间。
对于更长的任务,Codex 可能会自动 compact(压缩)上下文:总结相关信息,并丢弃不太相关的细节。通过多次 compaction,Codex 可以继续处理跨很多步骤的复杂任务。