Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
a4e8a0e
feat: add opt-in plaintext V2 subagent mode
luvs01 Oct 19, 2026
7609a69
test: verify normalized V2 settings responses
luvs01 Oct 19, 2026
043fb3d
Merge dev into plaintext V2 subagent mode
luvs01 Oct 22, 2026
9b18cfb
docs(subagents): clarify plaintext activation and retention scope
luvs01 Oct 23, 2026
a3f2e7e
test(cli): distinguish V2 catalog and plaintext request scope
luvs01 Oct 23, 2026
9e5a917
fix(test): promote Bun 1.4.4 with independent runner role verification
luvs01 Oct 23, 2026
1deb67d
docs: align Docker Bun comments with unified role defaults
luvs01 Oct 23, 2026
41f08ff
test: use a draining TLS origin for early upload replies
luvs01 Oct 23, 2026
a9c3d12
test: confine draining origin to buffered HTTP/1 upload
luvs01 Oct 23, 2026
f011a94
merge: align test-runner role branch with dev 2.93.0 dependency baseline
luvs01 Oct 24, 2026
8b4c34c
Merge branch 'dev' into codex/test-runner-role-verification-20261023
lidge-jun Oct 24, 2026
15e5214
Merge commit '26598df2c4c07d781e344ac6119953fed77ecb27' into codex/pr…
luvs01 Oct 24, 2026
8d31739
Merge commit '8b4c34c7e6103314dcb061f0f82a8eaafdb4d386' into codex/pr…
luvs01 Oct 24, 2026
f99e03c
Merge origin/dev into opt-in plaintext V2 mode
lidge-jun Oct 28, 2026
9216be9
Fix plaintext V2 pins in extracted live catalog builder
lidge-jun Oct 28, 2026
a57fdcc
fix(responses): bind retained replay to caller and own thread
lidge-jun Oct 28, 2026
14e39a1
Merge origin/dev into opt-in plaintext V2 carry
lidge-jun Oct 29, 2026
3b87caf
test(responses): admit remaining continuation replay fixtures
lidge-jun Oct 29, 2026
83fe2e6
fix(responses): retain the authorized opaque ID in combo replay
luvs01 Oct 29, 2026
afb3d1e
fix(responses): retain loopback WebSocket replay identity
luvs01 Oct 29, 2026
571b3fe
test(opencode-go): admit owned stateless continuation fixtures
luvs01 Oct 29, 2026
21355ff
test(responses): admit native steering replay fixture
luvs01 Oct 29, 2026
f3176fc
test: keep replay layout oracle additions mergeable
luvs01 Oct 29, 2026
207c3a5
refactor: keep plaintext mode and replay registrations mergeable
luvs01 Oct 29, 2026
cb350fd
Merge dev into plaintext V2 while retaining admission consent
luvs01 Oct 30, 2026
691fcda
fix(v2): clarify pinned-session guidance and consent tests
luvs01 Oct 31, 2026
63871cb
test(v2): align integration depth status assertion
luvs01 Oct 31, 2026
52c4e91
docs(replay): describe admission principal requirement
luvs01 Oct 31, 2026
83562ed
Merge dev and preserve plaintext replay contracts
luvs01 Nov 4, 2026
0799059
test: bind manual account pin fixture to replay owner
luvs01 Nov 4, 2026
99a0039
fix(cli): require the dedicated plaintext mode transition
luvs01 Nov 4, 2026
e2ee392
fix(cli): preflight import authority before lock preparation
luvs01 Nov 4, 2026
2966f69
Merge commit '0a30c551304927c93c26a96c034bd39a166c7460' into review/p…
luvs01 Nov 4, 2026
d37bceb
test(windows): isolate owner ACL checks in writer fixtures
luvs01 Nov 4, 2026
fc0b9eb
Merge dev and preserve plaintext V2 controls in redesigned GUI
luvs01 Nov 6, 2026
d231320
fix(gui): preserve plaintext mode state and clarify scope
luvs01 Nov 6, 2026
9e4a632
test(responses): keep WebSocket fixtures on current config
luvs01 Nov 6, 2026
75f7988
Merge dev into V2 plaintext integration
luvs01 Nov 7, 2026
e49ae90
test(client): make link contract fixtures consistent on Windows
luvs01 Nov 7, 2026
4a2b4fb
Merge dev and preserve link fixture isolation
luvs01 Nov 7, 2026
af7ae8a
test(clients): preserve failures while cleaning both link homes
luvs01 Nov 7, 2026
bbf4cd5
Merge dev and reconcile native fixture options
luvs01 Nov 7, 2026
10dde82
Merge remote-tracking branch 'origin/dev' into codex/pr7376-dev250-20…
luvs01 Nov 9, 2026
f2b06ac
test(claude-cli): bind file-backed image fixture to replay owner
luvs01 Nov 9, 2026
befb34f
Merge remote-tracking branch 'origin/dev' into codex/hybrid-plaintext…
luvs01 Nov 9, 2026
6cf3772
refactor(server): split serve contract below the file-size ceiling
luvs01 Nov 9, 2026
7d418b2
Merge upstream/dev into codex/hybrid-plaintext-v2-20261019: keep dash…
luvs01 Nov 12, 2026
a9b6fce
Merge current dev and preserve owned replay provenance
luvs01 Nov 12, 2026
e6d38eb
test(responses): bind catalog replay fixtures and drain CLI probe output
luvs01 Nov 12, 2026
d0e60ad
Merge dev into PR #7376 candidate: keep Remote Link capture and repla…
lidge-jun Nov 12, 2026
f5c8bb9
test(responses): prove a refused replay owner never reaches the Link …
lidge-jun Nov 12, 2026
0368718
Merge dev into PR #7376 candidate: keep the route proof across the se…
lidge-jun Nov 13, 2026
25b68d5
test(link): wait for persisted websocket hold state
lidge-jun Nov 13, 2026
2454ea6
fix: preserve legacy replay scope outside plaintext v2
invalid-email-address Nov 13, 2026
818e479
Merge remote-tracking branch 'origin/dev' into fix-7376-replay-defaul…
invalid-email-address Nov 13, 2026
6854e4d
fix: bind replay when plaintext flag is enabled
invalid-email-address Nov 13, 2026
5396091
Merge origin/dev into fix-7376-replay-r3
invalid-email-address Nov 13, 2026
e940dbd
test: document legacy retention of supplied agent messages
invalid-email-address Nov 13, 2026
30ec490
fix: decide plaintext compilation once per request and never retain c…
lidge-jun Nov 13, 2026
8441293
docs: scope translated replay identity guidance to plaintext mode
lidge-jun Nov 13, 2026
dabfc0e
docs: sync translated v2-plaintext mode and consent references
lidge-jun Nov 13, 2026
fddf1ce
Fix default-mode replay fixtures and plaintext mode docs
lidge-jun Nov 13, 2026
734f3a0
docs(ko): complete v2-plaintext mode and consent translation
lidge-jun Nov 13, 2026
776b1ff
docs(fr): complete v2-plaintext mode and consent translation
lidge-jun Nov 13, 2026
00cfb5a
docs(ja): complete v2-plaintext mode and consent translation
lidge-jun Nov 13, 2026
51f0634
docs(ru): complete v2-plaintext mode and consent translation
lidge-jun Nov 13, 2026
6306bd7
docs(tr): complete v2-plaintext mode and consent translation
lidge-jun Nov 13, 2026
263c077
docs(zh-cn): complete v2-plaintext mode and consent translation
lidge-jun Nov 13, 2026
f3b1a68
docs(zh-tw): complete v2-plaintext mode and consent translation
lidge-jun Nov 13, 2026
2d09a7d
Merge remote-tracking branch 'origin/dev' into merge-7376-dev
lidge-jun Nov 13, 2026
7535300
docs: correct subagent mode guidance
lidge-jun Nov 13, 2026
cc5aa5e
docs(es): mirror v2-plaintext mode, consent and replay identity guidance
lidge-jun Nov 13, 2026
cc10907
Merge origin/dev into PR branch
lidge-jun Nov 13, 2026
13f788e
docs: separate catalog pin scope from plaintext compiler scope
lidge-jun Nov 13, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,7 @@ El proxy admite hasta 128 conexiones Responses WebSocket orientadas al cliente.

