แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒ— แƒ›แƒ—แƒแƒ•แƒแƒ  แƒจแƒ˜แƒœแƒแƒแƒ แƒกแƒ–แƒ”
OpenAI

4 แƒ—แƒ”แƒ‘แƒ”แƒ แƒ•แƒแƒšแƒ˜, 2026

แƒ˜แƒœแƒŸแƒ˜แƒœแƒ”แƒ แƒ˜แƒ

Unlocking the Codex harness: how we built the App Server

By Celia Chen, Member of the Technical Staff

แƒ˜แƒขแƒ•แƒ˜แƒ แƒ—แƒ”แƒ‘แƒโ€ฆ

In this post, weโ€™ll introduce the Codex App Server; weโ€™ll share our learnings so far on the best ways to bring Codexโ€™s capabilities into your product to help your users supercharge their workflows. Weโ€™ll cover the App Serverโ€™s architecture and protocol and how it integrates with different Codex surfaces, as well as tips on leveraging Codex, whether you want to turn Codex into a code reviewer, an SRE agent, or a coding assistant.

Origin of the App Server

Before diving into architecture, itโ€™s helpful to know the App Serverโ€™s backstory. Initially, the App Server was a practical way to reuse the Codex harness across products that gradually evolved into our standard protocol.

Codex CLI started as a TUI (terminal user interface), meaning Codex is accessed through the terminal. When we built the VS Code extension (a more IDE-friendly way to interact with Codex agents), we needed a way to use the same harness so as to drive the same agent loop from an IDE UI without re-implementing it. That meant supporting rich interaction patterns beyond request/response, such as exploring the workspace, streaming progress as the agent reasons, and emitting diffs. We first experimented with exposing Codex as an MCP serverโ (แƒ˜แƒฎแƒกแƒœแƒ”แƒ‘แƒ แƒแƒฎแƒแƒš แƒคแƒแƒœแƒฏแƒแƒ แƒแƒจแƒ˜), but maintaining MCP semantics in a way that made sense for VS Code proved difficult. Instead, we introduced a JSON-RPC protocol that mirrored the TUI loop, which became the unofficial first versionโ (แƒ˜แƒฎแƒกแƒœแƒ”แƒ‘แƒ แƒแƒฎแƒแƒš แƒคแƒแƒœแƒฏแƒแƒ แƒแƒจแƒ˜) of the App Server. At the time, we didnโ€™t expect other clients to depend on the App Server, so it wasnโ€™t designed as a stable API.

As Codex adoption grew over the next few months, internal teams and external partners wanted the ability to embed the same harness in their own products in order to accelerate their usersโ€™ software development workflows. For example, JetBrains and Xcode wanted an IDE-grade agent experience, while the Codex desktop app needed to orchestrate many Codex agents in parallel. Those demands pushed us to design a platform surface that both our products and partner integrations could safely depend on over time. It needed to be easy to integrate and backward compatible, meaning we could evolve the protocol without breaking existing clients.

Next, weโ€™ll walk through how we designed the architecture and protocol so different clients can use the same harness.

Inside the Codex harness

First, letโ€™s zoom in on whatโ€™s inside the Codex harness and how the Codex App Server exposes it to clients. In our last Codex blog, we broke down the core agent loop that orchestrates the interaction between the user, the model, and the tools. This is the core logic of the Codex harness, but thereโ€™s more to the full agent experience:

1. Thread lifecycle and persistence. A thread is a Codex conversation between a user and an agent. Codex creates, resumes, forks, and archives threads, and persists the event history so clients can reconnect and render a consistent timeline.

2. Config and auth. Codex loads configuration, manages defaults, and runs authentication flows like โ€œSign in with ChatGPT,โ€ including credential state.

3. Tool execution and extensions. Codex executes shell/file tools in a sandbox and wires up integrations like MCP servers and skills so they can participate in the agent loop under a consistent policy model.

All the agent logic we mentioned here, including the core agent loop, lives in a part of the Codex CLI codebase called โ€œCodex coreโ (แƒ˜แƒฎแƒกแƒœแƒ”แƒ‘แƒ แƒแƒฎแƒแƒš แƒคแƒแƒœแƒฏแƒแƒ แƒแƒจแƒ˜).โ€ Codex core is both a library where all the agent code lives and a runtime that can be spun up to run the agent loop and manage the persistence of one Codex thread (conversation).

To be useful, the Codex harness needs to be accessible to clients. Thatโ€™s where the App Server comes in.

แƒ“แƒ˜แƒแƒ’แƒ แƒแƒ›แƒ แƒกแƒแƒ—แƒแƒฃแƒ แƒ˜แƒ— โ€žApp server-แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก แƒœแƒแƒ™แƒแƒ“แƒ˜.โ€œ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜ stdio reader-แƒก JSON-RPC แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒก แƒฃแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒก Codex message processor-แƒ–แƒ” แƒ’แƒแƒ“แƒแƒแƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒก. processor แƒฃแƒ แƒ—แƒ˜แƒ”แƒ แƒ—แƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒก thread manager-แƒกแƒ แƒ“แƒ core thread-แƒ—แƒแƒœ lookup threads-แƒ˜แƒก, thread handles-แƒ˜แƒก, แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒšแƒ˜ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒ›แƒแƒ•แƒšแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก/แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ—, แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ™แƒ˜ แƒžแƒแƒกแƒฃแƒฎแƒ”แƒ‘แƒก แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒก แƒฃแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒก.

The App Server is both the JSON-RPC protocol between the client and the server and a long-lived process that hosts the Codex core threads. As we can see from the diagram above, an App Server process has four main components: the stdio reader, the Codex message processor, the thread manager, and core threads. The thread manager spins up one core session for each thread, and the Codex message processor then communicates with each core session directly to submit client requests and receive updates.

One client request can result in many event updates, and these detailed events are what allow us to build a rich UI on top of the App Server. Furthermore, the stdio reader and the Codex message processor serve as the translation layer between the client and Codex core threads. They translate client JSON-RPC requests into Codex core operations, listen to Codex coreโ€™s internal event stream, and then transform those low-level events into a small set of stable, UI-ready JSON-RPC notifications.

The JSON-RPC protocol between the client and the App Server is fully bidirectional. A typical thread has a client request and many server notifications. In addition, the server can initiate requests when the agent needs input, like an approval, and then pause the turn until the client responds.

The conversation primitives

Next, weโ€™ll break down the conversation primitives, the building blocks of the App Server protocol. Designing an API for an agent loop is tricky because the user/agent interaction is not a simple request/response. One user request can unfold into a structured sequence of actions that the client needs to represent faithfully: the userโ€™s input, the agentโ€™s incremental progress, artifacts produced along the way (e.g., diffs). To make that interaction stream easy to integrate and resilient across UIs, we landed on three core primitives with clear boundaries and lifecycles:

