Skip to content

Commit b455a91

Browse files
committed
docs(codex): clarify failure routing transitions
1 parent 7e7e782 commit b455a91

10 files changed

Lines changed: 41 additions & 2 deletions

File tree

docs-site/src/content/docs/ja/reference/cli.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,10 @@ API エラーは終了コード 1 です。認証情報フィールドは manage
270270
既存の Codex アカウント、OAuth アカウント、または API key を選びます。`openai``main` は Codex App ログインを
271271
選択します。Codex Pool の選択は process-local affinity を消去し、既存の表示タスクを含む次のリクエストから適用されます。プロキシ再起動や affinity eviction 後もタスクは未紐付けになり得ますが、処理中のリクエストは取得済みアカウントを維持します。この選択は Pool routing のみを制御し、Direct mode は caller-owned/native main credential を使い続けます。使用量ベースのプロアクティブ切り替え、401/403 再認証、429/retry-after cooldown、除外、出力前 429/402 の障害回復により、後で別の適格 Pool アカウントが選ばれる場合があります。これらの回復経路は使用量ベース切り替えが off でも有効です。アカウント変更後も OpenCodex は会話コンテキストを再生しますが、provider prompt cache は再ウォームアップが必要な場合があります。
272272
不明なプロバイダーや id は終了コード 1 です。`--json` は次を返します。
273+
**401/403** では、そのアカウントへのプロセスローカルな affinity を解除し、再認証を要求します。
274+
**429** では `Retry-After` を尊重してアカウントの cooldown を開始し、affinity を解除したうえで、
275+
別の適格な Pool アカウントへリクエストを切り替えることがあります。これらの障害回復は
276+
`autoSwitchThreshold: 0` でも有効であり、`0` が無効にするのは使用量に基づく予防的な切り替えだけです。
273277