Si una continuación canónica hacia adelante ChatGPT hace referencia a un estado de repetición local caducado o faltante, opencodex devuelve `previous_response_not_found` antes de enviar cualquier cosa aguas arriba. El cliente Codex de WebSocket reconoce este error y puede volver a conectarse con su contexto completo retenido, incluyendo llamadas de herramientas completadas y sus resultados, dentro de su presupuesto de reintento de flujo normal. Por lo tanto, una tarea inactiva no necesita una tarea nueva únicamente porque la caché de reproducción del proxy expiró. El estado de continuación reproducido se conserva durante 24 horas y permanece limitado por su memoria, disco y límites de entrada existentes; esto no recupera el historial que el cliente ya no tiene. HTTP clientes deben manejar el error explícitamente y volver a enviar su contexto completo sin `previous_response_id`. Volver a intentar solo el mismo ID no puede recuperar el estado faltante.

El mismo rechazo se aplica cuando el estado referenciado pertenece a un ámbito de tarea cliente diferente, incluso cuando la nueva solicitud parece llevar entrada completa. El proxy no puede probar que la entrada está completa, por lo que no elimina silenciosamente `previous_response_id` ni revela si existe un estado coincidente. Vuelva a intentar con la conversación completa y omita `previous_response_id`; los ámbitos coincidentes y las continuaciones heredadas donde ambos ámbitos están ausentes o en blanco continúan reproduciéndose normalmente.
El mismo rechazo se aplica cuando el estado referenciado pertenece a un ámbito de tarea cliente diferente, incluso cuando la nueva solicitud parece llevar entrada completa. El proxy no puede probar que la entrada está completa, por lo que no elimina silenciosamente `previous_response_id` ni revela si existe un estado coincidente. Cuando está activado el modo `v2-plaintext` o la opción `plaintextV2AgentMessages`, la reproducción local exige el mismo principal de OpenCodex admitido y el `thread-id` propio y no vacío de la solicitud. Un hilo principal, una dirección de loopback, una credencial del proveedor o una clave de relleno no constituyen esa identidad. Sin principal admitido o sin hilo propio, envía la conversación completa sin `previous_response_id`. Las configuraciones predeterminadas de Codex y DSH en loopback no establecen esa identidad. El estado conservado mientras cualquiera de las dos opciones está activada permanece vinculado al desactivarlas. El modo predeterminado `v1` conserva la continuación por hilo principal para el estado no vinculado, también en loopback. Esto es independiente de los ID de Responses gestionados por el proveedor nativo.