1. Item: An item is the atomic unit of input/output in Codex. Items are typed (e.g., user message, agent message, tool execution, approval request, diff) and each has an explicit lifecycle:

  • item/started when the item begins

  • optional item/*/delta events as content streams in (for streaming item types)

  • item/completed when the item finalizes with its terminal payload

This lifecycle lets clients start rendering immediately on started, stream incremental updates on delta, and finalize on completed.

2. Turn: A turn is one unit of agent work initiated by user input. It begins when the client submits an input (for example, โ€œrun tests and summarize failuresโ€) and ends when the agent finishes producing outputs for that input. A turn contains a sequence of items that represent the intermediate steps and outputs produced along the way.

3. Thread: A thread is the durable container for an ongoing Codex session between a user and an agent. It contains multiple turns. Threads can be created, resumed, forked, and archived. Thread history is persisted so clients can reconnect and render a consistent timeline.

Now, weโ€™ll look at a simplified conversation between a client and an agent, where the conversation is represented by primitives:

แƒ“แƒ˜แƒแƒ’แƒ แƒแƒ›แƒ แƒฌแƒแƒ แƒฌแƒ”แƒ แƒ˜แƒ— โ€žแƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜-แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ˜แƒก แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒœแƒแƒ™แƒแƒ“แƒ˜: แƒ˜แƒœแƒ˜แƒชแƒ˜แƒแƒšแƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก handshake.โ€œ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒก แƒฃแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒก initialize แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒแƒก clientInfo-แƒ˜แƒ—. แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ แƒžแƒแƒกแƒฃแƒฎแƒแƒ‘แƒก result แƒ›แƒแƒ•แƒšแƒ”แƒœแƒ˜แƒ—, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก userAgent แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒก โ€žmy_client/1.0.โ€œ

At the beginning of the conversation, the client and the server need to establish the initialize handshake. The client must send a single initialize request before any other method, and the server acknowledges with a response. This gives the server a chance to advertise capabilities and lets both sides agree on protocol versioning, feature flags, and defaults before the real work begins. Hereโ€™s an example payload from OpenAIโ€™s VS Code extension:

JSON

1
{
2
"method": "initialize",
3
"id": 0,
4
"params": {
5
"clientInfo": {
6
"name": "codex_vscode",
7
"title": "Codex VS Code Extension",
8
"version": "0.1.0"
9
}
10
}
11
}

This is what the server returns:

JSON

1
{
2
"id": 0,
3
"result": {
4
"userAgent": "codex_vscode/0.94.0-alpha.7 (Mac OS 26.2.0; arm64) vscode/2.4.22 (codex_vscode; 0.1.0)"
5
}
6
}
แƒ“แƒ˜แƒแƒ’แƒ แƒแƒ›แƒ แƒกแƒแƒ—แƒแƒฃแƒ แƒ˜แƒ— โ€žแƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜-แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ˜แƒก แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒœแƒแƒ™แƒแƒ“แƒ˜: thread-แƒ˜แƒกแƒ แƒ“แƒ turn-แƒ˜แƒก แƒกแƒแƒกแƒ˜แƒชแƒแƒชแƒฎแƒšแƒ แƒชแƒ˜แƒ™แƒšแƒ˜.โ€œ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ” แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒก thread/start แƒ“แƒ turn/start แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒก. แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒก แƒ›แƒแƒ•แƒšแƒ”แƒœแƒ”แƒ‘แƒก โ€” thread/started, turn/started, item/started แƒ“แƒ item/completed โ€” แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒก turn-แƒก, แƒกแƒแƒ“แƒแƒช แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒแƒ โ€žแƒ’แƒแƒฃแƒจแƒ•แƒ˜ แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜ แƒ“แƒ แƒจแƒ”แƒแƒฏแƒแƒ›แƒ” แƒฉแƒแƒ•แƒแƒ แƒ“แƒœแƒ”แƒ‘แƒ˜.โ€œ

When a client makes a new request, it will first create a thread and then a turn. The server will send back notifications for progress (thread/started and turn/started). It will also send back inputs it registers as items, like the user message here.

แƒ“แƒ˜แƒแƒ’แƒ แƒแƒ›แƒ แƒกแƒแƒ—แƒแƒฃแƒ แƒ˜แƒ— โ€žแƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜-แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ˜แƒก แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒœแƒแƒ™แƒแƒ“แƒ˜: แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒ˜แƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ แƒแƒ แƒฉแƒ”แƒ•แƒ˜แƒ—แƒ˜ แƒ“แƒแƒ›แƒขแƒ™แƒ˜แƒชแƒ”แƒ‘แƒ˜แƒ—.โ€œ แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒ˜แƒก แƒ’แƒแƒ›แƒแƒซแƒแƒฎแƒ”แƒ‘แƒ˜แƒกแƒแƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒก item/started-แƒก, แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ item/commandExecution/requestApproval-แƒก แƒ›แƒ˜แƒ–แƒ”แƒ–แƒ˜แƒ— (โ€žแƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒโ€œ). แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜ แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒก แƒ“แƒแƒ›แƒขแƒ™แƒ˜แƒชแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ•แƒšแƒ”แƒœแƒแƒก (allow/deny). แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒก item/completed-แƒก, แƒกแƒแƒ“แƒแƒช แƒœแƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ˜แƒ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ (โ€žpnpm testโ€œ).

Tool calls are also sent back to the client as items. Additionally, the server may ask for client approval before it can run an action by sending a server request. The approval will pause the turn until the client replies with either โ€œallowโ€ or โ€œdeny.โ€ This is what the approval flow looks like in the VS Code extension:

แƒ›แƒฃแƒฅแƒ˜ แƒ—แƒ”แƒ›แƒ˜แƒก แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒจแƒ˜ แƒœแƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ˜ แƒœแƒ”แƒ‘แƒแƒ แƒ—แƒ•แƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ”แƒ™แƒ˜แƒ—แƒฎแƒ”แƒ‘แƒ: โ€žแƒ’แƒ˜แƒœแƒ“แƒแƒ— แƒ›แƒแƒ›แƒชแƒ”แƒ— แƒœแƒ”แƒ‘แƒแƒ แƒ—แƒ•แƒ, แƒ แƒแƒ› แƒแƒ› แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒกแƒ˜แƒ•แƒ แƒชแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ’แƒแƒ•แƒฃแƒจแƒ•แƒ pnpm test?โ€œ แƒฉแƒแƒ›แƒแƒ—แƒ•แƒšแƒ˜แƒšแƒ˜แƒ แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ”แƒ‘แƒ˜: 1) แƒ“แƒ˜แƒแƒฎ, 2) แƒ“แƒ˜แƒแƒฎ แƒ“แƒ แƒแƒฆแƒแƒ  แƒ›แƒ™แƒ˜แƒ—แƒฎแƒ pnpm test-แƒ˜แƒ— แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒฃแƒš แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ–แƒ”, แƒ“แƒ 3) แƒแƒ แƒ; แƒฅแƒ•แƒ”แƒ›แƒแƒ— แƒแƒ แƒ˜แƒก Submit แƒฆแƒ˜แƒšแƒแƒ™แƒ˜.
แƒ“แƒ˜แƒแƒ’แƒ แƒแƒ›แƒ แƒกแƒแƒ—แƒแƒฃแƒ แƒ˜แƒ— โ€žแƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜-แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ˜แƒก แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒœแƒแƒ™แƒแƒ“แƒ˜: แƒแƒ’แƒ”แƒœแƒขแƒ˜แƒก แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก แƒกแƒขแƒ แƒ˜แƒ›แƒ˜แƒœแƒ’แƒ˜แƒก แƒœแƒแƒ™แƒแƒ“แƒ˜.โ€œ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ แƒแƒกแƒ˜แƒกแƒขแƒ”แƒœแƒขแƒ˜แƒก แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒแƒก แƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒแƒ“ แƒกแƒขแƒ แƒ˜แƒ›แƒแƒ•แƒก: item/started, แƒแƒ แƒ˜ agentMessage/delta แƒ›แƒแƒ•แƒšแƒ”แƒœแƒ (โ€ž3 แƒขแƒ”แƒกแƒขแƒ˜ แƒ’แƒแƒ•แƒฃแƒจแƒ•แƒ˜.โ€œ, โ€žแƒงแƒ•แƒ”แƒšแƒ แƒฌแƒแƒ แƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ— แƒ’แƒแƒ•แƒ˜แƒ“แƒโ€œ), แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ item/completed. turn แƒกแƒ แƒฃแƒšแƒ“แƒ”แƒ‘แƒ turn/completed-แƒ˜แƒ—.

In the end, the server sends an agent message and then ends the turn with turn/completed. The agent message delta events stream pieces of the message back until the message is finalized with item/completed.

แƒ“แƒ˜แƒแƒ’แƒ แƒแƒ›แƒแƒจแƒ˜ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒ’แƒแƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒฃแƒ™แƒ”แƒ— แƒฌแƒแƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ—แƒฃ แƒกแƒ แƒฃแƒšแƒ˜ turn-แƒ˜แƒก JSON-แƒ˜แƒก แƒœแƒแƒฎแƒ•แƒ แƒ’แƒกแƒฃแƒ แƒ—, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— Codex CLI-แƒ˜แƒก แƒ แƒ”แƒžแƒแƒ–แƒ˜แƒขแƒแƒ แƒ˜แƒฃแƒ›แƒ˜แƒ“แƒแƒœ แƒ’แƒแƒฃแƒจแƒ•แƒแƒ— แƒขแƒ”แƒกแƒข-แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜:

Bash

1
codex debug app-server send-message-v2 "run tests and summarize failures"

แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ”แƒ‘แƒ—แƒแƒœ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ

แƒแƒฎแƒšแƒ แƒ•แƒœแƒแƒฎแƒแƒ—, แƒ แƒแƒ’แƒแƒ  แƒแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒก แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒฃแƒ แƒ˜ แƒ–แƒ”แƒ“แƒแƒžแƒ˜แƒ แƒ˜ Codex-แƒก App Server-แƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ—. แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒแƒ•แƒ— แƒกแƒแƒ› แƒžแƒแƒขแƒ”แƒ แƒœแƒก: แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ• แƒแƒžแƒ”แƒ‘แƒกแƒ แƒ“แƒ IDE-แƒ”แƒ‘แƒก, Codex-แƒ˜แƒก แƒ•แƒ”แƒ‘-แƒ แƒแƒœแƒขแƒแƒ˜แƒ›แƒก แƒ“แƒ TUI-แƒก.

แƒ“แƒ˜แƒแƒ’แƒ แƒแƒ›แƒ แƒกแƒแƒ—แƒแƒฃแƒ แƒ˜แƒ— โ€žCodex แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช Codex harness-แƒ—แƒแƒœ app server-แƒ˜แƒก แƒ’แƒแƒ•แƒšแƒ˜แƒ—แƒแƒ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜.โ€œ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒ›แƒฎแƒแƒ แƒ˜แƒก แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜ (Codex Desktop App, TUI/CLI, Web Runtime) แƒ“แƒ แƒ›แƒ”แƒกแƒแƒ›แƒ” แƒ›แƒฎแƒแƒ แƒ˜แƒก แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜ (JetBrains IDE-แƒ”แƒ‘แƒ˜, VS Code, Xcode) JSON-RPC แƒ’แƒแƒ›แƒแƒซแƒแƒฎแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒ— แƒฃแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ˜แƒแƒœ Codex harness-แƒก.

แƒกแƒแƒ›แƒ˜แƒ•แƒ”แƒจแƒ˜ แƒขแƒ แƒแƒœแƒกแƒžแƒแƒ แƒขแƒ˜ แƒแƒ แƒ˜แƒก JSON-RPC stdio-แƒ–แƒ” (JSONL). JSON-RPC แƒแƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ”แƒ‘แƒก แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก binding-แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒแƒก แƒ—แƒฅแƒ•แƒ”แƒœแƒ—แƒ•แƒ˜แƒก แƒกแƒแƒกแƒฃแƒ แƒ•แƒ”แƒš แƒ”แƒœแƒแƒจแƒ˜. Codex-แƒ˜แƒก แƒ–แƒ”แƒ“แƒแƒžแƒ˜แƒ แƒ”แƒ‘แƒ›แƒ แƒ“แƒ แƒžแƒแƒ แƒขแƒœแƒ˜แƒแƒ แƒฃแƒšแƒ›แƒ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ”แƒ‘แƒ›แƒ App Server-แƒ˜แƒก แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜ แƒ“แƒแƒœแƒ”แƒ แƒ’แƒ”แƒก แƒ˜แƒกแƒ”แƒ— แƒ”แƒœแƒ”แƒ‘แƒ–แƒ”, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ Go, Python, TypeScript, Swift แƒ“แƒ Kotlin. TypeScript-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  Rust-แƒ˜แƒก แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ˜แƒ“แƒแƒœ แƒ“แƒแƒแƒ’แƒ”แƒœแƒ”แƒ แƒ˜แƒ แƒแƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒ—:

Bash

1
codex app-server generate-ts

แƒกแƒฎแƒ•แƒ แƒ”แƒœแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— JSON Schema-แƒก แƒžแƒแƒ™แƒ”แƒขแƒ˜ แƒ“แƒแƒแƒ’แƒ”แƒœแƒ”แƒ แƒ˜แƒ แƒแƒ— แƒ“แƒ แƒ’แƒแƒ“แƒแƒกแƒชแƒ”แƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ—แƒ•แƒ˜แƒก แƒกแƒแƒกแƒฃแƒ แƒ•แƒ”แƒš แƒ™แƒแƒ“แƒ˜แƒก แƒ’แƒ”แƒœแƒ”แƒ แƒแƒขแƒแƒ แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒ—:

Bash

1
codex app-server generate-json-schema

แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒแƒžแƒ”แƒ‘แƒ˜ แƒ“แƒ IDE-แƒ”แƒ‘แƒ˜

VS Code-แƒ˜แƒก แƒ”แƒ™แƒ แƒแƒœแƒ˜แƒก แƒกแƒฃแƒ แƒแƒ—แƒ˜ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ Codex แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒ˜แƒ—. แƒ’แƒแƒฎแƒกแƒœแƒ˜แƒšแƒ˜แƒ Rust-แƒ˜แƒก แƒขแƒ”แƒกแƒขแƒ˜แƒก แƒคแƒแƒ˜แƒšแƒ˜, แƒ›แƒ˜แƒก แƒฅแƒ•แƒ”แƒ›แƒแƒ— แƒ™แƒ˜ Codex-แƒ˜แƒก แƒžแƒแƒœแƒ”แƒšแƒ˜ แƒแƒฆแƒฌแƒ”แƒ แƒก แƒ›แƒฎแƒแƒšแƒแƒ“ fmt-แƒ˜แƒกแƒ แƒ“แƒ cargo test -p codex-app-server-แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒแƒก แƒ“แƒ แƒแƒชแƒœแƒแƒ‘แƒ”แƒ‘แƒก, แƒ แƒแƒ› แƒคแƒแƒ แƒ›แƒแƒขแƒ˜แƒ แƒ”แƒ‘แƒ แƒ“แƒ แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜ แƒ›แƒ˜แƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ”แƒแƒ‘แƒก, แƒกแƒแƒ‘แƒแƒšแƒแƒ แƒฌแƒแƒ แƒ›แƒแƒขแƒ”แƒ‘แƒ/แƒฌแƒแƒ แƒฃแƒ›แƒแƒขแƒ”แƒ‘แƒšแƒแƒ‘แƒ˜แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜แƒก แƒ›แƒแƒšแƒแƒ“แƒ˜แƒœแƒจแƒ˜.

แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜, แƒ แƒแƒ’แƒแƒ แƒช แƒฌแƒ”แƒกแƒ˜, แƒแƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ”แƒ‘แƒ”แƒœ แƒแƒœ แƒ˜แƒฆแƒ”แƒ‘แƒ”แƒœ แƒžแƒšแƒแƒขแƒคแƒแƒ แƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒกแƒžแƒ”แƒชแƒ˜แƒคแƒ˜แƒ™แƒฃแƒ  App Server-แƒ˜แƒก แƒ‘แƒ˜แƒœแƒแƒ แƒฃแƒš แƒคแƒแƒ˜แƒšแƒก, แƒฃแƒจแƒ•แƒ”แƒ‘แƒ”แƒœ แƒ›แƒแƒก แƒ แƒแƒ’แƒแƒ แƒช แƒฎแƒแƒœแƒ’แƒ แƒซแƒšแƒ˜แƒ•แƒแƒ“ แƒ›แƒแƒ›แƒฃแƒจแƒแƒ•แƒ” แƒจแƒ•แƒ˜แƒš แƒžแƒ แƒแƒชแƒ”แƒกแƒก แƒ“แƒ JSON-RPC-แƒกแƒ—แƒ•แƒ˜แƒก แƒฆแƒ˜แƒแƒ“ แƒ˜แƒœแƒแƒ แƒฉแƒฃแƒœแƒ”แƒ‘แƒ”แƒœ แƒแƒ แƒ›แƒฎแƒ แƒ˜แƒ• stdio แƒแƒ แƒฎแƒก. แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒฉแƒ•แƒ”แƒœแƒก VS Code-แƒ˜แƒก แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒแƒกแƒ แƒ“แƒ Desktop App-แƒจแƒ˜ แƒ›แƒ˜แƒฌแƒแƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒแƒ แƒขแƒ”แƒคแƒแƒฅแƒขแƒ˜ แƒ›แƒแƒ˜แƒชแƒแƒ•แƒก แƒžแƒšแƒแƒขแƒคแƒแƒ แƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒกแƒžแƒ”แƒชแƒ˜แƒคแƒ˜แƒ™แƒฃแƒ  Codex แƒ‘แƒ˜แƒœแƒแƒ แƒก แƒ“แƒ แƒ›แƒ˜แƒ‘แƒ›แƒฃแƒšแƒ˜แƒ แƒจแƒ”แƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒฃแƒš แƒ•แƒ”แƒ แƒกแƒ˜แƒแƒ–แƒ”, แƒ แƒแƒ—แƒ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ›แƒ แƒงแƒแƒ•แƒ”แƒšแƒ—แƒ•แƒ˜แƒก แƒ–แƒฃแƒกแƒขแƒแƒ“ แƒ˜แƒก แƒ‘แƒ˜แƒขแƒ”แƒ‘แƒ˜ แƒ’แƒแƒฃแƒจแƒ•แƒแƒก, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ•แƒแƒšแƒ˜แƒ“แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ’แƒ•แƒแƒฅแƒ•แƒก.

แƒงแƒ•แƒ”แƒšแƒ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒแƒก แƒแƒ  แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒฎแƒจแƒ˜แƒ แƒแƒ“ แƒ›แƒ˜แƒฌแƒแƒ“แƒ”แƒ‘แƒ. แƒ–แƒแƒ’แƒ˜ แƒžแƒแƒ แƒขแƒœแƒ˜แƒแƒ แƒ˜, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“ Xcode, แƒ แƒ”แƒšแƒ˜แƒ–แƒ˜แƒก แƒชแƒ˜แƒ™แƒšแƒ”แƒ‘แƒก แƒงแƒแƒคแƒก แƒ˜แƒ›แƒ˜แƒ—, แƒ แƒแƒ› แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒก แƒกแƒขแƒแƒ‘แƒ˜แƒšแƒฃแƒ แƒแƒ“ แƒขแƒแƒ•แƒ”แƒ‘แƒก แƒ“แƒ แƒกแƒแƒญแƒ˜แƒ แƒแƒ”แƒ‘แƒ˜แƒกแƒแƒก แƒฃแƒคแƒ แƒ แƒแƒฎแƒแƒš App Server-แƒ˜แƒก แƒ‘แƒ˜แƒœแƒแƒ แƒ–แƒ” แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒ”แƒ‘แƒก. แƒแƒกแƒ” แƒ›แƒแƒ— แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒแƒ— แƒ›แƒ˜แƒ˜แƒฆแƒแƒœ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ˜แƒก แƒ’แƒแƒฃแƒ›แƒฏแƒแƒ‘แƒ”แƒกแƒ”แƒ‘แƒ”แƒ‘แƒ˜ (แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒฃแƒ™แƒ”แƒ—แƒ”แƒกแƒ˜ แƒแƒ•แƒขแƒ-แƒ™แƒแƒ›แƒžแƒแƒฅแƒขแƒแƒชแƒ˜แƒ Codex core-แƒจแƒ˜ แƒแƒœ แƒแƒฎแƒšแƒแƒ“ แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ˜แƒšแƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ”แƒ‘แƒ˜) แƒ“แƒ แƒ’แƒแƒแƒ•แƒ แƒชแƒ”แƒšแƒแƒœ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒกแƒฌแƒแƒ แƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒแƒฎแƒแƒšแƒ˜ แƒ แƒ”แƒšแƒ˜แƒ–แƒ˜แƒก แƒšแƒแƒ“แƒ˜แƒœแƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”. App Server-แƒ˜แƒก JSON-RPC แƒ–แƒ”แƒ“แƒแƒžแƒ˜แƒ แƒ˜ แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒšแƒ˜แƒ แƒฃแƒ™แƒฃแƒ›แƒ˜แƒ›แƒแƒ แƒ—แƒฃแƒšแƒแƒ“ แƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒแƒ“แƒแƒ“, แƒแƒ›แƒ˜แƒขแƒแƒ› แƒซแƒ•แƒ”แƒš แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ”แƒ‘แƒก แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒแƒ— แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒแƒ“ แƒ”แƒกแƒแƒฃแƒ‘แƒ แƒแƒœ แƒแƒฎแƒแƒš แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒก.

Codex Web

Codex-แƒ˜แƒก แƒ•แƒ”แƒ‘-แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒ˜แƒก แƒ”แƒ™แƒ แƒแƒœแƒ˜แƒก แƒกแƒฃแƒ แƒแƒ—แƒ˜, แƒกแƒแƒ“แƒแƒช แƒœแƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ˜แƒ แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒ แƒกแƒแƒ—แƒแƒฃแƒ แƒ˜แƒ— โ€žUpdate login success message.โ€œ แƒ›แƒแƒ แƒชแƒฎแƒ”แƒœแƒ แƒžแƒแƒœแƒ”แƒšแƒ˜ แƒแƒฏแƒแƒ›แƒ”แƒ‘แƒก แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒก, แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒก แƒ“แƒ แƒจแƒ”แƒชแƒ•แƒšแƒ˜แƒš แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒก, แƒฎแƒแƒšแƒ แƒ›แƒแƒ แƒฏแƒ•แƒ”แƒœแƒ แƒžแƒแƒœแƒ”แƒšแƒ˜ แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒก login.rs-แƒ˜แƒก แƒ™แƒแƒ“แƒ˜แƒก diff-แƒก, แƒกแƒแƒ“แƒแƒช แƒจแƒ”แƒกแƒ•แƒšแƒ˜แƒก แƒฌแƒแƒ แƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก แƒคแƒแƒ แƒ›แƒฃแƒšแƒ˜แƒ แƒ”แƒ‘แƒ แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ.

Codex Web แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก Codex harness-แƒก, แƒ›แƒแƒ’แƒ แƒแƒ› แƒฃแƒจแƒ•แƒ”แƒ‘แƒก แƒ›แƒแƒก แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒฃแƒš แƒ’แƒแƒ แƒ”แƒ›แƒแƒจแƒ˜. worker แƒแƒ›แƒ–แƒแƒ“แƒ”แƒ‘แƒก แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒก แƒ’แƒแƒ›แƒแƒขแƒแƒœแƒ˜แƒšแƒ˜ แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒกแƒ˜แƒ•แƒ แƒชแƒ˜แƒ—, แƒ›แƒ˜แƒก แƒจแƒ˜แƒ’แƒœแƒ˜แƒ— แƒฃแƒจแƒ•แƒ”แƒ‘แƒก App Server-แƒ˜แƒก แƒ‘แƒ˜แƒœแƒแƒ แƒก แƒ“แƒ แƒ˜แƒœแƒแƒ แƒฉแƒฃแƒœแƒ”แƒ‘แƒก แƒฎแƒแƒœแƒ’แƒ แƒซแƒšแƒ˜แƒ• JSON-RPC over stdio2 แƒแƒ แƒฎแƒก. แƒ•แƒ”แƒ‘-แƒแƒžแƒ˜ (แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒ‘แƒ แƒแƒฃแƒ–แƒ”แƒ แƒ˜แƒก แƒฉแƒแƒœแƒแƒ แƒ—แƒจแƒ˜ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก) Codex backend-แƒก แƒ”แƒกแƒแƒฃแƒ‘แƒ แƒ”แƒ‘แƒ HTTP-แƒ˜แƒ— แƒ“แƒ SSE-แƒ˜แƒ—, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช worker-แƒ˜แƒก แƒ›แƒ˜แƒ”แƒ  แƒ’แƒ”แƒœแƒ”แƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒš task แƒ›แƒแƒ•แƒšแƒ”แƒœแƒ”แƒ‘แƒก แƒกแƒขแƒ แƒ˜แƒ›แƒแƒ•แƒก. แƒ”แƒก แƒ‘แƒ แƒแƒฃแƒ–แƒ”แƒ แƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ˜แƒก UI-แƒก แƒ›แƒกแƒฃแƒ‘แƒฃแƒฅแƒก แƒขแƒแƒ•แƒ”แƒ‘แƒก แƒ“แƒ แƒแƒ›แƒแƒ•แƒ” แƒ“แƒ แƒแƒก แƒ’แƒ•แƒแƒซแƒšแƒ”แƒ•แƒก แƒ—แƒแƒœแƒ›แƒ˜แƒ›แƒ“แƒ”แƒ•แƒ แƒฃแƒš แƒ แƒแƒœแƒขแƒแƒ˜แƒ›แƒก แƒ“แƒ”แƒกแƒ™แƒขแƒแƒžแƒกแƒ แƒ“แƒ แƒ•แƒ”แƒ‘แƒ–แƒ”.

แƒ แƒแƒ“แƒ’แƒแƒœ แƒ•แƒ”แƒ‘-แƒกแƒ”แƒกแƒ˜แƒ”แƒ‘แƒ˜ แƒ”แƒคแƒ”แƒ›แƒ”แƒ แƒฃแƒšแƒ˜แƒ (แƒฉแƒแƒœแƒแƒ แƒ—แƒ”แƒ‘แƒ˜ แƒ˜แƒฎแƒฃแƒ แƒ”แƒ‘แƒ, แƒฅแƒกแƒ”แƒšแƒ”แƒ‘แƒ˜ แƒฌแƒงแƒ“แƒ”แƒ‘แƒ), แƒ•แƒ”แƒ‘-แƒแƒžแƒ˜ แƒ•แƒ”แƒ  แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒฎแƒแƒœแƒ’แƒ แƒซแƒšแƒ˜แƒ•แƒแƒ“ แƒ›แƒ˜แƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ” แƒแƒ›แƒแƒชแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒœแƒ“แƒ แƒฌแƒงแƒแƒ แƒ. แƒ›แƒ“แƒ’แƒแƒ›แƒแƒ แƒ”แƒแƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒžแƒ แƒแƒ’แƒ แƒ”แƒกแƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ” แƒจแƒ”แƒœแƒแƒฎแƒ•แƒ แƒœแƒ˜แƒจแƒœแƒแƒ•แƒก, แƒ แƒแƒ› แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ แƒ’แƒ แƒซแƒ”แƒšแƒ“แƒ”แƒ‘แƒ แƒ›แƒแƒจแƒ˜แƒœแƒแƒช แƒ™แƒ˜, แƒ—แƒฃ แƒฉแƒแƒœแƒแƒ แƒ—แƒ˜ แƒ’แƒแƒฅแƒ แƒ”แƒ‘แƒ. แƒกแƒขแƒ แƒ˜แƒ›แƒ˜แƒœแƒ’แƒ˜แƒก แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ˜ แƒ“แƒ แƒจแƒ”แƒœแƒแƒฎแƒฃแƒšแƒ˜ thread แƒกแƒ”แƒกแƒ˜แƒ”แƒ‘แƒ˜ แƒแƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ”แƒ‘แƒก แƒแƒฎแƒแƒš แƒกแƒ”แƒกแƒ˜แƒแƒก แƒฎแƒ”แƒšแƒแƒฎแƒšแƒ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒแƒก, แƒ’แƒแƒ’แƒ แƒซแƒ”แƒšแƒ”แƒ‘แƒแƒก แƒ˜แƒฅแƒ˜แƒ“แƒแƒœ, แƒกแƒแƒ“แƒแƒช แƒ’แƒแƒฉแƒ”แƒ แƒ“แƒ, แƒ“แƒ แƒ›แƒ“แƒ’แƒแƒ›แƒแƒ แƒ”แƒแƒ‘แƒ˜แƒก แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒจแƒ˜ แƒ—แƒแƒ•แƒ˜แƒ“แƒแƒœ แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ” แƒ“แƒแƒฌแƒ”แƒ•แƒแƒก.

TUI/Codex CLI

แƒขแƒ”แƒ แƒ›แƒ˜แƒœแƒแƒšแƒ˜แƒก แƒ”แƒ™แƒ แƒแƒœแƒ˜แƒก แƒกแƒฃแƒ แƒแƒ—แƒ˜, แƒกแƒแƒ“แƒแƒช แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ Codex CLI. แƒฉแƒแƒœแƒก OpenAI Codex-แƒ˜แƒก แƒ‘แƒแƒœแƒ”แƒ แƒ˜ แƒ›แƒแƒ“แƒ”แƒšแƒ˜แƒ— gpt-5.2-codex medium, แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ โ€žexplain app server to meโ€œ แƒ“แƒ โ€žWorkingโ€œ แƒกแƒขแƒแƒขแƒฃแƒกแƒ˜. แƒฅแƒ•แƒ”แƒ›แƒแƒ— แƒฉแƒแƒœแƒก แƒจแƒ”แƒ—แƒแƒ•แƒแƒ–แƒ”แƒ‘แƒ: โ€žwrite tests for @filenameโ€œ, แƒ›แƒแƒšแƒกแƒแƒฎแƒ›แƒแƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ”แƒ‘แƒ˜แƒ—.

แƒ˜แƒกแƒขแƒแƒ แƒ˜แƒฃแƒšแƒแƒ“, TUI แƒ˜แƒงแƒ โ€žแƒœแƒแƒขแƒ˜แƒฃแƒ แƒ˜โ€œ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ“แƒ แƒ˜แƒ›แƒแƒ•แƒ” แƒžแƒ แƒแƒชแƒ”แƒกแƒจแƒ˜, แƒกแƒแƒ“แƒแƒช แƒแƒ’แƒ”แƒœแƒขแƒ˜แƒก แƒชแƒ˜แƒ™แƒšแƒ˜, แƒ“แƒ app-server แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ˜แƒก แƒœแƒแƒชแƒ•แƒšแƒแƒ“ แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  Rust core แƒขแƒ˜แƒžแƒ”แƒ‘แƒก แƒ”แƒกแƒแƒฃแƒ‘แƒ แƒ”แƒ‘แƒแƒ“แƒ. แƒ”แƒก แƒแƒ“แƒ แƒ”แƒฃแƒš แƒ˜แƒขแƒ”แƒ แƒแƒชแƒ˜แƒแƒก แƒแƒฉแƒฅแƒแƒ แƒ”แƒ‘แƒ“แƒ, แƒ—แƒฃแƒ›แƒชแƒ TUI-แƒก แƒ’แƒแƒœแƒกแƒแƒ™แƒฃแƒ—แƒ แƒ”แƒ‘แƒฃแƒš แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒ“แƒแƒช แƒแƒฅแƒชแƒ”แƒ•แƒ“แƒ.

แƒแƒฎแƒšแƒ, แƒ แƒแƒชแƒ App Server แƒฃแƒ™แƒ•แƒ” แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก, แƒ•แƒ’แƒ”แƒ’แƒ›แƒแƒ•แƒ— TUI-แƒ˜แƒก แƒ แƒ”แƒคแƒแƒฅแƒขแƒแƒ แƒ˜แƒœแƒ’แƒกโ (แƒ˜แƒฎแƒกแƒœแƒ”แƒ‘แƒ แƒแƒฎแƒแƒš แƒคแƒแƒœแƒฏแƒแƒ แƒแƒจแƒ˜), แƒ แƒแƒ—แƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒก แƒ“แƒ แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ แƒ˜ แƒกแƒฎแƒ•แƒ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒ•แƒ˜แƒ— แƒ›แƒแƒ˜แƒฅแƒชแƒ”แƒก: แƒ’แƒแƒฃแƒจแƒ•แƒแƒก App Server-แƒ˜แƒก แƒจแƒ•แƒ˜แƒš-แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜, แƒ˜แƒกแƒแƒฃแƒ‘แƒ แƒแƒก JSON-RPC-แƒ˜แƒ— stdio-แƒ–แƒ” แƒ“แƒ แƒแƒฉแƒ•แƒ”แƒœแƒแƒก แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒกแƒขแƒ แƒ˜แƒ›แƒ˜แƒœแƒ’-แƒ›แƒแƒ•แƒšแƒ”แƒœแƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ“แƒแƒ›แƒขแƒ™แƒ˜แƒชแƒ”แƒ‘แƒ”แƒ‘แƒ˜. แƒ”แƒก แƒฎแƒกแƒœแƒ˜แƒก แƒ˜แƒกแƒ”แƒ— แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒžแƒ แƒแƒชแƒ”แƒกแƒ”แƒ‘แƒก, แƒกแƒแƒ“แƒแƒช TUI-แƒก แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒ“แƒแƒฃแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ“แƒ”แƒก Codex แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ“แƒ˜แƒกแƒขแƒแƒœแƒชแƒ˜แƒฃแƒ  แƒ›แƒแƒœแƒฅแƒแƒœแƒแƒ–แƒ” แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก, แƒจแƒ”แƒ˜แƒœแƒแƒ แƒฉแƒฃแƒœแƒแƒก แƒแƒ’แƒ”แƒœแƒขแƒ˜ แƒ’แƒแƒ›แƒแƒ—แƒ•แƒšแƒแƒกแƒ—แƒแƒœ แƒแƒฎแƒšแƒแƒก แƒ“แƒ แƒ’แƒแƒแƒ’แƒ แƒซแƒ”แƒšแƒแƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ แƒ›แƒแƒจแƒ˜แƒœแƒแƒช แƒ™แƒ˜, แƒ—แƒฃ แƒšแƒ”แƒžแƒขแƒแƒžแƒ˜ แƒ“แƒแƒ˜แƒซแƒ˜แƒœแƒ”แƒ‘แƒก แƒแƒœ แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜ แƒ’แƒแƒฌแƒงแƒ“แƒ”แƒ‘แƒ, แƒ“แƒ แƒ›แƒแƒ˜แƒœแƒช แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ•แƒแƒ“ แƒ›แƒแƒ’แƒแƒฌแƒแƒ“แƒแƒ— แƒชแƒแƒชแƒฎแƒแƒšแƒ˜ แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ”แƒ‘แƒ˜.

แƒกแƒฌแƒแƒ แƒ˜ แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ˜แƒก แƒแƒ แƒฉแƒ”แƒ•แƒ

Codex App Server แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒ™แƒšแƒแƒกแƒ˜แƒก แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒ”แƒ—แƒแƒ“แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒจแƒ˜แƒช แƒจแƒ”แƒ•แƒ˜แƒœแƒแƒ แƒฉแƒฃแƒœแƒ”แƒ‘แƒ—, แƒ—แƒฃแƒ›แƒชแƒ แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒกแƒฎแƒ•แƒ แƒ›แƒ”แƒ—แƒแƒ“แƒ”แƒ‘แƒ˜แƒช แƒฃแƒคแƒ แƒ แƒจแƒ”แƒ–แƒฆแƒฃแƒ“แƒฃแƒšแƒ˜ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒœแƒแƒšแƒ˜แƒ—. แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒแƒ“, แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ”แƒ‘แƒก แƒ•แƒฃแƒ แƒฉแƒ”แƒ•แƒ— Codex-แƒ—แƒแƒœ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒœ Codex App Server, แƒ›แƒแƒ’แƒ แƒแƒ› แƒฆแƒ˜แƒ แƒก แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒ”แƒ—แƒแƒ“แƒ˜แƒก แƒœแƒแƒฎแƒ•แƒ แƒ“แƒ แƒ›แƒแƒ—แƒ˜ แƒžแƒšแƒฃแƒกแƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒ›แƒ˜แƒœแƒฃแƒกแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ’แƒ”แƒ‘แƒแƒช. แƒฅแƒ•แƒ”แƒ›แƒแƒ— แƒ›แƒแƒงแƒ•แƒแƒœแƒ˜แƒšแƒ˜แƒ Codex-แƒ˜แƒก แƒ›แƒแƒ แƒ—แƒ•แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒ’แƒแƒ•แƒ แƒชแƒ”แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ’แƒ–แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒ”แƒ‘แƒ˜, แƒ แƒแƒชแƒ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒ›แƒแƒ—แƒ’แƒแƒœแƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ™แƒแƒ แƒ’แƒ˜ แƒแƒ แƒฉแƒ”แƒ•แƒแƒœแƒ˜ แƒ˜แƒงแƒแƒก.

JSON-RPC แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ”แƒ‘แƒ˜

Codex แƒ แƒแƒ’แƒแƒ แƒช MCP แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜

แƒ’แƒแƒฃแƒจแƒ•แƒ˜แƒ— codex mcp-serverโ (แƒ˜แƒฎแƒกแƒœแƒ”แƒ‘แƒ แƒแƒฎแƒแƒš แƒคแƒแƒœแƒฏแƒแƒ แƒแƒจแƒ˜) แƒ“แƒ แƒ“แƒแƒฃแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ“แƒ˜แƒ— แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ แƒ˜ MCP แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒ“แƒแƒœ, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช stdio แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ แƒแƒฅแƒ•แƒก (แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, OpenAI Agents SDKโ (แƒ˜แƒฎแƒกแƒœแƒ”แƒ‘แƒ แƒแƒฎแƒแƒš แƒคแƒแƒœแƒฏแƒแƒ แƒแƒจแƒ˜)). แƒ”แƒก แƒ™แƒแƒ แƒ’แƒ˜ แƒแƒ แƒฉแƒ”แƒ•แƒแƒœแƒ˜แƒ, แƒ—แƒฃ แƒฃแƒ™แƒ•แƒ” แƒ’แƒแƒฅแƒ•แƒ— MCP-แƒ–แƒ” แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ แƒ“แƒ แƒ’แƒกแƒฃแƒ แƒ— Codex-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒซแƒแƒฎแƒ”แƒ‘แƒแƒ“แƒ˜ แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒ˜แƒก แƒกแƒแƒฎแƒ˜แƒ— แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ. แƒ›แƒ˜แƒœแƒฃแƒกแƒ˜ แƒ˜แƒกแƒแƒ, แƒ แƒแƒ› แƒ˜แƒฆแƒ”แƒ‘แƒ— แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ˜แƒ›แƒแƒก, แƒ แƒแƒกแƒแƒช MCP แƒแƒฉแƒ”แƒœแƒก, แƒแƒ›แƒ˜แƒขแƒแƒ› Codex-แƒกแƒžแƒ”แƒชแƒ˜แƒคแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒ˜แƒœแƒขแƒ”แƒ แƒแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒฃแƒคแƒ แƒ แƒ›แƒ“แƒ˜แƒ“แƒแƒ  แƒกแƒ”แƒกแƒ˜แƒฃแƒ  แƒกแƒ”แƒ›แƒแƒœแƒขแƒ˜แƒ™แƒแƒก แƒ”แƒงแƒ แƒ“แƒœแƒแƒ‘แƒ (แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, diff แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜), แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ MCP แƒกแƒแƒ‘แƒแƒšแƒแƒ แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ”แƒ‘แƒ–แƒ” แƒกแƒฃแƒคแƒ—แƒแƒ“ แƒ•แƒ”แƒ  แƒ“แƒแƒ”แƒขแƒ˜แƒแƒก.

แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ›แƒแƒ›แƒฌแƒแƒ“แƒ”แƒ‘แƒ”แƒšแƒ–แƒ” แƒ›แƒแƒ›แƒฃแƒจแƒแƒ•แƒ” แƒแƒ’แƒ”แƒœแƒขแƒ˜แƒก harness-แƒ˜แƒก แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ”แƒ‘แƒ˜

แƒ–แƒแƒ’แƒ˜ แƒ”แƒ™แƒแƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ แƒ’แƒ•แƒ—แƒแƒ•แƒแƒ–แƒแƒ‘แƒก แƒžแƒแƒ แƒขแƒแƒขแƒฃแƒš แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒก, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒ›แƒ˜แƒ›แƒแƒ แƒ—แƒแƒก แƒ›แƒ แƒแƒ•แƒแƒš แƒ›แƒแƒ“แƒ”แƒšแƒ˜แƒก แƒ›แƒแƒ›แƒฌแƒแƒ“แƒ”แƒ‘แƒ”แƒšแƒกแƒ แƒ“แƒ แƒ แƒแƒœแƒขแƒแƒ˜แƒ›แƒก. แƒ”แƒก แƒ™แƒแƒ แƒ’แƒ˜ แƒแƒ แƒฉแƒ”แƒ•แƒแƒœแƒ˜แƒ, แƒ—แƒฃ แƒ’แƒกแƒฃแƒ แƒ— แƒ”แƒ แƒ—แƒ˜ แƒแƒ‘แƒกแƒขแƒ แƒแƒฅแƒชแƒ˜แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒ แƒแƒ•แƒแƒš แƒแƒ’แƒ”แƒœแƒขแƒก แƒ™แƒแƒแƒ แƒ“แƒ˜แƒœแƒแƒชแƒ˜แƒแƒก แƒ’แƒแƒฃแƒฌแƒ”แƒ•แƒก. แƒ™แƒแƒ›แƒžแƒ แƒแƒ›แƒ˜แƒกแƒ˜ แƒ˜แƒกแƒแƒ, แƒ แƒแƒ› แƒแƒกแƒ”แƒ—แƒ˜ แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ”แƒ‘แƒ˜ แƒฎแƒจแƒ˜แƒ แƒแƒ“ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒ”แƒ แƒ—แƒ แƒ›แƒ˜แƒœแƒ˜แƒ›แƒฃแƒ›แƒ–แƒ” แƒ˜แƒงแƒ แƒ˜แƒแƒœ แƒ—แƒแƒ•แƒก, แƒ แƒแƒช แƒฃแƒคแƒ แƒ แƒ›แƒ“แƒ˜แƒ“แƒแƒ แƒ˜ แƒ˜แƒœแƒขแƒ”แƒ แƒแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒฌแƒแƒ แƒ›แƒแƒ“แƒ’แƒ”แƒœแƒแƒก แƒแƒ แƒ—แƒฃแƒšแƒ”แƒ‘แƒก, แƒ’แƒแƒœแƒกแƒแƒ™แƒฃแƒ—แƒ แƒ”แƒ‘แƒ˜แƒ— แƒ›แƒแƒจแƒ˜แƒœ, แƒ แƒแƒชแƒ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜แƒ แƒ›แƒแƒ›แƒฌแƒแƒ“แƒ”แƒ‘แƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒกแƒžแƒ”แƒชแƒ˜แƒคแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒกแƒ”แƒกแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒกแƒ”แƒ›แƒแƒœแƒขแƒ˜แƒ™แƒ. แƒ”แƒก แƒกแƒ˜แƒ•แƒ แƒชแƒ” แƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒ•แƒ˜แƒ—แƒแƒ แƒ“แƒ”แƒ‘แƒ แƒ“แƒ แƒ•แƒ”แƒšแƒ˜แƒ—, แƒ แƒแƒ› แƒ›แƒ”แƒขแƒ˜ แƒกแƒแƒ”แƒ แƒ—แƒ แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒ˜ แƒ’แƒแƒฉแƒœแƒ“แƒ”แƒ‘แƒ, แƒ แƒแƒชแƒ แƒ แƒ”แƒแƒšแƒฃแƒ แƒ˜ แƒแƒ’แƒ”แƒœแƒขแƒฃแƒ แƒ˜ แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒžแƒ แƒแƒชแƒ”แƒกแƒ”แƒ‘แƒ˜แƒก แƒฌแƒแƒ แƒ›แƒแƒกแƒแƒ“แƒ’แƒ”แƒœ แƒกแƒแƒฃแƒ™แƒ”แƒ—แƒ”แƒกแƒ แƒžแƒ แƒ˜แƒ›แƒ˜แƒขแƒ˜แƒ•แƒ”แƒ‘แƒก แƒฃแƒ™แƒ”แƒ— แƒ’แƒแƒ•แƒแƒ แƒ™แƒ•แƒ”แƒ•แƒ— (skillsโ (แƒ˜แƒฎแƒกแƒœแƒ”แƒ‘แƒ แƒแƒฎแƒแƒš แƒคแƒแƒœแƒฏแƒแƒ แƒแƒจแƒ˜) แƒแƒ›แƒ˜แƒก แƒ™แƒแƒ แƒ’แƒ˜ แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜แƒ).

Codex App Server

แƒแƒ˜แƒ แƒฉแƒ˜แƒ”แƒ— App Server แƒ›แƒแƒจแƒ˜แƒœ, แƒ แƒแƒชแƒ แƒ’แƒกแƒฃแƒ แƒ— แƒกแƒ แƒฃแƒšแƒ˜ Codex harness แƒ˜แƒงแƒแƒก แƒฌแƒแƒ แƒ›แƒแƒ“แƒ’แƒ”แƒœแƒ˜แƒšแƒ˜ แƒ แƒแƒ’แƒแƒ แƒช แƒกแƒขแƒแƒ‘แƒ˜แƒšแƒฃแƒ แƒ˜, UI-แƒกแƒ—แƒ•แƒ˜แƒก แƒ›แƒแƒกแƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ›แƒแƒ•แƒšแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒœแƒแƒ™แƒแƒ“แƒ˜. แƒ—แƒฅแƒ•แƒ”แƒœ แƒ˜แƒฆแƒ”แƒ‘แƒ— แƒ แƒแƒ’แƒแƒ แƒช agent loop-แƒ˜แƒก แƒกแƒ แƒฃแƒš แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒœแƒแƒšแƒก, แƒ˜แƒกแƒ” แƒกแƒฎแƒ•แƒ แƒ“แƒแƒ›แƒฎแƒ›แƒแƒ แƒ” แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ”แƒ‘แƒกแƒแƒช, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ Sign in with ChatGPT, แƒ›แƒแƒ“แƒ”แƒšแƒ˜แƒก แƒแƒฆแƒ›แƒแƒฉแƒ”แƒœแƒ แƒ“แƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒแƒ แƒ—แƒ•แƒ. แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜ แƒคแƒแƒกแƒ˜ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ˜แƒก แƒกแƒแƒ›แƒฃแƒจแƒแƒแƒ, แƒ แƒแƒ“แƒ’แƒแƒœ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ”แƒก JSON-RPC binding แƒฃแƒœแƒ“แƒ แƒแƒแƒฌแƒงแƒแƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒ”แƒœแƒแƒจแƒ˜. แƒžแƒ แƒแƒฅแƒขแƒ˜แƒ™แƒแƒจแƒ˜ แƒ™แƒ˜ Codex-แƒก แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒ›แƒซแƒ˜แƒ›แƒ” แƒกแƒแƒ›แƒฃแƒจแƒแƒแƒก แƒ“แƒ˜แƒ“แƒ˜ แƒœแƒแƒฌแƒ˜แƒšแƒ˜แƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ, แƒ—แƒฃ JSON schema-แƒก แƒ“แƒ แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒแƒก แƒ›แƒ˜แƒแƒฌแƒ•แƒ“แƒ˜แƒ—. แƒ‘แƒ”แƒ•แƒ แƒ›แƒ แƒ’แƒฃแƒœแƒ“แƒ›แƒ, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ—แƒแƒœแƒแƒช แƒ•แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ—, Codex-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— แƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒจแƒ”แƒซแƒšแƒ แƒ›แƒฃแƒจแƒ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ.

Codex-แƒ˜แƒก แƒฉแƒแƒกแƒ›แƒ˜แƒก แƒกแƒฎแƒ•แƒ แƒ’แƒ–แƒ”แƒ‘แƒ˜

แƒ›แƒกแƒฃแƒ‘แƒฃแƒฅแƒ˜, แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜แƒ แƒ”แƒ‘แƒแƒ“แƒ˜ CLI แƒ แƒ”แƒŸแƒ˜แƒ›แƒ˜ แƒ”แƒ แƒ—แƒฏแƒ”แƒ แƒแƒ“แƒ˜ แƒแƒ›แƒแƒชแƒแƒœแƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ CI แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ”แƒก แƒ™แƒแƒ แƒ’แƒ˜ แƒแƒ แƒฉแƒ”แƒ•แƒแƒœแƒ˜แƒ แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒกแƒ แƒ“แƒ pipeline-แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒชแƒ แƒ’แƒกแƒฃแƒ แƒ— แƒ”แƒ แƒ—แƒ˜ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ แƒแƒ แƒแƒ˜แƒœแƒขแƒ”แƒ แƒแƒฅแƒชแƒ˜แƒฃแƒšแƒแƒ“ แƒ‘แƒแƒšแƒแƒ›แƒ“แƒ” แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ“แƒ”แƒก, แƒŸแƒฃแƒ แƒœแƒแƒšแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒแƒแƒกแƒขแƒ แƒ˜แƒ›แƒแƒก แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ’แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ˜ แƒ“แƒ แƒ“แƒแƒกแƒ แƒฃแƒšแƒ“แƒ”แƒก แƒฌแƒแƒ แƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒก แƒแƒœ แƒฌแƒแƒ แƒฃแƒ›แƒแƒขแƒ”แƒ‘แƒšแƒแƒ‘แƒ˜แƒก แƒ›แƒ™แƒแƒคแƒ˜แƒ แƒกแƒ˜แƒ’แƒœแƒแƒšแƒ˜แƒ—.

TypeScript แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒกแƒแƒ™แƒฃแƒ—แƒแƒ แƒ˜ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒ“แƒแƒœ แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ•แƒ˜ Codex แƒแƒ’แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒฃแƒšแƒแƒ“ แƒกแƒแƒ›แƒแƒ แƒ—แƒแƒ•แƒแƒ“ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ. แƒกแƒแƒฃแƒ™แƒ”แƒ—แƒ”แƒกแƒแƒ แƒ›แƒแƒจแƒ˜แƒœ, แƒ แƒแƒชแƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ˜แƒก แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒžแƒ แƒแƒชแƒ”แƒกแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ’แƒกแƒฃแƒ แƒ— แƒœแƒแƒขแƒ˜แƒฃแƒ แƒ˜ แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒฃแƒ แƒ˜ แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒ˜ แƒชแƒแƒšแƒ™แƒ” JSON-RPC แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒแƒ’แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”. แƒ แƒแƒ“แƒ’แƒแƒœ แƒ˜แƒก App Server-แƒ–แƒ” แƒแƒ“แƒ แƒ” แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒ“แƒ, แƒแƒ›แƒŸแƒแƒ›แƒแƒ“ แƒœแƒแƒ™แƒšแƒ”แƒ‘ แƒ”แƒœแƒแƒกแƒ แƒ“แƒ แƒฃแƒคแƒ แƒ แƒ›แƒชแƒ˜แƒ แƒ” แƒ–แƒ”แƒ“แƒแƒžแƒ˜แƒ แƒก แƒฃแƒญแƒ”แƒ แƒก แƒ›แƒฎแƒแƒ แƒก. แƒ—แƒฃ แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ, แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ SDK-แƒ”แƒ‘แƒ˜แƒช แƒ“แƒแƒ•แƒแƒ›แƒแƒขแƒแƒ—, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช App Server-แƒ˜แƒก แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒก แƒจแƒ”แƒ›แƒแƒแƒฎแƒ•แƒ”แƒ•แƒก, แƒ แƒแƒ—แƒ แƒ’แƒฃแƒœแƒ“แƒ”แƒ‘แƒ›แƒ harness-แƒ˜แƒก แƒ–แƒ”แƒ“แƒแƒžแƒ˜แƒ แƒ˜แƒก แƒ›แƒ”แƒขแƒ˜ แƒœแƒแƒฌแƒ˜แƒšแƒ˜ แƒ“แƒแƒคแƒแƒ แƒแƒœ JSON-RPC binding-แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒฌแƒ”แƒ แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”.

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒœแƒแƒ‘แƒ˜แƒฏแƒ”แƒ‘แƒ˜

แƒแƒ› แƒžแƒแƒกแƒขแƒจแƒ˜ แƒ’แƒแƒ’แƒ˜แƒ–แƒ˜แƒแƒ แƒ”แƒ—, แƒ แƒแƒ’แƒแƒ  แƒ•แƒฃแƒ“แƒ’แƒ”แƒ‘แƒ˜แƒ— แƒแƒ’แƒ”แƒœแƒขแƒ”แƒ‘แƒ—แƒแƒœ แƒฃแƒ แƒ—แƒ˜แƒ”แƒ แƒ—แƒแƒ‘แƒ˜แƒก แƒแƒฎแƒแƒšแƒ˜ แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒ˜แƒก แƒ“แƒ˜แƒ–แƒแƒ˜แƒœแƒก แƒ“แƒ แƒ แƒแƒ’แƒแƒ  แƒ•แƒแƒฅแƒชแƒ”แƒ•แƒ— Codex harness-แƒก แƒกแƒขแƒแƒ‘แƒ˜แƒšแƒฃแƒ , แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ›แƒแƒกแƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ‘แƒ”แƒš แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒแƒ“. แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒ”แƒ—, แƒ แƒแƒ’แƒแƒ  แƒแƒฉแƒ”แƒœแƒก App Server Codex core-แƒก, แƒ แƒแƒ’แƒแƒ  แƒแƒซแƒšแƒ”แƒ•แƒก แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ”แƒ‘แƒก แƒกแƒ แƒฃแƒšแƒ˜ agent loop-แƒ˜แƒก แƒ›แƒแƒ แƒ—แƒ•แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ“แƒ แƒ แƒแƒ’แƒแƒ  แƒแƒ›แƒแƒซแƒ แƒแƒ•แƒ”แƒ‘แƒก แƒ›แƒ แƒแƒ•แƒแƒšแƒคแƒ”แƒ แƒแƒ•แƒแƒœ แƒ–แƒ”แƒ“แƒแƒžแƒ˜แƒ แƒ”แƒ‘แƒก, แƒ›แƒแƒ— แƒจแƒแƒ แƒ˜แƒก TUI-แƒก, แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ• IDE แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ”แƒ‘แƒก แƒ“แƒ แƒ•แƒ”แƒ‘-แƒ แƒแƒœแƒขแƒแƒ˜แƒ›แƒก.

แƒ—แƒฃ แƒแƒ›แƒแƒœ Codex-แƒ˜แƒก แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒžแƒ แƒแƒชแƒ”แƒกแƒ”แƒ‘แƒจแƒ˜ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ˜แƒ“แƒ”แƒ”แƒ‘แƒ˜ แƒ’แƒแƒ’แƒ˜แƒฉแƒ˜แƒœแƒแƒ—, แƒฆแƒ˜แƒ แƒก App Server-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒชแƒ“แƒ. แƒ›แƒ—แƒ”แƒšแƒ˜ แƒกแƒแƒฌแƒงแƒ˜แƒกแƒ˜ แƒ™แƒแƒ“แƒ˜ แƒ’แƒแƒœแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ Codex CLI-แƒ˜แƒก แƒฆแƒ˜แƒ แƒ™แƒแƒ“แƒ˜แƒก แƒ แƒ”แƒžแƒแƒจแƒ˜โ (แƒ˜แƒฎแƒกแƒœแƒ”แƒ‘แƒ แƒแƒฎแƒแƒš แƒคแƒแƒœแƒฏแƒแƒ แƒแƒจแƒ˜). แƒ—แƒแƒ›แƒแƒ›แƒแƒ“ แƒ’แƒแƒ’แƒ•แƒ˜แƒ–แƒ˜แƒแƒ แƒ”แƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒฃแƒ™แƒฃแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜ แƒ“แƒ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜. แƒ’แƒ•แƒ˜แƒฎแƒแƒ แƒ˜แƒ แƒ—แƒฅแƒ•แƒ”แƒœแƒ’แƒแƒœ แƒ›แƒแƒกแƒ›แƒ”แƒœแƒ แƒ“แƒ แƒแƒ’แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒแƒกแƒ—แƒ•แƒ˜แƒก แƒฃแƒคแƒ แƒ แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒแƒ“ แƒฅแƒชแƒ”แƒ•แƒ˜แƒก แƒ’แƒแƒ’แƒ แƒซแƒ”แƒšแƒ”แƒ‘แƒ.

แƒแƒ•แƒขแƒแƒ แƒ˜

Celia Chen

แƒ›แƒแƒ“แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜

แƒ’แƒแƒœแƒกแƒแƒ™แƒฃแƒ—แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒ“แƒšแƒแƒ‘แƒ Michael Bolin-แƒก, Owen Lin-แƒก, Eric Traut-แƒก แƒ“แƒ Rasmus Rygaard-แƒก, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ›แƒแƒช แƒแƒ› แƒžแƒแƒกแƒขแƒจแƒ˜ แƒฌแƒ•แƒšแƒ˜แƒšแƒ˜ แƒจแƒ”แƒ˜แƒขแƒแƒœแƒ”แƒก, แƒ“แƒ แƒ›แƒ—แƒ”แƒš Codex แƒ’แƒฃแƒœแƒ“แƒก, แƒ แƒแƒ›แƒ”แƒšแƒ›แƒแƒช App Server-แƒ–แƒ” แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ.

แƒกแƒฅแƒแƒšแƒ˜แƒแƒ”แƒ‘แƒ˜

  1. 1

    แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— โ€žJSONโ€‘RPC liteโ€œ แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒก: แƒ˜แƒก แƒ˜แƒœแƒแƒ แƒฉแƒฃแƒœแƒ”แƒ‘แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒก/แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒก/แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก แƒคแƒแƒ แƒ›แƒแƒก, แƒ›แƒแƒ’แƒ แƒแƒ› แƒขแƒแƒ•แƒ”แƒ‘แƒก "jsonrpc": "2.0" แƒกแƒแƒ—แƒแƒฃแƒ แƒก แƒ“แƒ strict JSONโ€‘RPC 2.0-แƒ˜แƒก แƒœแƒแƒชแƒ•แƒšแƒแƒ“ stdio-แƒ–แƒ” JSONL-แƒแƒ“ แƒแƒ แƒ˜แƒก แƒฉแƒแƒ แƒฉแƒแƒ”แƒ‘แƒจแƒ˜ แƒ›แƒแƒฅแƒชแƒ”แƒฃแƒšแƒ˜.

  2. 2

    ย โ€žstdioโ€œ แƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒแƒ‘แƒก app-server-แƒ˜แƒก stdin/stdout-แƒก แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ˜แƒก แƒจแƒ˜แƒ’แƒœแƒ˜แƒ—. แƒฐแƒแƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒฃแƒš แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ”แƒ‘แƒจแƒ˜ แƒ”แƒก แƒœแƒแƒ™แƒแƒ“แƒ”แƒ‘แƒ˜ แƒฎแƒจแƒ˜แƒ แƒแƒ“ แƒ›แƒฃแƒ“แƒ›แƒ˜แƒ• แƒฅแƒกแƒ”แƒšแƒฃแƒ  แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ–แƒ”แƒ แƒ’แƒ•แƒ˜แƒ แƒแƒ‘แƒ˜แƒ— แƒ’แƒแƒ“แƒแƒงแƒ•แƒแƒœแƒ˜แƒšแƒ˜ (แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, WebSocket-แƒ˜แƒก แƒ›แƒกแƒ’แƒแƒ•แƒกแƒ˜ แƒ’แƒ–แƒ˜แƒ—) แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ˜แƒก แƒ แƒแƒœแƒขแƒแƒ˜แƒ›แƒแƒ›แƒ“แƒ” โ€” แƒแƒ›แƒ˜แƒขแƒแƒ› แƒ˜แƒก stdio-แƒกแƒแƒ•แƒ˜แƒ— แƒ˜แƒฅแƒชแƒ”แƒ•แƒ, แƒ›แƒแƒจแƒ˜แƒœแƒแƒช แƒ™แƒ˜, แƒ—แƒฃ แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ แƒ˜ แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ•แƒ˜ pipe แƒแƒ  แƒแƒ แƒ˜แƒก.

แƒ’แƒแƒœแƒแƒ’แƒ แƒซแƒ”แƒ— แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ

แƒงแƒ•แƒ”แƒšแƒแƒก แƒœแƒแƒฎแƒ•แƒ