274278
```text
275279
{ ok: true, provider, type, activeId }

docs-site/src/content/docs/ja/reference/configuration.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,9 +95,12 @@ pause、cooldown、再認証、障害処理も独立して routing を消去ま
9595
一時停止するとそのアカウントの thread affinity map も消去されます。処理中のリクエストは取得済み credential を維持しますが、以降のターンは再ルーティングされ、一時停止中のアカウントは再利用できません。
9696
状態は再起動後も保持され、すべてのアカウントが一時停止中なら Pool ルーティングは別のアカウントを暗黙に選ばず失敗します。
9797
**上限到達を一括停止** は credential がある適格アカウントだけを先に更新し、関連する quota window が今回 100% と確認できたアカウントだけを停止します。credential がないアカウントや、quota が不明、または更新に失敗したアカウントは変更しません。
98+
**401/403** では、そのアカウントへのプロセスローカルな affinity を解除し、再認証を要求します。
99+
**429** では `Retry-After` を尊重してアカウントの cooldown を開始し、affinity を解除したうえで、
100+
別の適格な Pool アカウントへリクエストを切り替えることがあります。これらの障害回復は
101+
`autoSwitchThreshold: 0` でも有効であり、`0` が無効にするのは使用量に基づく予防的な切り替えだけです。
98102

99-
**割り当てとプロアクティブ切り替え戦略:** `quota`(既定)はアクティブアカウントがない場合に最小 usage の適格アカウントを選び、適格なアクティブアカウントが `autoSwitchThreshold` 未満なら維持します。しきい値到達後は、
100-
`autoSwitchThreshold` 超過後は紐付け済みタスクの次のリクエストも再紐付けできます。`round-robin`
103+
**割り当てとプロアクティブ切り替え戦略:** `quota`(既定)はアクティブアカウントがない場合に最小 usage の適格アカウントを選び、適格なアクティブアカウントが `autoSwitchThreshold` 未満なら維持します。`autoSwitchThreshold` 超過後は紐付け済みタスクの次のリクエストも再紐付けできます。`round-robin`
101104
未紐付けリクエストを均等分散し、しきい値は通常の rotation を変えません。`accountPoolStickyLimit`
102105
(既定 `1`、1–100)は成功応答ではなく割り当て/紐付け数を数えます。`fill-first` は未紐付けリクエストを
103106
cooldown、再認証、または drain threshold までアクティブアカウントへ割り当て、正常な紐付け済みタスクは

docs-site/src/content/docs/ko/reference/cli.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,10 @@ API 오류는 종료 코드 1입니다. 자격 증명 필드는 management API
311311
기존 Codex 계정, OAuth 계정 또는 API key를 선택합니다. `openai`에서 `main`은 Codex App 로그인을
312312
선택합니다. Codex Pool 선택은 프로세스 로컬 affinity를 지우고 기존에 보이던 작업을 포함한 다음 요청부터 적용됩니다. 프록시 재시작이나 affinity eviction 뒤에도 작업이 바인딩 없는 상태가 될 수 있지만, 진행 중인 요청은 이미 확보한 계정을 유지합니다. 이 선택은 Pool 라우팅만 제어하며 Direct mode는 호출자 소유/native main credential을 계속 사용합니다. 사용량 기반 선제 전환, 401/403 재인증, 429/retry-after cooldown, 제외, 출력 전 429/402 실패 복구는 나중에 다른 적격 Pool 계정을 선택할 수 있습니다. 이러한 복구 경로는 사용량 기반 전환이 꺼져 있어도 동작합니다. 계정이 바뀌어도 OpenCodex는 대화 문맥을 재생하지만 프로바이더 측 prompt cache는 다시 예열해야 할 수 있습니다.
313313
알 수 없는 프로바이더나 id는 종료 코드 1입니다. `--json`은 다음을 반환합니다.
314+
**401/403**이 발생하면 해당 계정의 프로세스 로컬 affinity를 해제하고 재인증을 요구합니다.
315+
**429**에서는 `Retry-After`를 준수해 계정 cooldown을 시작하고 affinity를 해제한 뒤,
316+
다른 적격 Pool 계정으로 요청을 전환할 수 있습니다. 이러한 실패 복구는
317+
`autoSwitchThreshold: 0`에서도 계속 작동하며, `0`은 사용량 기반 선제 전환만 비활성화합니다.
314318

315319
```text
316320
{ ok: true, provider, type, activeId }

docs-site/src/content/docs/ko/reference/configuration.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,10 @@ affinity 초기화 뒤의 기존 작업도 포함될 수 있습니다. 출력
9999
일시 중지는 해당 계정의 thread affinity map도 지웁니다. 진행 중인 요청은 이미 확보한 credential을 유지하지만, 이후 턴은 다시 라우팅되며 일시 중지된 계정은 재사용할 수 없습니다.
100100
상태는 재시작 후에도 유지되며, 모든 계정이 일시 중지되면 Pool 라우팅은 계정을 몰래 선택하지 않고 실패합니다.
101101
**한도 도달 계정 일시 중지**는 credential이 있는 적격 계정만 먼저 새로고친 뒤 관련 quota window가 이번 응답에서 100%로 확인된 계정만 일시 중지합니다. credential이 없는 계정과 quota가 없거나 새로고침에 실패한 계정은 변경하지 않습니다.
102+
**401/403**이 발생하면 해당 계정의 프로세스 로컬 affinity를 해제하고 재인증을 요구합니다.
103+
**429**에서는 `Retry-After`를 준수해 계정 cooldown을 시작하고 affinity를 해제한 뒤,
104+
다른 적격 Pool 계정으로 요청을 전환할 수 있습니다. 이러한 실패 복구는
105+
`autoSwitchThreshold: 0`에서도 계속 작동하며, `0`은 사용량 기반 선제 전환만 비활성화합니다.
102106

103107
**배정 및 선제 전환 전략:** `quota`(기본)는 활성 계정이 없을 때 최저 usage의 적격 계정을 선택하고,
104108
적격 활성 계정이 `autoSwitchThreshold` 미만이면 유지합니다. 임계값 도달 뒤에는 바인딩 없는 요청이나 바인딩된 작업의 다음 요청을 usage가 더 낮은 적격 계정으로 옮길 수 있습니다.