La misma señal de recuperación se aplica a cada destino enrutado, porque solo el paso a través nativo Responses puede responder a un giro cuya historia perdió este proxy: reenvía `previous_response_id` a un backend que almacenó la cadena. Cada uno de los otros cables reconstruye la conversación a partir de la propia entrada de cada solicitud, por lo que una expansión perdida allí enviaría el giro actual solo y perdería silenciosamente la conversación. Eso incluye los tres que parecen con estado: Devin vuelve a enviar toda la conversación a cada paso, la referencia de punto de control de Cursor vive en la misma tienda vencida y vuelve a la reproducción completa sin ella, y Kiro reconstruye su historial de conversaciones a partir de los turnos en que se entregó. También se aplica a los proveedores enrutados Responses configurados con `statelessResponses: true`, y a las solicitudes enrutadas donde una herramienta personalizada se redujo a una función pero un resultado delta no tiene llamada local para establecer su tipo original. La reproducción completa conserva la llamada, el resultado y el razonamiento juntos; opencodex no adivina el tipo de resultado ni lo descarta. Los proveedores estatales todavía resuelven la función nativa y las continuaciones personalizadas nativas por sí mismos. Estas comprobaciones siguen el protocolo de cable seleccionado y las declaraciones de la herramienta, no el nombre del modelo. Para una puerta de enlace que no puede resolver los ID de respuesta almacenados, habilite `statelessResponses` en ese proveedor; otros proveedores mantienen sus valores predeterminados.

