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