docs-site/src/content/docs/reference/cli.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -376,6 +376,10 @@ recovery may later select another eligible Pool account. Those recovery paths re
376376
usage-based switching is off. OpenCodex replays the conversation after an account change, but the
377377
provider-side prompt cache may be cold. Unknown providers or ids exit 1.
378378
`--json` returns:
379+
On a **401/403**, App login clears that account's process-local affinity and requires reauthentication.
380+
On a **429**, it honors `Retry-After`, starts the account cooldown, clears affinity, and may rotate
381+
the request to another eligible Pool account. These failure transitions remain active with
382+
`autoSwitchThreshold: 0`; that setting disables only usage-based proactive switching.
379383

380384
```text
381385
{ ok: true, provider, type, activeId }

docs-site/src/content/docs/reference/configuration.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,10 @@ restarts; if every account is paused, Pool routing fails instead of silently sel
158158
only those whose relevant quota window is freshly confirmed at 100%; accounts without credentials
159159
and unknown or failed quota refreshes are left unchanged.
160160
:::
161+
On a **401/403**, App login clears that account's process-local affinity and requires reauthentication.
162+
On a **429**, it honors `Retry-After`, starts the account cooldown, clears affinity, and may rotate
163+
the request to another eligible Pool account. These failure transitions remain active with
164+
`autoSwitchThreshold: 0`; that setting disables only usage-based proactive switching.
161165

162166
**Assignment and proactive-switching strategies:**
163167

docs-site/src/content/docs/ru/reference/cli.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,10 @@ plan/label по цепочке фолбэков использует план,
300300
Выбирает существующий аккаунт Codex, OAuth-аккаунт или API-ключ. Для `openai` значение `main`
301301
выбирает вход Codex App. Выбор Codex Pool очищает process-local affinity и применяется к следующему запросу, включая запрос существующей видимой задачи; после перезапуска прокси или affinity eviction задача также может стать непривязанной, а выполняющиеся запросы сохраняют захваченный аккаунт. Это управляет только Pool routing; Direct mode продолжает использовать caller-owned/native main credential. Проактивное переключение по использованию, повторная аутентификация 401/403, cooldown 429/retry-after, исключение и восстановление после отказа 429/402 до вывода могут позже выбрать другой подходящий Pool-аккаунт. Эти пути восстановления остаются активными, когда переключение по использованию выключено. После смены аккаунта OpenCodex воспроизводит контекст разговора, но prompt cache провайдера может потребовать прогрева. Неизвестные провайдеры
302302
или id завершаются с кодом 1. `--json` возвращает:
303+
При **401/403** локальная для процесса привязка к аккаунту сбрасывается и требуется повторная аутентификация.
304+
При **429** учитывается `Retry-After`, для аккаунта запускается cooldown, привязка сбрасывается,
305+
после чего запрос может перейти на другой подходящий аккаунт Pool. Эти переходы восстановления
306+
остаются активными при `autoSwitchThreshold: 0`; значение `0` отключает только проактивное переключение по использованию.
303307

304308
```text
305309
{ ok: true, provider, type, activeId }

docs-site/src/content/docs/ru/reference/configuration.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,10 @@ raw id аккаунтов и email приватными, а селектор и
108108
перемаршрутизируются и не могут повторно использовать приостановленный аккаунт. Состояние сохраняется после перезапуска;
109109
если приостановлены все аккаунты, маршрутизация Pool завершается ошибкой, а не выбирает аккаунт скрытно.
110110
**Приостановить исчерпанные** сначала обновляет только подходящие аккаунты с доступными учётными данными и приостанавливает только те, для которых актуальное окно квоты в этом ответе подтверждено на уровне 100%. Аккаунты без учётных данных, с неизвестной квотой или неудачным обновлением не меняются.
111+
При **401/403** локальная для процесса привязка к аккаунту сбрасывается и требуется повторная аутентификация.
112+
При **429** учитывается `Retry-After`, для аккаунта запускается cooldown, привязка сбрасывается,
113+
после чего запрос может перейти на другой подходящий аккаунт Pool. Эти переходы восстановления
114+
остаются активными при `autoSwitchThreshold: 0`; значение `0` отключает только проактивное переключение по использованию.
111115