Expand Down
9 changes: 6 additions & 3 deletions docs-site/src/content/docs/es/guides/sub-agent-surface.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@ Elija el modo para **Nuevas sesiones**. Las sesiones existentes mantienen la sup
| **base** | Asignaciones originales por modelo: GPT-5.6 Sol/Terra usan v2; Luna, v1. Los demás siguen la opción `multi_agent_v2` de Codex. | Para quienes quieren conservar esas asignaciones y usan modelos principales y subagentes del mismo lado del límite de proveedores. Sol y Terra quedan en v2. |
| **v2** | Herramientas planas `spawn_agent`, `send_message`, `followup_task`, `interrupt_agent` y listado de agentes, con sesiones concurrentes. | Para quienes necesitan el flujo concurrente y comprenden la herencia de modelos y la limitación de tareas cifradas descrita abajo. |

En **v2**, la opción **Mantener ChatGPT en v1** (`keepNativeChatGptOnV1`) conserva Sol/Terra en v1 para que puedan crear subagentes Grok o Claude. Los agentes principales nativos de ChatGPT cifran el cuerpo de las tareas `NEW_TASK` en v2 y los modelos enrutados no pueden leerlo. Los agentes principales enrutados permanecen en v2, donde las tareas de sus subagentes son texto plano. Para este modo híbrido, OpenCodex desactiva la anulación global `multi_agent_v2`, porque Codex la aplica antes que los ajustes por modelo del catálogo. Es una opción de v2, no un cuarto modo de catálogo.
**v2-plaintext** usa las asignaciones V2 del catálogo con la anulación global desactivada y compila mensajes de tareas aptos en texto sin cifrar. Es una opción experimental con consentimiento explícito; consulta [sus condiciones](/es/guides/subagent-v1-default/).

En **v2**, la opción **Mantener ChatGPT en v1** (`keepNativeChatGptOnV1`) conserva Sol/Terra en v1 para que puedan crear subagentes Grok o Claude. Los agentes principales nativos de ChatGPT cifran el cuerpo de las tareas `NEW_TASK` en v2 y los modelos enrutados no pueden leerlo. Los agentes principales enrutados permanecen en v2, donde las tareas de sus subagentes son texto plano. Para este modo híbrido, OpenCodex desactiva la anulación global `multi_agent_v2`, porque Codex la aplica antes que los ajustes por modelo del catálogo. Es una opción de v2 independiente del modo `v2-plaintext`.

:::tip[¿Tienes dudas?]
Usa **v1**, el modo predeterminado. Elige **base** o **v2** solo si el modelo principal y el subagente están del mismo lado del límite de proveedores: en ambos modos, una tarea enviada desde un modelo nativo de ChatGPT a uno enrutado llega cifrada y falla. La opción híbrida de v2 descrita arriba evita ese cruce conservando los modelos nativos en v1. El dashboard pide confirmación antes de elegir base o v2 y enlaza a [Por qué v1 es el valor predeterminado](/es/guides/subagent-v1-default/).
Expand Down Expand Up @@ -53,6 +55,7 @@ El modo seleccionado controla el campo `multi_agent_version` en cada entrada del

- **v1** marca `multi_agent_version = "v1"` en todos los modelos.
- **base** restaura los pines de aguas arriba. Las entradas sin pines siguen la bandera de la característica nativa `multi_agent_v2`.
- **v2-plaintext** asigna V2 en el catálogo y desactiva la anulación global; también activa el compilador experimental para solicitudes aptas.
- **v2** marca `multi_agent_version = "v2"` en todos los modelos, excepto cuando **Mantener ChatGPT en v1** está habilitado: las filas nativas de ChatGPT permanecen en `"v1"` y las filas enrutadas o de combo permanecen en `"v2"`.

opencodex aplica esto como el pase final tanto al catálogo en vivo `/v1/models` como al catálogo sincronizado al disco. Es por eso que un cambio de modo afecta a las nuevas sesiones de App, CLI y TUI creadas de manera consistente.
Expand Down Expand Up @@ -182,7 +185,7 @@ Si la solicitud reconstruida recibe otro SSE `error` desnudo seguido por EOF, am

