提示词
你通过发送提示词,也就是用户消息,与 Codex 交互,告诉它你希望完成什么。
示例提示词:
解释 transform 模块是如何工作的,以及其他模块如何使用它。新增一个命令行选项 `--json`,让它输出 JSON。当你提交提示词后,Codex 会在一个循环中工作:先调用模型,然后执行模型输出所指示的动作,例如读文件、改文件、调用工具等。这个过程会在任务完成或你主动取消时结束。
和 ChatGPT 一样,Codex 的效果很大程度上取决于你给出的指令。下面是一些实用提示:
- 当 Codex 能验证自己的工作时,它通常会产出更高质量的结果。尽量提供问题复现步骤、功能验证方法,以及 lint、pre-commit checks 之类的检查要求。
- 当你把复杂任务拆成更小、更聚焦的步骤时,Codex 的表现通常更好。较小的任务更容易让 Codex 测试,也更容易让你审查。如果你不确定该怎么拆,可以直接让 Codex 先提出一个计划。
关于如何向 Codex 写提示词的更多思路,参见 工作流。
线程
线程,就是一次会话:包括你的提示词,以及之后的模型输出与工具调用。一个线程可以包含多条提示词。例如,第一条提示词让 Codex 实现某个功能,后续提示词再让它补测试。
当 Codex 正在积极处理某个线程时,这个线程就处于“运行中”。你可以同时运行多个线程,但应避免让两个线程修改同一批文件。你也可以稍后继续向同一个线程追加提示词,从而恢复它。
线程既可以在本地运行,也可以在云端运行:
- 本地线程:运行在你的机器上。Codex 可以读取和编辑你的文件,也可以运行命令,因此你可以直接看到有哪些改动,并继续使用你现有的工具。为了降低工作区之外发生意外改动的风险,本地线程会运行在沙箱中。
- 云端线程:运行在隔离的环境中。Codex 会克隆你的仓库,并检出它正在工作的分支。当你想并行运行任务,或从另一台设备委派任务时,云端线程特别有用。若要让你的仓库支持云端线程,请先把代码推送到 GitHub。你也可以从本地机器把任务委派到云端,此时会连同你当前的工作状态一起带过去。
在 Codex App 中,你也可以不选择项目,直接开始一次聊天。聊天不会绑定到已保存的仓库或项目文件夹,适合研究、规划、连接工具的工作流,或其他不希望 Codex 从代码库开始的任务。聊天会使用 Codex 管理的 threads 目录作为工作位置;默认位置是 ~/.codex/threads。若要修改这类状态的基础目录,请设置 CODEX_HOME;参见配置与状态位置。
上下文
提交提示词时,尽量一并附上 Codex 可用的上下文,例如相关文件和图片的引用。Codex IDE 扩展会自动把当前打开的文件列表和选中的代码范围带入上下文。
当智能体工作时,它也会不断从文件内容、工具输出,以及自己已经做过什么、还要做什么的持续记录中收集上下文。
线程中的所有信息都必须落在模型的上下文窗口内,而这个窗口大小会随着模型不同而变化。Codex 会监控并显示剩余空间。对于较长任务,Codex 可能会自动通过总结相关信息、丢弃次要细节的方式来压缩上下文。通过反复压缩,Codex 可以在多步骤过程中持续处理复杂任务。
Goal mode
Goal mode 会给 Codex 一个可持续追踪的目标,适合步骤较多的长任务,或需要 Codex 在执行过程中反复对照“完成标准”的任务。
设置目标后,目标文本同时充当起始提示词和完成标准。Codex 会用它判断下一步该做什么,以及任务是否已经完成。你可以在 Codex App、IDE 扩展 或 CLI 中用 /goal 启动 Goal mode。
如果斜杠命令列表里没有 /goal,请在 config.toml 中启用 features.goals:
[features]
goals = true你也可以从 CLI 运行 codex features enable goals,或直接让 Codex 帮你运行。
在 Codex App 中,目标进度会显示在输入框上方,并提供暂停、恢复、编辑或清除目标的控件。
目标应写到 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。后续消息可以补充约束,例如要求使用某个库,或避免某种方案。需要状态回顾或解释、但不想打断主任务时,可以使用 side chats。对于长时间运行的工作,如果你即将断开连接,请先暂停目标,等准备继续时再恢复或编辑。