112116
**Стратегии назначения и проактивного переключения:** `quota` выбирает подходящий аккаунт с наименьшим usage, когда активного аккаунта нет, сохраняет подходящий активный аккаунт ниже `autoSwitchThreshold`, а после порога может перевести непривязанный запрос или следующий запрос привязанной задачи на подходящий аккаунт с меньшим usage. `round-robin` равномерно распределяет непривязанные запросы, а порог не
113117
меняет обычную ротацию. `accountPoolStickyLimit` (по умолчанию `1`, 1–100) считает назначения/bind,

docs-site/src/content/docs/zh-cn/reference/cli.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,10 @@ Kiro 账号时,输出会说明它只有一个登录 slot,再次登录会替
260260

261261
选择已有的 Codex 账号、OAuth 账号或 API key。对 `openai` 而言,`main` 选择 Codex App 登录。
262262
Codex Pool 选择会清除进程本地 affinity,并从下一次请求开始生效,包括已有可见任务的请求;代理重启或 affinity eviction 后,任务也可能变为未绑定,但进行中的请求保留已捕获账号。此选择只控制 Pool routing;Direct mode 继续使用 caller-owned/native main credential。基于用量的主动切换、401/403 重新认证、429/retry-after cooldown、排除,以及输出前 429/402 故障恢复之后仍可能选择其他合格 Pool 账号。这些恢复路径在关闭基于用量的切换时仍然有效。账号变化后 OpenCodex 会重放对话上下文,但 provider prompt cache 可能需要重新预热。未知 provider 或 id 返回退出码 1。`--json` 返回:
263+
遇到 **401/403** 时,App 登录会清除该账户的进程内 affinity 并要求重新认证。
264+
遇到 **429** 时,它会遵循 `Retry-After`、启动账户 cooldown、清除 affinity,
265+
并可将请求切换到另一个符合条件的 Pool 账户。即使 `autoSwitchThreshold: 0`
266+
这些故障恢复流程仍然有效;`0` 只会禁用基于用量的主动切换。
263267

264268
```text
265269
{ ok: true, provider, type, activeId }

docs-site/src/content/docs/zh-cn/reference/configuration.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,10 @@ routing。未绑定请求没有 live 账号绑定,也可能是代理重启或
9292
暂停还会清除该账号的 thread affinity map:进行中的请求保留已捕获的 credential,但后续 turn 会重新路由,无法再使用已暂停账号。
9393
暂停状态会跨重启保留;如果所有账号均已暂停,Pool 路由会明确失败,而不会暗中选择某个账号。
9494
**暂停已达上限账号** 会先刷新有 credential 的合格账号,只暂停相关 quota window 本次明确返回 100% 的账号;无 credential、未知额度或刷新失败的账号保持不变。
95+
遇到 **401/403** 时,App 登录会清除该账户的进程内 affinity 并要求重新认证。
96+
遇到 **429** 时,它会遵循 `Retry-After`、启动账户 cooldown、清除 affinity,
97+
并可将请求切换到另一个符合条件的 Pool 账户。即使 `autoSwitchThreshold: 0`
98+
这些故障恢复流程仍然有效;`0` 只会禁用基于用量的主动切换。
9599

96100
**分配与主动切换策略:** `quota`(默认)在没有活跃账号时选择 usage 最低的合格账号;活跃账号合格且低于 `autoSwitchThreshold` 时继续使用;达到阈值后,可把未绑定请求或已绑定任务的下一次请求切换到 usage 更低的合格账号。`round-robin` 均匀分配未绑定请求,用量
97101
阈值不会改变正常轮换。`accountPoolStickyLimit`(默认 `1`,1–100)统计分配/绑定,而不是成功响应。

0 commit comments

Comments
 (0)