### GUI

- **Tablero** → primera celda de estadística: elija **v1**, **base** o **v2**.
- **Tablero** → primera celda de estadística: elija **v1**, **base**, **v2** o **v2-plaintext**.
- **Modelos** → control segmentado de la fila superior: elija el mismo modo global.
- **Tablero** → **Delegación de subagentes**: establece el modelo/esfuerzo de guía y la opción de opt-in por defecto nativa.
- **Subagentes**: elija y ordene la lista y configure la cadena de reserva global.
Expand Down Expand Up @@ -305,4 +308,4 @@ Solo un cambio real cuenta. Una sincronización cuyo resultado es idéntico en b

El límite de contexto del modelo es independiente del modo de subagente. Configure en la página Modelos; los modelos nativos OpenAI conservan sus ventanas de contexto real.

El campo experimental `plaintextV2AgentMessages` no se establece en una nueva configuración y se ejecuta solo cuando se establece en `true`. La persona que llama debe usar el cable Responses y el destino final debe usar `adapter: "openai-responses"`, `authMode: "forward"` y la URL base exacta `https://chatgpt.com/backend-api/codex`. Quedan excluidos los proveedores de clave API de OpenAI, las pasarelas compatibles personalizadas, las rutas a otros proveedores y los llamantes que no usan Responses. Para una nueva llamada a la herramienta ChatGPT v2 nativa elegible, la opción asigna alias con alcance de solicitud al espacio de nombres y tres nombres reservados de la herramienta de mensajes, elimina el marcador de mensajes y restaura las identidades originales en la respuesta. Maneja `spawn_agent`, `send_message` y `followup_task` y no agrega ninguna petición de recuperación. HTTPS permanece cifrado, pero el texto de la tarea se puede conservar en el historial de Codex, las solicitudes del proveedor enrutado y el estado de respuesta/depuración local. El texto cifrado existente no cambia, y la opción depende del comportamiento no documentado de ChatGPT y Codex. Véase [Configuración del agente: Mensajes de agente de texto sin formato v2](/es/reference/configuration/agents/#plaintext-v2-agent-messages). Si una respuesta de flujo continuo ChatGPT no lleva ningún tipo de contenido, o una que no es ni `application/json` ni un flujo de eventos reconocible, opencodex comprueba un prefijo de evento Responses limitado antes de restaurar los nombres de herramienta de mensaje. Una respuesta `application/json` toma el camino JSON limitado en su lugar. La sonda espera como máximo `stallTimeoutSec` por su prefijo, y un cuerpo que permanece silencioso, no reconocido o ilegible se rechaza y nunca llega a Codex como una respuesta exitosa.
El campo experimental `plaintextV2AgentMessages` no se establece en una configuración nueva. Un valor explícito `true` o el modo seleccionado `v2-plaintext` activa el compilador. Este modo también selecciona V2 para chats nuevos sin activar la anulación global; al salir, conserva el valor independiente del campo. La compilación sigue la configuración actual en solicitudes aptas posteriores, incluso en sesiones V2 existentes. No descifra texto cifrado existente ni reescribe el historial, y desactivarla no elimina las copias conservadas. La persona que llama debe usar el cable Responses y el destino final debe usar `adapter: "openai-responses"`, `authMode: "forward"` y la URL base exacta `https://chatgpt.com/backend-api/codex`. Quedan excluidos los proveedores de clave API de OpenAI, las pasarelas compatibles personalizadas, las rutas a otros proveedores y los llamantes que no usan Responses. Para una nueva llamada a la herramienta ChatGPT v2 nativa elegible, la opción asigna alias con alcance de solicitud al espacio de nombres y tres nombres reservados de la herramienta de mensajes, elimina el marcador de mensajes y restaura las identidades originales en la respuesta. Maneja `spawn_agent`, `send_message` y `followup_task` y no agrega ninguna petición de recuperación. HTTPS permanece cifrado, pero el texto de la tarea se puede conservar en el historial de Codex, las solicitudes del proveedor enrutado y el estado de respuesta/depuración local. El texto cifrado existente no cambia, y la opción depende del comportamiento no documentado de ChatGPT y Codex. Véase [Configuración del agente: Mensajes de agente de texto sin formato v2](/es/reference/configuration/agents/#plaintext-v2-agent-messages). Si una respuesta de flujo continuo ChatGPT no lleva ningún tipo de contenido, o una que no es ni `application/json` ni un flujo de eventos reconocible, opencodex comprueba un prefijo de evento Responses limitado antes de restaurar los nombres de herramienta de mensaje. Una respuesta `application/json` toma el camino JSON limitado en su lugar. La sonda espera como máximo `stallTimeoutSec` por su prefijo, y un cuerpo que permanece silencioso, no reconocido o ilegible se rechaza y nunca llega a Codex como una respuesta exitosa.
23 changes: 19 additions & 4 deletions docs-site/src/content/docs/es/guides/subagent-v1-default.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,21 @@ description: "Qué impide la limitación de tareas cifradas de v2, por qué Open

OpenCodex se instala con la interfaz de subagentes en **v1**. Las páginas Panel, Modelos y Subagentes solicitan confirmación antes de cambiar a **base** o **v2** y enlazan esta explicación. La CLI no solicita esa confirmación.

El motivo es concreto: de forma predeterminada, en v2 un modelo enrutado no puede leer la tarea cifrada que recibe de un modelo nativo de ChatGPT. Esto afecta al caso habitual de un agente GPT que crea un subagente Grok, Claude o GLM. Las excepciones explícitas son `keepNativeChatGptOnV1`, que conserva los modelos nativos de ChatGPT en v1 mientras los enrutados usan v2; un destino autorizado que pueda procesar la tarea cifrada mediante `allowEncryptedV2AgentTasks: true`; o la recuperación experimental `agentTaskRecovery`, descritas más abajo.
El motivo es concreto: de forma predeterminada, en v2 un modelo enrutado no puede leer la tarea cifrada que recibe de un modelo nativo de ChatGPT. Esto afecta al caso habitual de un agente GPT que crea un subagente Grok, Claude o GLM. Las excepciones explícitas son `keepNativeChatGptOnV1`, que conserva los modelos nativos de ChatGPT en v1 mientras los enrutados usan v2; un destino autorizado que pueda procesar la tarea cifrada mediante `allowEncryptedV2AgentTasks: true`; la recuperación experimental `agentTaskRecovery` o el modo experimental `v2-plaintext`, descritos más abajo.

## V2 opcional con tareas en texto sin cifrar

**V2 · tareas en texto sin cifrar** (`v2-plaintext`) selecciona V2 para chats nuevos mediante asignaciones del catálogo con la anulación global desactivada. Conserva nombres de tareas, jerarquía, seguimiento, cancelación y concurrencia de V2; reutiliza el compilador experimental para solicitudes Responses aptas dirigidas a ChatGPT por la ruta canónica. Los chats existentes conservan su selección, pero la compilación sigue la configuración actual también en sus solicitudes V2 aptas posteriores. Una actualización no selecciona este modo automáticamente. También puede activar el compilador el ajuste independiente `plaintextV2AgentMessages: true`.

Mientras cualquiera de las dos opciones esté activada, las continuaciones locales por ID requieren el mismo principal de clave API de OpenCodex admitido y el `thread-id` propio de la solicitud; el hilo principal no da acceso a las tareas de un hijo. Sin cualquiera de las dos identidades, tras reiniciar el proxy o para entradas antiguas sin vínculo, envía la conversación completa sin `previous_response_id`. El estado vinculado mientras está activado permanece vinculado al desactivarlo. El modo predeterminado `v1` conserva la continuación por hilo principal para el estado no vinculado, incluso en loopback.

En `v2-plaintext`, el panel exige aceptar que el texto puede conservarse en el historial de Codex, las solicitudes al proveedor y el estado local de respuesta o depuración, incluidas instantáneas y archivos en disco. HTTPS y la autenticación siguen activos. No se añade una llamada de recuperación, no se descifra el texto cifrado existente ni se reescribe el historial, y desactivar la compilación no elimina las copias retenidas. Un cliente o backend incompatible aún puede fallar.

```bash
ocx v2 mode v2-plaintext --live --acknowledge-plaintext-agent-messages
```

Para el destino local omite `--live`. Después consulta el mismo destino: `ocx v2 status --live --json` para el proxy activo o `ocx v2 status --json` para el destino local. La configuración y la convergencia del catálogo no prueban que una delegación real haya funcionado. Para salir, selecciona otro modo; se conserva el valor independiente de `plaintextV2AgentMessages`. La API de gestión exige `plaintextAgentMessagesAcknowledged` al entrar.

<a id="what-you-see-when-it-happens"></a>

Expand Down Expand Up @@ -65,6 +79,7 @@ OpenCodex registró esta consecuencia en [#92](https://github.com/lidge-jun/open
| **v1** (predeterminado) | Todos los modelos anuncian las herramientas clásicas de creación con espacio de nombres. Cada creación puede indicar otro modelo directamente. | Si delega entre proveedores. Es el valor incluido en la instalación. |
| **base** | Respeta la asignación de Codex por modelo: Sol y Terra usan v2, Luna usa v1 y los modelos sin asignación siguen la opción de Codex. | Si desea la interfaz prevista por Codex y delega dentro de un mismo proveedor. |
| **v2** | Todos los modelos anuncian las herramientas concurrentes sin espacio de nombres. | Si desea las sesiones concurrentes nuevas y ambos agentes están del mismo lado del límite entre proveedores. |
| **v2-plaintext** | Asigna V2 a sesiones nuevas con la anulación global desactivada y compila las solicitudes aptas en texto sin cifrar. | Si acepta la conservación del texto y desea usar esta opción experimental. |

base aparece en segundo lugar porque asigna v2 a Sol y Terra, modelos utilizados habitualmente como agentes principales. Para delegar de ChatGPT a un modelo enrutado, base tiene la misma limitación que v2.

Expand All @@ -79,13 +94,13 @@ La actualización no sobrescribe una elección existente. El panel muestra el av

Ambas respuestas quedan registradas. Cerrar el aviso sin responder lo deja pendiente para la siguiente apertura del panel.

El modo se aplica a las sesiones **nuevas** de Codex. Inicie otra sesión después del cambio. Si un proceso de la aplicación que lleva tiempo abierto todavía muestra la interfaz anterior, ejecute `ocx sync` y reinicie esa aplicación.
Las asignaciones del catálogo se aplican a las sesiones **nuevas** de Codex; el compilador de texto sin cifrar sigue la configuración actual para las solicitudes aptas, incluidas las posteriores de sesiones V2 existentes. Inicie otra sesión después del cambio. Si un proceso de la aplicación que lleva tiempo abierto todavía muestra la interfaz anterior, ejecute `ocx sync` y reinicie esa aplicación.

<a id="if-you-want-v2-anyway"></a>

## Si prefiere utilizar v2

Hay cuatro opciones, en el orden recomendado:
Además de `v2-plaintext`, hay cuatro opciones:

1. **Mantener ChatGPT en v1.** Dentro de v2, `keepNativeChatGptOnV1` conserva Sol y Terra en v1 para que puedan crear subagentes Grok o Claude; los agentes principales enrutados utilizan v2.
2. **Delegar dentro del mismo proveedor.** Un agente enrutado que crea otro subagente enrutado utiliza texto sin cifrar en v2 y funciona normalmente.
Expand All @@ -104,7 +119,7 @@ Cuando Codex permita que un agente nativo de ChatGPT emita sin cifrar la tarea d

## Cambiar el modo

Panel, Modelos y Subagentes comparten el selector v1/base/v2 y solicitan confirmación antes de pasar a base o v2. Desde la CLI:
Panel, Modelos y Subagentes comparten el selector v1/base/v2/v2-plaintext y solicitan confirmación antes de pasar a base o v2; entrar en `v2-plaintext` requiere aceptar sus condiciones. Desde la CLI:

```bash
ocx v2 status
Expand Down
Loading
Loading