Getting Started

提示方式

解释如何给 Codex 清晰目标、上下文、约束和验证方式。

Prompts

你通过发送 prompts 与 Codex 交互。Prompt 是描述你希望 Codex 完成什么的 user message。

示例 prompts:

Explain how the transform module works and how other modules use it.
Add a new command-line option `--json` that outputs JSON.

当你提交 prompt 后,Codex 会以循环方式工作:它调用 model,然后执行 model output 指示的动作,例如读取文件、编辑文件和调用工具。这个过程会在任务完成或你取消任务时结束。

与 ChatGPT 一样,Codex 的效果取决于你给出的 instructions。下面是一些我们认为有帮助的 Codex prompting 建议:

当 Codex 能够验证自己的工作时,输出质量会更高。请包含复现问题、验证功能、运行 linting 和 pre-commit checks 的步骤。

当你把复杂工作拆成更小、更聚焦的步骤时,Codex 更容易处理。较小的任务更容易让 Codex 测试,也更容易让你 review。如果不确定如何拆分任务,可以让 Codex 提出计划。

想获得更多关于 Codex prompting 的思路,请参考 workflows

Threads

Thread 是一次单独的 session:包括你的 prompt,以及随后产生的 model outputs 和 tool calls。一个 thread 可以包含多个 prompts。例如,第一个 prompt 可以要求 Codex 实现一个功能,后续 prompt 可以要求它添加 tests。

当 Codex 正在主动处理某个 thread 时,这个 thread 会被称为 “running”。你可以同时运行多个 threads,但应避免让两个 threads 修改同一批文件。你也可以稍后通过追加另一个 prompt 来继续一个 thread。

Threads 可以在本地运行,也可以在 cloud 中运行:

Local threads 在你的机器上运行。Codex 可以读取和编辑你的文件,也可以运行 commands,因此你能看到发生了什么变化,并使用现有工具。为了降低 workspace 外发生非预期更改的风险,local threads 会在 sandbox 中运行。

Cloud threads 在隔离环境中运行。Codex 会 clone 你的 repository,并 checkout 它正在处理的 branch。当你希望并行运行工作,或从另一台设备委派任务时,cloud threads 很有用。要让 cloud threads 使用你的 repo,请先把代码 push 到 GitHub。你也可以从本地机器 delegate tasks,这会包含你当前的 working state。

在 Codex app 中,你也可以在不选择 project 的情况下开始 chat。Chats 不绑定到已保存的 repository 或 project folder。它们适用于 research、planning、connected-tool workflows,或其他不应从 codebase 开始的工作。Chats 会使用 Codex home 下由 Codex 管理的 threads directory 作为 working location。默认情况下,该位置是 ~/.codex/threads。要更改这个 state 的基础位置,请设置 CODEX_HOME;参见 Config and state locations

Context

提交 prompt 时,请包含 Codex 可以使用的 context,例如对相关文件和图片的引用。Codex IDE extension 会自动把打开文件列表和所选文本范围作为 context 包含进去。

当 agent 工作时,它还会从 file contents、tool output,以及一份持续记录已完成工作和待办事项的记录中收集 context。

Thread 中的所有信息都必须放进 model 的 context window,而 context window 会因 model 而异。Codex 会监控并报告剩余空间。对于更长的任务,Codex 可能会自动 compact context:总结相关信息,并丢弃较不相关的细节。经过多次 compaction 后,Codex 也可以在许多步骤中继续处理复杂任务。

Goal mode

Goal mode 会给 Codex 一个可跨越较长任务持续推进的 persistent objective。当工作可能需要很多步骤,或者 Codex 需要一个可以在工作过程中反复检查的明确完成定义时,请使用它。

Codex app 的目标进度控件位于输入框上方

设置 goal 后,goal text 既是起始 prompt,也是 completion criteria。Codex 会用它决定下一步该做什么,以及任务是否已经完成。可以在 Codex app IDE extension CLI 中使用 /goal 启动 Goal mode。

如果 slash command list 中没有出现 /goal,请在 config.toml 中启用 features.goals:

[features] goals = true

你也可以从 CLI 运行 codex features enable goals,或者让 Codex 帮你运行它。在 Codex app 中,progress 会显示在 composer 上方,并提供 pause、resume、edit 或 clear goal 的控件。

编写 goals 时,要让 Codex 能判断自己是否已经成功。好的 goals 会包含具体结果、可衡量目标或 test criteria。例如:

Migrate this codebase from JavaScript to TypeScript. The app should compile in strict mode without explicit `any` type definitions.
Reduce the time to interactive of the home page to below 1 second.

如果 goal 很难一开始就定义清楚,可以先从 /plan 开始,请 Codex 在 implementation 前帮你塑形。你也可以让 Codex 访谈你,并起草一个带有清晰 success criteria 的 goal。

Goal 启动后,你仍然可以继续 steering Codex。发送 follow-up messages 来调整约束,例如要求 Codex 使用某个特定 library,或避免某种 approach。当你想获得状态 recap 或解释、但不想打断主任务时,可以使用 side chats。对于 long-running work,请在失去连接前 pause goal,等准备好继续时再 resume 或 edit。

站内延伸阅读