提示词
你可以通过发送描述你希望其执行的操作的提示(用户消息)来与 Codex 进行交互。
示例提示:
Explain how the transform module works and how other modules use it.
Add a new command-line option `--json` that outputs JSON.
当你提交提示后,Codex 会循环执行以下操作:调用模型,然后执行模型输出所指示的动作,例如文件读取、文件编辑和工具调用。当任务完成或你取消任务时,此过程结束。
与 ChatGPT 一样,Codex 的效果取决于你提供的指令。以下是我们总结的一些对编写 Codex 提示有帮助的技巧:
- 当 Codex 能够验证其自身工作时,会输出更高质量的结果。请包含重现问题的步骤、功能验证的方法,并运行 lint 和预提交检查。
- 当您将复杂工作分解为更小、更聚焦的步骤时,Codex 能处理得更好。较小的任务更便于 Codex 测试,也便于您审查。如果您不确定如何拆分任务,可以让 Codex 提出一个方案。
关于提示 Codex 的更多思路,请参考 工作流.
线程
一个线程 (thread) 是一次独立的会话:包含您的提示词以及随后生成的模型输出和工具调用。一个线程可以包含多个提示词。例如,您的第一个提示词可能会让 Codex 实现某个功能,而后续的提示词可能会让它添加测试。
当 Codex 正在积极处理某个线程时,该线程即处于“运行中”状态。您可以同时运行多个线程,但请避免让两个线程修改相同的文件。您也可以稍后通过发送新的提示词来继续,从而恢复某个线程。
线程可以在本地或云端运行:
- 本地线程 在您的计算机上运行。Codex 可以读取和编辑您的文件并运行命令,因此您可以查看更改内容并使用现有的工具。为了降低在工作区之外发生意外更改的风险,本地线程会在 沙箱.
- 云线程 在隔离环境中运行 环境。Codex 会克隆你的仓库,并检出它正在工作的分支。当你需要并行运行任务或从其他设备委派任务时,云端线程非常有用。要在你的代码库中使用云端线程,请先将代码推送到 GitHub。你也可以 将任务从本地机器委派,其中包含了你当前的工作状态。
在 Codex 应用中,你还可以在不选择项目的情况下发起聊天。聊天不与已保存的仓库或项目文件夹绑定。你可以将其用于研究、规划、连接工具的工作流,或者其他不需要 Codex 基于现有代码库启动的工作。聊天使用 Codex 管理的 threads 目录(在您的 Codex 主目录下)作为其工作位置。默认情况下,该位置为 ~/.codex/threads。要更改此状态的基准位置,请设置 CODEX_HOME;请参见
配置与状态位置.
上下文
当你提交提示时,请包含 Codex 可以使用的上下文,例如相关文件和图片的引用。Codex IDE 扩展会自动将打开的文件列表和选定的文本范围作为上下文包含在内。
随着智能体(Agent)的运行,它还会从文件内容、工具输出,以及关于已完成工作和待完成任务的持续记录中收集上下文。
线程中的所有信息都必须适合模型的 上下文窗口,该配额因模型而异。Codex 会监控并报告剩余空间。对于较长的任务,Codex 可能会自动 压缩 上下文,具体方式是总结相关信息并丢弃相关性较低的细节。通过反复压缩,Codex 能够在多个步骤中持续处理复杂任务。
目标模式
目标模式为 Codex 提供了一个持久的长期工作目标。当任务可能需要执行多个步骤,或者 Codex 在工作过程中需要一个明确的“完成定义”以便持续核对时,请使用此模式。
当你设定目标时,目标文本既是起始提示,也是完成标准。Codex 会据此决定下一步操作以及任务是否完成。你可以通过 /goal in the Codex 应用, IDE 扩展, or CLI.
If /goal 未出现在斜杠命令列表中,请启用 features.goals
in config.toml:
[features]
goals = true
你也可以从 CLI 运行 codex features enable goals 从 CLI 启动目标模式,或者直接要求 Codex 运行它。在 Codex 应用中,进度会显示在编写器上方,并提供用于暂停、恢复、编辑或清除目标的控件。
编写目标时应确保 Codex 能够判断它是否已成功完成。优秀的目标通常包含具体结果、可衡量的目标或测试标准。例如:
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.
如果目标很难在一开始就明确定义,请从 /plan 开始,并要求 Codex 在实际实现之前对目标进行细化。你也可以要求 Codex 对你进行访谈,并起草一个具有明确成功标准的目标。
在目标启动后,你可以继续引导 Codex。发送后续消息以调整约束条件,例如要求 Codex 使用特定的库或避免使用特定的方法。当你想在不中断主任务的情况下了解状态总结或获取解释时,请使用侧边聊天。对于长时间运行的任务,请在失去网络连接之前暂停目标,然后在准备继续时恢复或编辑它。