侧栏里可以重新打开的一个任务
你每天的动作:新建任务、给它改标题、稍后重新打开、归档、从它分叉。
精确定义:你和 Codex 之间的一整段对话。它包含多个 Turn,并保存历史,供以后继续。
不要理解成:程序的“线程”。在 Codex 协议这里,Thread 首先是“整段对话”。
你已经会创建任务、连续追问、看命令执行、让 Codex 改文件、途中补充要求。开发者只是把这些熟悉动作压缩成了 Thread、Turn、Item、Session 和 Notification。
你每天的动作:新建任务、给它改标题、稍后重新打开、归档、从它分叉。
精确定义:你和 Codex 之间的一整段对话。它包含多个 Turn,并保存历史,供以后继续。
不要理解成:程序的“线程”。在 Codex 协议这里,Thread 首先是“整段对话”。
你每天的动作:发送“修复这个问题”,等待 Codex 调模型、查文件、跑命令、改代码,最后给出结果。
精确定义:对话中的一轮,通常从用户输入开始,以 Agent 完成本轮或被中断结束。
不要理解成:一次模型 API 请求。一个 Turn 为了调用工具,可能请求模型很多次。
你看到的用户消息、Codex 文字、思考摘要、Shell 命令、命令输出、文件修改,都可能是不同 Item。
精确定义:Turn 内持久化的一项输入或输出,是历史记录中更细的基本单位。
不要理解成:只有聊天气泡。工具调用和文件编辑也可以是 Item。
你打开任务后,Codex 知道当前目录、历史、模型、权限、可用工具,也知道现在是否有一轮正在执行。
本课程先这样理解:Session 是一个已加载 Thread 的“运行现场”,负责内存状态和执行协调。
注意:Session 是上下文相关词,也可能指登录会话或网络连接。读代码时一定要看它属于哪个模块。
你看到“开始运行”、文字一个字一个字出现、命令输出滚动、文件已修改、本轮完成。
精确定义:服务端主动发给客户端、通常不要求客户端回复的类型化消息,例如 TurnStarted、AgentMessageDelta、TurnCompleted。
不要理解成:Windows 弹窗或手机推送。这里指程序内部通信方式。
在 Codex CLI 的全屏终端界面里,它接收输入、展示历史、流式文字、工具状态和错误。
精确定义:Codex TUI 源码中的一个具体界面组件。Widget 就是可交互的界面部件。
重要纠正:你现在使用的 Codex 桌面端有类似聊天区域,但不代表它内部也使用这个 Rust ChatWidget。上一张图追踪的是 TUI 路径。
RegularTask 是执行某类工作的内部运行单元,不等于侧栏那条对话。阅读技巧:以后看到 Task,不要立刻背定义;先看它出现在产品界面、需求描述,还是 Rust 类型名里。
| 容易混淆 | 真正区别 | 判断口诀 |
|---|---|---|
| Thread vs Turn | Thread 是整本对话档案;Turn 是其中一轮工作。 | 侧栏一条是 Thread;按一次发送通常开始一个 Turn。 |
| Thread vs Session | Thread 是可保存、可恢复的对话;Session 是它被加载运行时的现场状态。 | 档案能留下,运行现场可以关闭后重建。 |
| Turn vs 模型请求 | Turn 面向用户的一轮;模型请求是内部采样动作。工具循环会让一次 Turn 多次采样。 | 你发一次,不等于后台只问模型一次。 |
| Event vs Notification | Event 泛指系统里发生的事;Notification 是把某件事单向告诉客户端的协议消息。 | 事情发生是 Event;把事情推到界面是 Notification。 |
| Request vs Notification | Request 是“请做这件事并给我响应”;Notification 是“告诉你一件事,不等回复”。 | turn/start 是请求;后续进度主要靠通知。 |
课程依据源码版本:openai/codex main @ a26f1806a4f4b8cfec2ea1be129963815a61e58c。