เชฎเซเช–เซเชฏ เชตเชฟเชทเชฏ-เชธเชพเชฎเช—เซเชฐเซ€ เชชเชฐ เชœเชพเชตเซ‹
OpenAI

23 เชœเชพเชจเซเชฏเซเช†เชฐเซ€, 2026

เช‡เชœเชจเซ‡เชฐเซ€

Unrolling the Codex agent loop

By Michael Bolin, Member of Technical Staff

เชฒเซ‹เชกเชฟเช‚เช—โ€ฆ

Codex CLIโ (เชจเชตเซ€ เชตเชฟเชจเซเชกเซ‹เชฎเชพเช‚ เช–เซ‚เชฒเซ‡ เช›เซ‡) is our cross-platform local software agent, designed to produce high-quality, reliable software changes while operating safely and efficiently on your machine. Weโ€™ve learned a tremendous amount about how to build a world-class software agent since we first launched the CLI in Aprilโ . To unpack those insights, this is the first post in an ongoing series where weโ€™ll explore various aspects of how Codex works, as well as hard-earned lessons. (For an even more granular view on how the Codex CLI is built, check out our open source repository at https://github.com/openai/codexโ (เชจเชตเซ€ เชตเชฟเชจเซเชกเซ‹เชฎเชพเช‚ เช–เซ‚เชฒเซ‡ เช›เซ‡). Many of the finer details of our design decisions are memorialized in GitHub issues and pull requests if youโ€™d like to learn more.)

To kick off, weโ€™ll focus on the agent loop, which is the core logic in Codex CLI that is responsible for orchestrating the interaction between the user, the model, and the tools the model invokes to perform meaningful software work. We hope this post gives you a good view into the role our agent (or โ€œharnessโ€) plays in making use of an LLM.

Before we dive in, a quick note on terminology: at OpenAI, โ€œCodexโ€ encompasses a suite of software agent offerings, including Codex CLI, Codex Cloud, and the Codex VS Code extension. This post focuses on the Codex harness, which provides the core agent loop and execution logic that underlies all Codex experiences and is surfaced through the Codex CLI. For ease here, weโ€™ll use the terms โ€œCodexโ€ and โ€œCodex CLIโ€ interchangeably.

The agent loop

At the heart of every AI agent is something called โ€œthe agent loop.โ€ A simplified illustration of the agent loop looks like this:

โ€œAgent loopโ€ เชถเซ€เชฐเซเชทเช•เชตเชพเชณเซเช‚ เชšเชฟเชคเซเชฐ เชฌเชคเชพเชตเซ‡ เช›เซ‡ เช•เซ‡ AI เชธเชฟเชธเซเชŸเชฎ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเชจเซ€ เชตเชฟเชจเช‚เชคเซ€ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชชเซเชฐเซ‹เชธเซ‡เชธ เช•เชฐเซ‡ เช›เซ‡, เชŸเซ‚เชฒเซเชธ เชฌเซ‹เชฒเชพเชตเซ‡ เช›เซ‡, เชชเชฐเชฟเชฃเชพเชฎเซ‹ เชœเซ‹เชตเซ‡ เช›เซ‡, เชชเซ‹เชคเชพเชจเซ€ เชฏเซ‹เชœเชจเชพ เช…เชชเชกเซ‡เชŸ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เช†เช‰เชŸเชชเซเชŸ เชชเชฐเชค เช•เชฐเซ‡ เช›เซ‡. เชคเซ€เชฐเซ‹ user input, model reasoning, tool actions เช…เชจเซ‡ final response เชœเซ‡เชตเชพ เชชเช—เชฒเชพเช‚เชจเซ‡ เชœเซ‹เชกเซ‡ เช›เซ‡.

To start, the agent takes input from the user to include in the set of textual instructions it prepares for the model known as a prompt.

The next step is to query the model by sending it our instructions and asking it to generate a response, a process known as inference. During inference, the textual prompt is first translated into a sequence of input tokensโ (เชจเชตเซ€ เชตเชฟเชจเซเชกเซ‹เชฎเชพเช‚ เช–เซ‚เชฒเซ‡ เช›เซ‡)โ€”integers that index into the modelโ€™s vocabulary. These tokens are then used to sample the model, producing a new sequence of output tokens.

The output tokens are translated back into text, which becomes the modelโ€™s response. Because tokens are produced incrementally, this translation can happen as the model runs, which is why many LLM-based applications display streaming output. In practice, inference is usually encapsulated behind an API that operates on text, abstracting away the details of tokenization.

As the result of the inference step, the model either (1) produces a final response to the userโ€™s original input, or (2) requests a tool call that the agent is expected to perform (e.g., โ€œrun ls and report the outputโ€). In the case of (2), the agent executes the tool call and appends its output to the original prompt. This output is used to generate a new input thatโ€™s used to re-query the model; the agent can then take this new information into account and try again.

This process repeats until the model stops emitting tool calls and instead produces a message for the user (referred to as an assistant message in OpenAI models). In many cases, this message directly answers the userโ€™s original request, but it may also be a follow-up question for the user.

Because the agent can execute tool calls that modify the local environment, its โ€œoutputโ€ is not limited to the assistant message. In many cases, the primary output of a software agent is the code it writes or edits on your machine. Nevertheless, each turn always ends with an assistant messageโ€”such as โ€œI added the architecture.md you asked forโ€โ€”which signals a termination state in the agent loop. From the agentโ€™s perspective, its work is complete and control returns to the user.

The journey from user input to agent response shown in the diagram is referred to as one turn of a conversation (a thread in Codex). Though this conversation turn can include many iterations between the model inference and tool calls. Every time you send a new message to an existing conversation, the conversation history is included as part of the prompt for the new turn, which includes the messages and tool calls from previous turns:

โ€œMulti-turn agent loopโ€ เชถเซ€เชฐเซเชทเช•เชตเชพเชณเซเช‚ เชšเชฟเชคเซเชฐ เชฌเชคเชพเชตเซ‡ เช›เซ‡ เช•เซ‡ AI เชเชœเชจเซเชŸ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชฟเชค เชฐเซ€เชคเซ‡ user input เชฒเซ‡ เช›เซ‡, เช•เซเชฐเชฟเชฏเชพเช“ เชœเชจเชฐเซ‡เชŸ เช•เชฐเซ‡ เช›เซ‡, tools เชจเซ€ เชธเชฒเชพเชน เชฒเซ‡ เช›เซ‡, state เช…เชชเชกเซ‡เชŸ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เชชเชฐเชค เช†เชชเซ‡ เช›เซ‡. เชคเซ‡เชฎเชพเช‚ เชฒเซ‡เชฌเชฒเชตเชพเชณเชพ เชชเช—เชฒเชพเช‚, เชคเซ€เชฐเซ‹ เช…เชจเซ‡ tool outputs เชจเชพ เช‰เชฆเชพเชนเชฐเชฃเซ‹ เชธเชพเชฎเซ‡เชฒ เช›เซ‡, เชœเซ‡ เชเชœเชจเซเชŸเชจเซ‹ reasoning cycle เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡.

This means that as the conversation grows, so does the length of the prompt used to sample the model. This length matters because every model has a context window, which is the maximum number of tokens it can use for one inference call. Note this window includes both input and output tokens. As you might imagine, an agent could decide to make hundreds of tool calls in a single turn, potentially exhausting the context window. For this reason, context window management is one of the agentโ€™s many responsibilities. Now, letโ€™s dive in to see how Codex runs the agent loop.

Model inference

The Codex CLI sends HTTP requests to the Responses APIโ (เชจเชตเซ€ เชตเชฟเชจเซเชกเซ‹เชฎเชพเช‚ เช–เซ‚เชฒเซ‡ เช›เซ‡) to run model inference. Weโ€™ll examine how information flows through Codex, which uses the Responses API to drive the agent loop.

Letโ€™s explore how Codex creates the prompt for the first inference call in a conversation.

Building the initial prompt

As an end user, you donโ€™t specify the prompt used to sample the model verbatim when you query the Responses API. Instead, you specify various input types as part of your query, and the Responses API server decides how to structure this information into a prompt that the model is designed to consume. You can think of the prompt as a โ€œlist of itemsโ€; this section will explain how your query gets transformed into that list.

In the initial prompt, every item in the list is associated with a role. The role indicates how much weight the associated content should have and is one of the following values (in decreasing order of priority): system, developer, user, assistant.

The tools field is a list of tool definitions that conform to a schema defined by the Responses API. For Codex, this includes tools that are provided by the Codex CLI, tools that are provided by the Responses API that should be made available to Codex, as well as tools provided by the user, usually via MCP servers:

JavaScript

1
[
2
// Codex's default shell tool for spawning new processes locally.
3
{
4
"type": "function",
5
"name": "shell",
6
"description": "Runs a shell command and returns its output...",
7
"strict": false,
8
"parameters": {
9
"type": "object",
10
"properties": {
11
"command": {"type": "array", "description": "The command to execute", ...},
12
"workdir": {"description": "The working directory...", ...},
13
"timeout_ms": {"description": "The timeout for the command...", ...},
14
...
15
},
16
"required": ["command"],
17
}
18
}
19

20
// Codex's built-in plan tool.
21
{
22
"type": "function",
23
"name": "update_plan",
24
"description": "Updates the task plan...",
25
"strict": false,
26
"parameters": {
27
"type": "object",
28
"properties": {"plan":..., "explanation":...},
29
"required": ["plan"]
30
}
31
},
32

33
// Web search tool provided by the Responses API.
34
{
35
"type": "web_search",
36
"external_web_access": false
37
},
38

39
// MCP server for getting weather as configured in the
40
// user's ~/.codex/config.toml.
41
{
42
"type": "function",
43
"name": "mcp__weather__get-forecast",
44
"description": "Get weather alerts for a US state",
45
"strict": false,
46
"parameters": {
47
"type": "object",
48
"properties": {"latitude": {...}, "longitude": {...}},
49
"required": ["latitude", "longitude"]
50
}
51
}
52
]

1. A message with role=developer that describes the sandbox that applies only to the Codex-provided shell tool defined in the tools section. That is, other tools, such as those provided from MCP servers, are not sandboxed by Codex and are responsible for enforcing their own guardrails.

เชธเชฐเชณ เชชเชพเช เซเชฏ-เชธเชพเชฎเช—เซเชฐเซ€

1
<permissions instructions>
2
- description of the sandbox explaining file permissions and network access
3
- instructions for when to ask the user for permissions to run a shell command
4
- list of folders writable by Codex, if any
5
</permissions instructions>

2. (Optional) A message with role=developer whose contents are the developer_instructions value read from the userโ€™s config.toml file.

3. (Optional) A message with role=user whose contents are the โ€œuser instructions,โ€ which are not sourced from a single file but are aggregated across multiple sourcesโ (เชจเชตเซ€ เชตเชฟเชจเซเชกเซ‹เชฎเชพเช‚ เช–เซ‚เชฒเซ‡ เช›เซ‡). In general, more specific instructions appear later:

เชธเชฐเชณ เชชเชพเช เซเชฏ-เชธเชพเชฎเช—เซเชฐเซ€

1
<environment_context>
2
<cwd>/Users/mbolin/code/codex5</cwd>
3
<shell>zsh</shell>
4
</environment_context>

เชเช•เชตเชพเชฐ Codex input เชจเซ‡ initialize เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช‰เชชเชฐเซ‹เช•เซเชค เชคเชฎเชพเชฎ เช—เชฃเชคเชฐเซ€ เช•เชฐเซ€ เชฒเซ‡ เช›เซ‡, เชชเช›เซ€ เชคเซ‡ เชธเช‚เชตเชพเชฆ เชถเชฐเซ‚ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ user message เช‰เชฎเซ‡เชฐเซ‡ เช›เซ‡.

เช…เช—เชพเช‰เชจเชพ เช‰เชฆเชพเชนเชฐเชฃเซ‹ เชฆเชฐเซ‡เช• message เชจเซ€ เชธเชพเชฎเช—เซเชฐเซ€ เชชเชฐ เช•เซ‡เชจเซเชฆเซเชฐเชฟเชค เชนเชคเชพ, เชชเชฐเช‚เชคเซ เชงเซเชฏเชพเชจ เชฐเชพเช–เซ‹ เช•เซ‡ input เชจเซเช‚ เชฆเชฐเซ‡เช• element type, roleโ (เชจเชตเซ€ เชตเชฟเชจเซเชกเซ‹เชฎเชพเช‚ เช–เซ‚เชฒเซ‡ เช›เซ‡), เช…เชจเซ‡ content เชงเชฐเชพเชตเชคเซเช‚ JSON object เช›เซ‡, เชœเซ‡เชฎ เช•เซ‡ เชจเซ€เชšเซ‡ เช›เซ‡:

JSON

1
{
2
"type": "message",
3
"role": "user",
4
"content": [
5
{
6
"type": "input_text",
7
"text": "Add an architecture diagram to the README.md"
8
}
9
]
10
}

เชเช•เชตเชพเชฐ Codex Responses API เชจเซ‡ เชฎเซ‹เช•เชฒเชตเชพ เชฎเชพเชŸเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃ JSON payload เชคเซˆเชฏเชพเชฐ เช•เชฐเซ‡ เช›เซ‡, เชชเช›เซ€ เชคเซ‡ ~/.codex/config.toml เชฎเชพเช‚ Responses API เชเชจเซเชกเชชเซ‹เช‡เชจเซเชŸ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชจเซเชซเชฟเช—เชฐ เช›เซ‡ เชคเซ‡เชจเชพ เช†เชงเชพเชฐเซ‡ Authorization header เชธเชพเชฅเซ‡ HTTP POST request เช•เชฐเซ‡ เช›เซ‡ (เชœเซ‹ เชจเชฟเชฐเซเชงเชพเชฐเชฟเชค เชนเซ‹เชฏ เชคเซ‹ เชตเชงเชพเชฐเชพเชจเชพ HTTP headers เช…เชจเซ‡ query parameters เชชเชฃ เช‰เชฎเซ‡เชฐเชพเชฏ เช›เซ‡).

เชœเซเชฏเชพเชฐเซ‡ OpenAI Responses API เชธเชฐเซเชตเชฐ request เชฎเซ‡เชณเชตเซ‡ เช›เซ‡, เชคเซเชฏเชพเชฐเซ‡ เชคเซ‡ เชฎเซ‹เชกเชฒ เชฎเชพเชŸเซ‡ เชชเซเชฐเซ‹เชฎเซเชชเซเชŸ เช•เชพเชขเชตเชพ JSON เชจเซ‹ เช† เชฎเซเชœเชฌ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡ (เช–เชพเชคเชฐเซ€ เชฎเชพเชŸเซ‡ เช•เชนเซ€เช เชคเซ‹, Responses API เชจเซ€ custom implementation เช…เชฒเช— เชชเชธเช‚เชฆเช—เซ€ เชชเชฃ เช•เชฐเซ€ เชถเช•เซ‡):

เชเช• snapshot เชšเชฟเชคเซเชฐ, เชœเซ‡ AI เชเชœเชจเซเชŸ เชฒเซ‚เชชเชฎเชพเช‚ เชเช• เชœ เชชเช—เชฒเซเช‚ เชฌเชคเชพเชตเซ‡ เช›เซ‡. เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเชจเซ€ เชตเชฟเชจเช‚เชคเซ€ เชฎเซ‹เชกเชฒเชฎเชพเช‚ เชœเชพเชฏ เช›เซ‡, เชœเซ‡ เชตเชฟเชšเชพเชฐ, tool name เชธเชพเชฅเซ‡ เช•เซเชฐเชฟเชฏเชพ เช…เชจเซ‡ tool input เชฌเชจเชพเชตเซ‡ เช›เซ‡. เชšเชฟเชคเซเชฐ tool call เชชเชนเซ‡เชฒเชพเช‚เชจเซเช‚ เช† เชฎเชงเซเชฏเชตเชฐเซเชคเซ€ reasoning เชชเช—เชฒเซเช‚ เชนเชพเช‡เชฒเชพเช‡เชŸ เช•เชฐเซ‡ เช›เซ‡.

เชœเซ‡เชฎ เชคเชฎเซ‡ เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹, เชชเซเชฐเซ‹เชฎเซเชชเซเชŸเชจเซ€ เชชเซเชฐเชฅเชฎ เชคเซเชฐเชฃ items เชจเซ‹ เช•เซเชฐเชฎ client เชจเชนเซ€เช‚ เชชเชฐเช‚เชคเซ server เชจเช•เซเช•เซ€ เช•เชฐเซ‡ เช›เซ‡. เชคเซ‡เชฎ เช›เชคเชพเช‚, เช เชคเซเชฐเชฃ items เชฎเชพเช‚เชฅเซ€ เชซเช•เซเชค system message เชจเซ€ เชธเชพเชฎเช—เซเชฐเซ€ เชชเชฃ server เชฆเซเชตเชพเชฐเชพ เชจเชฟเชฏเช‚เชคเซเชฐเชฟเชค เชฅเชพเชฏ เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡ tools เช…เชจเซ‡ instructions client เชจเช•เซเช•เซ€ เช•เชฐเซ‡ เช›เซ‡. JSON payload เชฎเชพเช‚เชฅเซ€ เช†เชตเซ‡เชฒ input เชชเช›เซ€ เช†เชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เชชเซเชฐเซ‹เชฎเซเชชเซเชŸ เชชเซ‚เชฐเซเชฃ เช•เชฐเซ‡ เช›เซ‡.

เชนเชตเซ‡ เชœเซเชฏเชพเชฐเซ‡ เช…เชฎเชพเชฐเซ‹ เชชเซเชฐเซ‹เชฎเซเชชเซเชŸ เชคเซˆเชฏเชพเชฐ เช›เซ‡, เชคเซเชฏเชพเชฐเซ‡ เช…เชฎเซ‡ เชฎเซ‹เชกเชฒเชฎเชพเช‚เชฅเซ€ เชจเชฎเซ‚เชจเชพ เชฒเซ‡เชตเชพ เชคเซˆเชฏเชพเชฐ เช›เซ€เช.

เชชเซเชฐเชฅเชฎ เชŸเชฐเซเชจ

Responses API เชจเซ‡ เช•เชฐเชพเชฏเซ‡เชฒ เช† HTTP request Codex เชฎเชพเช‚ เชธเช‚เชตเชพเชฆเชจเซ‹ เชชเซเชฐเชฅเชฎ โ€œturnโ€ เชถเชฐเซ‚ เช•เชฐเซ‡ เช›เซ‡. เชธเชฐเซเชตเชฐ Server-Sent Events (SSEโ (เชจเชตเซ€ เชตเชฟเชจเซเชกเซ‹เชฎเชพเช‚ เช–เซ‚เชฒเซ‡ เช›เซ‡)) stream เชธเชพเชฅเซ‡ เชœเชตเชพเชฌ เช†เชชเซ‡ เช›เซ‡. เชฆเชฐเซ‡เช• event เชจเซ‹ data "type" เชงเชฐเชพเชตเชคเซเช‚ JSON payload เช›เซ‡, เชœเซ‡ "response" เชฅเซ€ เชถเชฐเซ‚ เชฅเชพเชฏ เช›เซ‡, เช…เชจเซ‡ เชคเซ‡ เช† เชœเซ‡เชตเซเช‚ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡ (events เชจเซ€ เชธเช‚เชชเซ‚เชฐเซเชฃ เชฏเชพเชฆเซ€ เช…เชฎเชพเชฐเซ€ API docsโ (เชจเชตเซ€ เชตเชฟเชจเซเชกเซ‹เชฎเชพเช‚ เช–เซ‚เชฒเซ‡ เช›เซ‡) เชฎเชพเช‚ เชฎเชณเซ€ เชถเช•เซ‡ เช›เซ‡):

เชธเชฐเชณ เชชเชพเช เซเชฏ-เชธเชพเชฎเช—เซเชฐเซ€

1
data: {"type":"response.reasoning_summary_text.delta","delta":"ah ", ...}
2
data: {"type":"response.reasoning_summary_text.delta","delta":"ha!", ...}
3
data: {"type":"response.reasoning_summary_text.done", "item_id":...}
4
data: {"type":"response.output_item.added", "item":{...}}
5
data: {"type":"response.output_text.delta", "delta":"forty-", ...}
6
data: {"type":"response.output_text.delta", "delta":"two!", ...}
7
data: {"type":"response.completed","response":{...}}

Codex events เชจเซ€ stream เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡โ (เชจเชตเซ€ เชตเชฟเชจเซเชกเซ‹เชฎเชพเช‚ เช–เซ‚เชฒเซ‡ เช›เซ‡) เช…เชจเซ‡ เชคเซ‡เชฎเชจเซ‡ เชเชตเชพ เช†เช‚เชคเชฐเชฟเช• event objects เชคเชฐเซ€เช•เซ‡ เชซเชฐเซ€ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเซ‡ เช›เซ‡ เชœเซ‡เชจเซ‡ client เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เซ‡. response.output_text.delta เชœเซ‡เชตเซ€ events UI เชฎเชพเช‚ streaming เชฎเชพเชŸเซ‡ เชตเชชเชฐเชพเชฏ เช›เซ‡, เชœเซเชฏเชพเชฐเซ‡ response.output_item.added เชœเซ‡เชตเซ€ เช…เชจเซเชฏ events เชเชตเชพ objects เชฎเชพเช‚ เชฐเซ‚เชชเชพเช‚เชคเชฐเชฟเชค เชฅเชพเชฏ เช›เซ‡ เชœเซ‡ เช…เชจเซเช—เชพเชฎเซ€ Responses API calls เชฎเชพเชŸเซ‡ input เชฎเชพเช‚ เช‰เชฎเซ‡เชฐเชพเชฏ เช›เซ‡.

เชฎเชพเชจเซ€ เชฒเซ‹ เช•เซ‡ Responses API เชจเซ‡ เช•เชฐเซ‡เชฒเซ€ เชชเซเชฐเชฅเชฎ request เชฎเชพเช‚ เชฌเซ‡ response.output_item.done events เชนเซ‹เชฏ: เชเช• type=reasoning เชธเชพเชฅเซ‡ เช…เชจเซ‡ เชฌเซ€เชœเซ€ type=function_call เชธเชพเชฅเซ‡. เชœเซเชฏเชพเชฐเซ‡ เช…เชฎเซ‡ tool call เชจเชพ response เชธเชพเชฅเซ‡ เชซเชฐเซ€ เชฎเซ‹เชกเชฒเชจเซ‡ query เช•เชฐเซ€เช, เชคเซเชฏเชพเชฐเซ‡ เช† events JSON เชจเชพ input field เชฎเชพเช‚ เช† เชฐเซ€เชคเซ‡ เชฐเชœเซ‚ เชฅเชตเซ€ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡:

JavaScript

1
[
2
/* ... original 5 items from the input array ... */
3
{
4
"type": "reasoning",
5
"summary": [
6
"type": "summary_text",
7
"text": "**Adding an architecture diagram for README.md**\n\nI need to..."
8
],
9
"encrypted_content": "gAAAAABpaDWNMxMeLw..."
10
},
11
{
12
"type": "function_call",
13
"name": "shell",
14
"arguments": "{\"command\":\"cat README.md\",\"workdir\":\"/Users/mbolin/code/codex5\"}",
15
"call_id": "call_8675309..."
16
},
17
{
18
"type": "function_call_output",
19
"call_id": "call_8675309...",
20
"output": "<p align=\"center\"><code>npm i -g @openai/codex</code>..."
21
}
22
]

เช† เช…เชจเซเช—เชพเชฎเซ€ query เชจเชพ เชญเชพเช—เชฐเซ‚เชชเซ‡ เชฎเซ‹เชกเชฒเชฎเชพเช‚เชฅเซ€ เชจเชฎเซ‚เชจเชพ เชฒเซ‡เชตเชพ เชฎเชพเชŸเซ‡ เชตเชชเชฐเชพเชคเซ‹ เชชเชฐเชฟเชฃเชพเชฎเชฐเซ‚เชช เชชเซเชฐเซ‹เชฎเซเชชเซเชŸ เช† เชฐเซ€เชคเซ‡ เชฆเซ‡เช–เชพเชถเซ‡:

โ€œSnapshot 2โ€ เชฒเซ‡เชฌเชฒเชตเชพเชณเซเช‚ เชšเชฟเชคเซเชฐ, เชœเซ‡ เชŸเซ‚เชฒ call เชชเช›เซ€เชจเซ‹ AI เชเชœเชจเซเชŸ เชฌเชคเชพเชตเซ‡ เช›เซ‡. เชฎเซ‹เชกเชฒเชจเซ‡ เชŸเซ‚เชฒ observation เชฎเชณเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡ เชจเชตเซ‹ เชตเชฟเชšเชพเชฐ เช…เชจเซ‡ เช•เซเชฐเชฟเชฏเชพ เชฌเชจเชพเชตเซ‡ เช›เซ‡. เชคเซ€เชฐเซ‹ เช‡เชจเชชเซเชŸ, observation เช…เชจเซ‡ เช†เช‰เชŸเชชเซเชŸเชจเซ‡ เชœเซ‹เชกเซ€เชจเซ‡ เชฌเชคเชพเชตเซ‡ เช›เซ‡ เช•เซ‡ เชเชœเชจเซเชŸ เชชเซ‹เชคเชพเชจเซ€ reasoning loop เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชฟเชค เช•เชฐเซ‡ เช›เซ‡.

เช–เชพเชธ เช•เชฐเซ€เชจเซ‡ เชงเซเชฏเชพเชจ เช†เชชเซ‹ เช•เซ‡ เชœเซ‚เชจเซ‹ เชชเซเชฐเซ‹เชฎเซเชชเซเชŸ เชจเชตเชพ เชชเซเชฐเซ‹เชฎเซเชชเซเชŸเชจเซ‹ เชšเซ‹เช•เซเช•เชธ prefix เช›เซ‡. เช† เชˆเชฐเชพเชฆเชพเชชเซ‚เชฐเซเชตเช• เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡ เช…เชจเซเช—เชพเชฎเซ€ requests เชจเซ‡ เชฌเชนเซ เชตเชงเซ เช•เชพเชฐเซเชฏเช•เซเชทเชฎ เชฌเชจเชพเชตเซ‡ เช›เซ‡ เช•เซ‡เชฎ เช•เซ‡ เช…เชฎเซ‡ prompt caching เชจเซ‹ เชฒเชพเชญ เชฒเชˆ เชถเช•เซ€เช เช›เซ€เช (เชœเซ‡ เช…เช‚เช—เซ‡ เช…เชฎเซ‡ เชชเซเชฐเชฆเชฐเซเชถเชจเชจเชพ เช†เช—เชณเชจเชพ เชตเชฟเชญเชพเช—เชฎเชพเช‚ เชšเชฐเซเชšเชพ เช•เชฐเซ€เชถเซเช‚).

เชเชœเชจเซเชŸ เชฒเซ‚เชชเชจเชพ เชชเซเชฐเชฅเชฎ เชšเชฟเชคเซเชฐ เชคเชฐเชซ เชซเชฐเซ€ เชœเซ‹เชถเซเช‚ เชคเซ‹ inference เช…เชจเซ‡ tool calling เชตเชšเซเชšเซ‡ เช˜เชฃเซ€ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชจเซ‹ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡. เชชเซเชฐเซ‹เชฎเซเชชเซเชŸ เช•เชฆเชพเชš เชตเชงเชคเซ‹ เชฐเชนเซ‡ เชคเซเชฏเชพเช‚ เชธเซเชงเซ€ เช•เซ‡ เช…เชฎเชจเซ‡ assistant message เชจ เชฎเชณเซ‡, เชœเซ‡ turn เชจเชพ เช…เช‚เชคเชจเซเช‚ เชธเช‚เช•เซ‡เชค เช†เชชเซ‡ เช›เซ‡:

เชธเชฐเชณ เชชเชพเช เซเชฏ-เชธเชพเชฎเช—เซเชฐเซ€

1
data: {"type":"response.output_text.done","text": "I added a diagram to explain...", ...}
2
data: {"type":"response.completed","response":{...}}

Codex CLI เชฎเชพเช‚, เช…เชฎเซ‡ assistant message เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเชจเซ‡ เชฌเชคเชพเชตเซ€เช เช›เซ€เช เช…เชจเซ‡ composer เชชเชฐ focus เช•เชฐเซ€เชจเซ‡ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเชจเซ‡ เชธเซ‚เชšเชตเซ€เช เช›เซ€เช เช•เซ‡ เชนเชตเซ‡ เชธเช‚เชตเชพเชฆ เช†เช—เชณ เชตเชงเชพเชฐเชตเชพเชจเซ‹ เชคเซ‡เชฎเชจเซ‹ โ€œturnโ€ เช›เซ‡. เชœเซ‹ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชœเชตเชพเชฌ เช†เชชเซ‡, เชคเซ‹ เช…เช—เชพเช‰เชจเชพ turn เชจเซ‹ assistant message เช…เชจเซ‡ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเชจเซ‹ เชจเชตเซ‹ message เชฌเช‚เชจเซ‡ เชจเชตเชพ turn เชจเซ€ เชถเชฐเซ‚เช†เชค เชฎเชพเชŸเซ‡ Responses API request เชจเชพ input เชฎเชพเช‚ เช‰เชฎเซ‡เชฐเชตเชพ เชชเชกเซ‡ เช›เซ‡:

JavaScript

1
[
2
/* ... all items from the last Responses API request ... */
3
{
4
"type": "message",
5
"role": "assistant",
6
"content": [
7
{
8
"type": "output_text",
9
"text": "I added a diagram to explain the client/server architecture."
10
}
11
]
12
},
13
{
14
"type": "message",
15
"role": "user",
16
"content": [
17
{
18
"type": "input_text",
19
"text": "That's not bad, but the diagram is missing the bike shed."
20
}
21
]
22
}
23
]

เชซเชฐเซ€ เชเช•เชตเชพเชฐ, เช•เชพเชฐเชฃ เช•เซ‡ เช…เชฎเซ‡ เชธเช‚เชตเชพเชฆ เชšเชพเชฒเซ เชฐเชพเช–เซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช, Responses API เชจเซ‡ เชฎเซ‹เช•เชฒเชพเชคเซ€ input เชจเซ€ เชฒเช‚เชฌเชพเชˆ เชตเชงเชคเซ€ เชœ เชœเชพเชฏ เช›เซ‡:

โ€œSnapshot 3โ€ เชฒเซ‡เชฌเชฒเชตเชพเชณเซเช‚ เชšเชฟเชคเซเชฐ, เชœเซ‡ AI เชเชœเชจเซเชŸ เชฒเซ‚เชชเชจเซเช‚ เช…เช‚เชคเชฟเชฎ เชคเชฌเช•เซเช•เซเช‚ เชฌเชคเชพเชตเซ‡ เช›เซ‡. เชŸเซ‚เชฒเชจเชพ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เชฎเชณเซเชฏเชพ เชชเช›เซ€, เชฎเซ‹เชกเชฒ เช…เช‚เชคเชฟเชฎ เชตเชฟเชšเชพเชฐ เช…เชจเซ‡ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเชจเซ‡ เชชเชฐเชค เช•เชฐเชพเชฏเซ‡เชฒ เช…เช‚เชคเชฟเชฎ เชœเชตเชพเชฌ เชฌเชจเชพเชตเซ‡ เช›เซ‡. เชคเซ€เชฐเซ‹ เชŸเซ‚เชฒ เช†เช‰เชŸเชชเซเชŸเชฅเซ€ เชชเซ‚เชฐเซเชฃ เชชเซเชฐเชคเชฟเชธเชพเชฆ เชธเซเชงเซ€เชจเซ‹ เชชเชฐเชฟเชตเชฐเซเชคเชจ เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡.

เช† เชธเชคเชค เชตเชงเชคเชพ เชชเซเชฐเซ‹เชฎเซเชชเซเชŸเชจเซ‹ เชชเซเชฐเชฆเชฐเซเชถเชจ เชชเชฐ เชถเซเช‚ เช…เชฐเซเชฅ เชฅเชพเชฏ เช›เซ‡ เชคเซ‡ เชœเซ‹เชˆเช.

เชชเซเชฐเชฆเชฐเซเชถเชจ เชธเช‚เชฌเช‚เชงเชฟเชค เชตเชฟเชšเชพเชฐเชฃเชพ

เชคเชฎเซ‡ เช•เชฆเชพเชš เชชเซ‹เชคเชพเชจเซ‡ เชชเซ‚เช›เชคเชพ เชนเชถเซ‹, โ€œเชฅเซ‹เชญเซ‹, เชถเซเช‚ เชธเช‚เชตเชพเชฆ เชฆเชฐเชฎเซเชฏเชพเชจ Responses API เชจเซ‡ เชฎเซ‹เช•เชฒเชพเชคเชพ JSON เชจเชพ เชชเชฐเชฟเชฎเชพเชฃเชจเซ€ เชฆเซƒเชทเซเชŸเชฟเช เชเชœเชจเซเชŸ เชฒเซ‚เชช quadratic เชจเชฅเซ€?โ€ เช…เชจเซ‡ เชคเชฎเซ‡ เชธเชพเชšเชพ เชนเชถเซ‹. เชœเซเชฏเชพเชฐเซ‡ Responses API เช† เชธเชฎเชธเซเชฏเชพเชจเซ‡ เช˜เชŸเชพเชกเชตเชพ เชฎเชพเชŸเซ‡ เชตเซˆเช•เชฒเซเชชเชฟเช• previous_response_idโ (เชจเชตเซ€ เชตเชฟเชจเซเชกเซ‹เชฎเชพเช‚ เช–เซ‚เชฒเซ‡ เช›เซ‡) parameter เชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเซ‡ เช›เซ‡, Codex เช†เชœเซ‡ เชฎเซเช–เซเชฏเชคเซเชตเซ‡ requests เชจเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ stateless เชฐเชพเช–เชตเชพ เช…เชจเซ‡ Zero Data Retention (ZDR) configurations เชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเซเช‚ เชจเชฅเซ€.

previous_response_id เชŸเชพเชณเชตเชพเชฅเซ€ Responses API เชจเชพ provider เชฎเชพเชŸเซ‡ เชฌเชพเชฌเชคเซ‹ เชธเชฐเชณ เชฌเชจเซ‡ เช›เซ‡ เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡ เช–เชพเชคเชฐเซ€ เช•เชฐเซ‡ เช›เซ‡ เช•เซ‡ เชฆเชฐเซ‡เช• request stateless เช›เซ‡. เช†เชฅเซ€ Zero Data Retention (ZDR)โ (เชจเชตเซ€ เชตเชฟเชจเซเชกเซ‹เชฎเชพเช‚ เช–เซ‚เชฒเซ‡ เช›เซ‡) เชชเชธเช‚เชฆ เช•เชฐเชจเชพเชฐเชพ customers เชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเชตเซเช‚ เชชเชฃ เชธเชฐเชณ เชฌเชจเซ‡ เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡ previous_response_id เชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเชตเชพ เชœเชฐเซ‚เชฐเซ€ data เชธเช‚เช—เซเชฐเชนเชฟเชค เช•เชฐเชตเซเช‚ ZDR เชธเชพเชฅเซ‡ เชตเชฟเชฐเซเชฆเซเชง เชœเชถเซ‡. เชงเซเชฏเชพเชจ เชฐเชพเช–เซ‹ เช•เซ‡ ZDR customers เช…เช—เชพเช‰เชจเชพ turns เชจเชพ proprietary reasoning messages เชจเซ‹ เชฒเชพเชญ เช—เซเชฎเชพเชตเชคเชพ เชจเชฅเซ€, เช•เชพเชฐเชฃ เช•เซ‡ เชธเช‚เชฌเช‚เชงเชฟเชค encrypted_content เชธเชฐเซเชตเชฐ เชชเชฐ decrypt เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡. (OpenAI ZDR customer เชจเซ€ decryption key เชœเชพเชณเชตเซ‡ เช›เซ‡, เชคเซ‡เชฎเชจเซ‹ data เชจเชนเซ€เช‚.) ZDR เชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเชตเชพ Codex เชฎเชพเช‚ เช•เชฐเชพเชฏเซ‡เชฒเชพ เชธเช‚เชฌเช‚เชงเชฟเชค เชซเซ‡เชฐเชซเชพเชฐเซ‹ เชฎเชพเชŸเซ‡ PRs #642โ (เชจเชตเซ€ เชตเชฟเชจเซเชกเซ‹เชฎเชพเช‚ เช–เซ‚เชฒเซ‡ เช›เซ‡) เช…เชจเซ‡ #1641โ (เชจเชตเซ€ เชตเชฟเชจเซเชกเซ‹เชฎเชพเช‚ เช–เซ‚เชฒเซ‡ เช›เซ‡) เชœเซเช“.

เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เชฎเซ‹เชกเชฒเชฎเชพเช‚เชฅเซ€ เชจเชฎเซ‚เชจเชพ เชฒเซ‡เชตเชพเชจเซ‹ เช–เชฐเซเชš network traffic เชจเชพ เช–เชฐเซเชš เช•เชฐเชคเชพเช‚ เชฎเซ‹เชŸเซ‹ เชนเซ‹เชฏ เช›เซ‡, เชเชŸเชฒเซ‡ เช•เชพเชฐเซเชฏเช•เซเชทเชฎเชคเชพเชจเชพ เชชเซเชฐเชฏเชคเซเชจเซ‹ เชฎเชพเชŸเซ‡ sampling เชฎเซเช–เซเชฏ เชฒเช•เซเชทเซเชฏ เชฌเชจเซ‡ เช›เซ‡. เช† เช•เชพเชฐเชฃเซ‡ prompt caching เช–เซ‚เชฌ เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เช›เซ‡, เช•เซ‡เชฎ เช•เซ‡ เชคเซ‡ เช…เช—เชพเช‰เชจเซ€ inference call เชจเซ€ computation เชจเซ‡ เชซเชฐเซ€ เชตเชพเชชเชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡. เชœเซเชฏเชพเชฐเซ‡ เช…เชฎเชจเซ‡ cache hits เชฎเชณเซ‡ เช›เซ‡, เชคเซเชฏเชพเชฐเซ‡ เชฎเซ‹เชกเชฒ sampling quadratic เชจเชพ เชฌเชฆเชฒเซ‡ linear เชฌเชจเซ‡ เช›เซ‡. เช…เชฎเชพเชฐเซ€ prompt caching โ (เชจเชตเซ€ เชตเชฟเชจเซเชกเซ‹เชฎเชพเช‚ เช–เซ‚เชฒเซ‡ เช›เซ‡) documentation เช† เชฌเชพเชฌเชค เชตเชงเซ เชตเชฟเช—เชคเซ‡ เชธเชฎเชœเชพเชตเซ‡ เช›เซ‡:

Cache hits เชซเช•เซเชค prompt เชฎเชพเช‚ เชšเซ‹เช•เซเช•เชธ prefix matches เชฎเชพเชŸเซ‡ เชœ เชถเช•เซเชฏ เช›เซ‡. caching เชจเซ‹ เชฒเชพเชญ เชฎเซ‡เชณเชตเชตเชพ เชฎเชพเชŸเซ‡, instructions เช…เชจเซ‡ examples เชœเซ‡เชตเซ€ static content เชคเชฎเชพเชฐเชพ prompt เชจเซ€ เชถเชฐเซ‚เช†เชคเชฎเชพเช‚ เชฎเซ‚เช•เซ‹, เช…เชจเซ‡ user-specific information เชœเซ‡เชตเซ€ variable content เช…เช‚เชคเชฎเชพเช‚ เชฎเซ‚เช•เซ‹. เช† images เช…เชจเซ‡ tools เชฎเชพเชŸเซ‡ เชชเชฃ เชฒเชพเช—เซ เชชเชกเซ‡ เช›เซ‡, เชœเซ‡ requests เชตเชšเซเชšเซ‡ เชธเชฎเชพเชจ เชนเซ‹เชตเชพ เชœเซ‹เชˆเช.

เช† เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฐเชพเช–เซ€เชจเซ‡, เชšเชพเชฒเซ‹ เชตเชฟเชšเชพเชฐเซ€เช เช•เซ‡ Codex เชฎเชพเช‚ โ€œcache missโ€ เช•เชฏเชพ เชชเซเชฐเช•เชพเชฐเชจเซ€ operations เช•เชพเชฐเชฃเซ‡ เชฅเชˆ เชถเช•เซ‡:

  • เชธเช‚เชตเชพเชฆเชจเชพ เชฎเชงเซเชฏเชฎเชพเช‚ เชฎเซ‹เชกเชฒ เชฎเชพเชŸเซ‡ เช‰เชชเชฒเชฌเซเชง tools เชฌเชฆเชฒเซ€ เชฆเซ‡เชตเซ€.

  • Responses API request เชจเซเช‚ เชฒเช•เซเชทเซเชฏ เชฌเชจเชคเซเช‚ model เชฌเชฆเชฒเซ€ เชฆเซ‡เชตเซเช‚ (เชตเซเชฏเชตเชนเชพเชฐเชฎเชพเช‚, เช† เชฎเซ‚เชณ เชชเซเชฐเซ‹เชฎเซเชชเซเชŸเชจเซ€ เชคเซเชฐเซ€เชœเซ€ item เชฌเชฆเชฒเซ‡ เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡เชฎเชพเช‚ เชฎเซ‹เชกเชฒ-เชตเชฟเชถเชฟเชทเซเชŸ instructions เชนเซ‹เชฏ เช›เซ‡).

  • sandbox configuration, approval mode เช…เชฅเชตเชพ current working directory เชฌเชฆเชฒเซ€ เชฆเซ‡เชตเซ€.

Codex เชŸเซ€เชฎเซ‡ Codex CLI เชฎเชพเช‚ เชเชตเซ€ เชจเชตเซ€ เชธเซเชตเชฟเชงเชพเช“ เช‰เชฎเซ‡เชฐเชคเซ€ เชตเช–เชคเซ‡ เช–เชพเชธ เชธเชพเชตเชšเซ‡เชค เชฐเชนเซ‡เชตเซเช‚ เชชเชกเซ‡ เช›เซ‡ เชœเซ‡ prompt caching เชจเซ‡ เชจเซเช•เชธเชพเชจ เชชเชนเซ‹เช‚เชšเชพเชกเซ€ เชถเช•เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, MCP tools เชฎเชพเชŸเซ‡เชจเชพ เช…เชฎเชพเชฐเชพ เชชเซเชฐเชพเชฐเช‚เชญเชฟเช• support เช เชเชตเซ‹ bug เชฒเชพเชตเซเชฏเซ‹ เช•เซ‡ เช…เชฎเซ‡ tools เชจเซ‡ เชธเชคเชค เชเช•เชธเชฐเช–เชพ เช•เซเชฐเชฎเชฎเชพเช‚ enumerate เชจ เช•เชฐเซ€ เชถเช•เซเชฏเชพเช‚โ (เชจเชตเซ€ เชตเชฟเชจเซเชกเซ‹เชฎเชพเช‚ เช–เซ‚เชฒเซ‡ เช›เซ‡), เชœเซ‡เชจเชพ เช•เชพเชฐเชฃเซ‡ cache misses เชฅเชฏเชพ. เชงเซเชฏเชพเชจ เชฐเชพเช–เซ‹ เช•เซ‡ MCP tools เช–เชพเชธ เชฎเซเชถเซเช•เซ‡เชฒ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡ เช•เชพเชฐเชฃ เช•เซ‡ MCP servers เชคเซ‡เชฎเชจเซ€ เชชเชพเชธเซ‡ เช‰เชชเชฒเชฌเซเชง tools เชจเซ€ เชฏเชพเชฆเซ€ notifications/tools/list_changedโ (เชจเชตเซ€ เชตเชฟเชจเซเชกเซ‹เชฎเชพเช‚ เช–เซ‚เชฒเซ‡ เช›เซ‡) notification เชฆเซเชตเชพเชฐเชพ เช—เชคเชฟเชถเซ€เชฒ เชฐเซ€เชคเซ‡ เชฌเชฆเชฒเซ€ เชถเช•เซ‡ เช›เซ‡. เชฒเชพเช‚เชฌเชพ เชธเช‚เชตเชพเชฆเชจเชพ เชฎเชงเซเชฏเชฎเชพเช‚ เช† notification เชธเซเชตเซ€เช•เชพเชฐเชตเชพเชฅเซ€ เช–เชฐเซเชšเชพเชณ cache miss เชฅเชˆ เชถเช•เซ‡ เช›เซ‡.

เชœเซเชฏเชพเช‚ เชถเช•เซเชฏ เชนเซ‹เชฏ เชคเซเชฏเชพเช‚, เชธเช‚เชตเชพเชฆเชจเชพ เชฎเชงเซเชฏเชฎเชพเช‚ เชฅเชคเชพ configuration changes เชจเซ‡ เช…เชฎเซ‡ เช…เช—เชพเช‰เชจเชพ message เชจเซ‡ เชฌเชฆเชฒเซ€เชจเซ‡ เชจเชนเซ€เช‚ เชชเชฐเช‚เชคเซ input เชฎเชพเช‚ เชจเชตเซ‹ message เช‰เชฎเซ‡เชฐเซ€เชจเซ‡ เชธเช‚เชญเชพเชณเซ€เช เช›เซ€เช:

เชชเซเชฐเชฆเชฐเซเชถเชจ เชฎเชพเชŸเซ‡ cache hits เชธเซเชจเชฟเชถเซเชšเชฟเชค เช•เชฐเชตเชพ เช…เชฎเซ‡ เช˜เชฃเซ‹ เชชเซเชฐเชฏเชคเซเชจ เช•เชฐเซ€เช เช›เซ€เช. เชเช• เช…เชจเซเชฏ เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ resource เชชเชฃ เช›เซ‡ เชœเซ‡เชจเซ‡ เช…เชฎเชพเชฐเซ‡ เชธเช‚เชญเชพเชณเชตเซเช‚ เชชเชกเซ‡ เช›เซ‡: context window.

context window เช–เซ‚เชŸเซ€ เชจ เชœเชพเชฏ เชคเซ‡ เชฎเชพเชŸเซ‡เชจเซ€ เช…เชฎเชพเชฐเซ€ เชธเชพเชฎเชพเชจเซเชฏ เชฐเชฃเชจเซ€เชคเชฟ เช เช›เซ‡ เช•เซ‡ เชœเซเชฏเชพเชฐเซ‡ tokens เชจเซ€ เชธเช‚เช–เซเชฏเชพ เชšเซ‹เช•เซเช•เชธ threshold เชฅเซ€ เชตเชงเซ€ เชœเชพเชฏ เชคเซเชฏเชพเชฐเซ‡ เชธเช‚เชตเชพเชฆเชจเซ‡ compact เช•เชฐเซ€ เชฆเซ‡เชตเซ‹. เช–เชพเชธ เช•เชฐเซ€เชจเซ‡, เช…เชฎเซ‡ input เชจเซ‡ items เชจเซ€ เชจเชตเซ€, เชจเชพเชจเซ€ เชธเซ‚เชšเชฟเชฅเซ€ เชฌเชฆเชฒเซ€ เชฆเชˆเช เช›เซ€เช เชœเซ‡ เชธเช‚เชตเชพเชฆเชจเซเช‚ เชชเซเชฐเชคเชฟเชจเชฟเชงเชฟเชคเซเชต เช•เชฐเซ‡ เช›เซ‡, เชœเซ‡เชฅเซ€ เชเชœเชจเซเชŸ เช…เชคเซเชฏเชพเชฐ เชธเซเชงเซ€ เชถเซเช‚ เชฅเชฏเซเช‚ เช›เซ‡ เชคเซ‡เชจเซ€ เชธเชฎเชœ เชธเชพเชฅเซ‡ เช†เช—เชณ เชตเชงเซ€ เชถเช•เซ‡. compaction เชจเซ€ เชชเซเชฐเชพเชฐเช‚เชญเชฟเช• implementationโ (เชจเชตเซ€ เชตเชฟเชจเซเชกเซ‹เชฎเชพเช‚ เช–เซ‚เชฒเซ‡ เช›เซ‡) เชฎเชพเชŸเซ‡ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช /compact command เชœเชพเชคเซ‡ เชšเชฒเชพเชตเชตเซ€ เชชเชกเชคเซ€, เชœเซ‡ เชนเชพเชœเชฐ เชธเช‚เชตเชพเชฆ เช…เชจเซ‡ summarizationโ (เชจเชตเซ€ เชตเชฟเชจเซเชกเซ‹เชฎเชพเช‚ เช–เซ‚เชฒเซ‡ เช›เซ‡) เชฎเชพเชŸเซ‡เชจเซ€ custom instructions เชธเชพเชฅเซ‡ Responses API เชจเซ‡ query เช•เชฐเชคเซ€. Codex เชฎเชณเซ‡เชฒเชพ summary เชงเชฐเชพเชตเชคเชพ assistant message เชจเซ‹ เชจเชตเชพ input เชคเชฐเซ€เช•เซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเซ‹โ (เชจเชตเซ€ เชตเชฟเชจเซเชกเซ‹เชฎเชพเช‚ เช–เซ‚เชฒเซ‡ เช›เซ‡) เชชเช›เซ€เชจเชพ conversation turns เชฎเชพเชŸเซ‡.

เชคเซเชฏเชพเชฐเชฅเซ€ Responses API เช–เชพเชธ /responses/compact เชเชจเซเชกเชชเซ‹เช‡เชจเซเชŸโ (เชจเชตเซ€ เชตเชฟเชจเซเชกเซ‹เชฎเชพเช‚ เช–เซ‚เชฒเซ‡ เช›เซ‡) เชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชตเชฟเช•เชธเชฟเชค เชฅเชˆ เช›เซ‡, เชœเซ‡ compaction เชตเชงเซ เช•เชพเชฐเซเชฏเช•เซเชทเชฎ เชฐเซ€เชคเซ‡ เช•เชฐเซ‡ เช›เซ‡. เชคเซ‡ items เชจเซ€ เชธเซ‚เชšเชฟโ (เชจเชตเซ€ เชตเชฟเชจเซเชกเซ‹เชฎเชพเช‚ เช–เซ‚เชฒเซ‡ เช›เซ‡) เชชเชฐเชค เช†เชชเซ‡ เช›เซ‡, เชœเซ‡เชจเซ‡ เช…เช—เชพเช‰เชจเชพ input เชจเซ€ เชœเช—เซเชฏเชพเช เชตเชพเชชเชฐเซ€เชจเซ‡ context window เช–เชพเชฒเซ€ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชธเช‚เชตเชพเชฆ เชšเชพเชฒเซ เชฐเชพเช–เซ€ เชถเช•เชพเชฏ. เช† เชธเซ‚เชšเชฟเชฎเชพเช‚ เชตเชฟเชถเซ‡เชท type=compaction item เชนเซ‹เชฏ เช›เซ‡ เชœเซ‡เชฎเชพเช‚ เช…เชธเซเชชเชทเซเชŸ encrypted_content item เชธเชพเชฎเซ‡เชฒ เชนเซ‹เชฏ เช›เซ‡, เชœเซ‡ เชฎเซ‚เชณ เชธเช‚เชตเชพเชฆ เช…เช‚เช—เซ‡ เชฎเซ‹เชกเชฒเชจเซ€ latent understanding เชœเชพเชณเชตเซ‡ เช›เซ‡. เชนเชตเซ‡, auto_compact_limitโ (เชจเชตเซ€ เชตเชฟเชจเซเชกเซ‹เชฎเชพเช‚ เช–เซ‚เชฒเซ‡ เช›เซ‡) เชตเชŸเชพเชฏ เชคเซเชฏเชพเชฐเซ‡ Codex เช† เชเชจเซเชกเชชเซ‹เช‡เชจเซเชŸ เชจเซ‹ เช†เชชเชฎเซ‡เชณเซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡.

เช†เช—เชณ เชถเซเช‚ เช†เชตเชถเซ‡

เช…เชฎเซ‡ Codex เชเชœเชจเซเชŸ เชฒเซ‚เชชเชจเซ‹ เชชเชฐเชฟเชšเชฏ เช†เชชเซเชฏเซ‹ เช…เชจเซ‡ Codex เชฎเซ‹เชกเชฒเชจเซ‡ query เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชชเซ‹เชคเชพเชจเซ‹ context เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฌเชจเชพเชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เชธเช‚เชšเชพเชฒเชฟเชค เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡ เชธเชฎเชœเชพเชตเซเชฏเซเช‚. เช† เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชฆเชฐเชฎเชฟเชฏเชพเชจ, เช…เชฎเซ‡ เชเชตเซ€ เชตเซเชฏเชตเชนเชพเชฐเชฟเช• เชฌเชพเชฌเชคเซ‹ เช…เชจเซ‡ เชถเซเชฐเซ‡เชทเซเช  เชชเชฆเซเชงเชคเชฟเช“ เชชเชฐ เชชเซเชฐเช•เชพเชถ เชชเชพเชกเซเชฏเซ‹ เชœเซ‡ Responses API เชชเชฐ เชเชœเชจเซเชŸ เชฒเซ‚เชช เชฌเชจเชพเชตเชคเชพ เช•เซ‹เชˆเชชเชฃ เชฎเชพเชŸเซ‡ เช‰เชชเชฏเซ‹เช—เซ€ เช›เซ‡.

เชœเซ‹เช•เซ‡ เชเชœเชจเซเชŸ เชฒเซ‚เชช Codex เชจเซ‹ เช†เชงเชพเชฐ เชชเซ‚เชฐเซ‹ เชชเชพเชกเซ‡ เช›เซ‡, เชคเซ‡ เชฎเชพเชคเซเชฐ เชถเชฐเซ‚เช†เชค เช›เซ‡. เช†เชตเชจเชพเชฐเซ€ เชชเซ‹เชธเซเชŸเซเชธเชฎเชพเช‚, เช…เชฎเซ‡ CLI เชจเซ€ architecture เชฎเชพเช‚ เชŠเช‚เชกเซเช‚ เชŠเชคเชฐเชถเซเช‚, tool use เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซเช•เชพเชฏ เช›เซ‡ เชคเซ‡ เชคเชชเชพเชธเซ€เชถเซเช‚ เช…เชจเซ‡ Codex เชจเชพ sandboxing model เชจเซ‡ เชตเชงเซ เชจเชœเซ€เช•เชฅเซ€ เชœเซ‹เชˆเชถเซเช‚.

เชฒเซ‡เช–เช•

Michael Bolin

เช†เชญเชพเชฐเชตเชฟเชฆเชพเชจ

Codex CLI เชฌเชจเชพเชตเชจเชพเชฐ เชธเชฎเช—เซเชฐ เชŸเซ€เชฎเชจเซ‹ เชตเชฟเชถเซ‡เชท เช†เชญเชพเชฐ.

เชตเชพเช‚เชšเชคเชพ เชฐเชนเซ‹

เชฌเชงเซเช‚ เชœเซเช“