You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs-site/src/content/docs/ko/reference/cli.md
+1-4Lines changed: 1 addition & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -309,10 +309,7 @@ API 오류는 종료 코드 1입니다. 자격 증명 필드는 management API
309
309
#### `ocx account use <provider> <account-or-key-id|main> [--json]`
310
310
311
311
기존 Codex 계정, OAuth 계정 또는 API key를 선택합니다. `openai`에서 `main`은 Codex App 로그인을
312
-
선택합니다. Codex 선택은 현재 pool affinity를 지우고 기존에 보이던 작업을 포함한 다음 요청부터
313
-
적용되며, 진행 중인 요청은 이미 확보한 계정을 유지합니다. Pool 전략, 사용량 기반 선제 전환,
314
-
cooldown/재인증 상태, 실패 복구는 나중에 다른 적격 계정을 선택할 수 있습니다. 계정이 바뀌어도
315
-
OpenCodex는 대화 문맥을 재생하지만 프로바이더 측 prompt cache는 다시 예열해야 할 수 있습니다.
312
+
선택합니다. Codex Pool 선택은 프로세스 로컬 affinity를 지우고 기존에 보이던 작업을 포함한 다음 요청부터 적용됩니다. 프록시 재시작이나 affinity eviction 뒤에도 작업이 바인딩 없는 상태가 될 수 있지만, 진행 중인 요청은 이미 확보한 계정을 유지합니다. 이 선택은 Pool 라우팅만 제어하며 Direct mode는 호출자 소유/native main credential을 계속 사용합니다. 사용량 기반 선제 전환, 401/403 재인증, 429/retry-after cooldown, 제외, 출력 전 429/402 실패 복구는 나중에 다른 적격 Pool 계정을 선택할 수 있습니다. 이러한 복구 경로는 사용량 기반 전환이 꺼져 있어도 동작합니다. 계정이 바뀌어도 OpenCodex는 대화 문맥을 재생하지만 프로바이더 측 prompt cache는 다시 예열해야 할 수 있습니다.
316
313
알 수 없는 프로바이더나 id는 종료 코드 1입니다. `--json`은 다음을 반환합니다.
Copy file name to clipboardExpand all lines: docs-site/src/content/docs/ko/reference/configuration.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -56,7 +56,7 @@ namespaced selected id를 bare id로 바꿉니다.
56
56
|`codexAccountNamespaces?`|`Record<string,string>`| — | 공개 model selector namespace에서 저장된 Codex 계정 target으로 연결하는 선택적 map입니다. 이 foundation layer는 map을 검증하고 저장하지만 picker row를 추가하거나 routing을 변경하지 않습니다. |
57
57
|`activeCodexAccountId?`|`string`| — | 수동으로 선택한 pool 계정. 선택 시 기존 thread affinity를 지우고 다음 요청부터 적용하며, 진행 중인 요청은 기존 계정을 유지합니다. |
58
58
|`autoSwitchThreshold?`|`number`|`80`| 사용량 기반 선제 전환 임계값입니다. `quota`는 바인딩된 작업과 바인딩 없는 작업의 다음 요청을 모두 재평가할 수 있고, `fill-first`는 바인딩 없는 작업 배정의 소진 기준으로만 사용하며, 기본 `round-robin` 선택은 이 값을 사용하지 않습니다. 알려진 5시간, 주간, 30일 quota window 중 가장 높은 점수를 씁니다. `0`은 사용량 기반 전환만 끄며 바인딩 없는 작업 배정이나 실패 복구는 끄지 않습니다. |
59
-
|`accountPoolStrategy?`|`"quota" \| "round-robin" \| "fill-first"`|`"quota"`| 새 작업/바인딩 없는 Codex 요청의 계정 배정 전략입니다. `(parent thread id, quota scope)`의 live affinity가 없으면 바인딩 없는 요청이며, 프록시 재시작이나 affinity 초기화 뒤에는 기존에 보이던 작업도 바인딩이 없어질 수 있습니다. `quota`는 알려진 usage가 가장 낮은 계정을 고르고 `autoSwitchThreshold`뒤 바인딩된 작업도 선제 재바인딩할 수 있습니다. `round-robin`은 바인딩 없는 요청을 균등 분배하고, `fill-first`는 cooldown, 사용 불가 또는 drain threshold까지 활성 계정에 배정합니다. |
59
+
|`accountPoolStrategy?`|`"quota" \| "round-robin" \| "fill-first"`|`"quota"`| 새 작업/바인딩 없는 Codex 요청의 계정 배정 전략입니다. `(parent thread id, quota scope)`의 live affinity가 없으면 바인딩 없는 요청이며, 프록시 재시작이나 affinity 초기화 뒤에는 기존에 보이던 작업도 바인딩이 없어질 수 있습니다. `quota`는 활성 계정이 없을 때 알려진 usage가 가장 낮은 적격 계정을 선택하고, 적격 활성 계정이 `autoSwitchThreshold`미만이면 유지합니다. 임계값 도달 뒤에는 바인딩 없는 요청이나 바인딩된 작업의 다음 요청을 usage가 더 낮은 적격 계정으로 옮길 수 있습니다. `round-robin`은 바인딩 없는 요청을 균등 분배하고, `fill-first`는 cooldown, 사용 불가 또는 drain threshold까지 활성 계정에 배정합니다. |
60
60
|`accountPoolStickyLimit?`|`number`|`1`| 한 round-robin 선택이 다음으로 넘어가기 전에 유지하는 새 작업/바인딩 없는 작업 배정 수입니다. 카운터는 업스트림 성공 뒤가 아니라 작업을 바인딩할 때 증가합니다. 범위 1–100이며 `accountPoolStrategy`가 `round-robin`일 때만 적용됩니다. |
61
61
|`upstreamFailoverThreshold?`|`number`|`3`| 일시적인 업스트림 실패가 연속으로 발생한 뒤, 이후 새 세션을 다른 적합한 pool 계정으로 failover할 횟수. `0`이면 실패 기반 failover를 끕니다. |
62
62
|`modelCacheTtlMs?`|`number`|`300000`| 프로바이더별 `/models` 캐시의 유효 기간(5분). |
@@ -100,8 +100,8 @@ affinity 초기화 뒤의 기존 작업도 포함될 수 있습니다. 출력
100
100
상태는 재시작 후에도 유지되며, 모든 계정이 일시 중지되면 Pool 라우팅은 계정을 몰래 선택하지 않고 실패합니다.
101
101
**한도 도달 계정 일시 중지**는 credential이 있는 적격 계정만 먼저 새로고친 뒤 관련 quota window가 이번 응답에서 100%로 확인된 계정만 일시 중지합니다. credential이 없는 계정과 quota가 없거나 새로고침에 실패한 계정은 변경하지 않습니다.
102
102
103
-
**배정 및 선제 전환 전략:**`quota`(기본)는 바인딩 없는 요청에 최저 usage 계정을 배정하고,
104
-
활성 계정이 `autoSwitchThreshold`를 넘으면 바인딩된 작업의 다음 요청도 재바인딩할 수 있습니다.
103
+
**배정 및 선제 전환 전략:**`quota`(기본)는 활성 계정이 없을 때 최저 usage의 적격 계정을 선택하고,
104
+
적격 활성 계정이 `autoSwitchThreshold` 미만이면 유지합니다. 임계값 도달 뒤에는 바인딩 없는 요청이나 바인딩된 작업의 다음 요청을 usage가 더 낮은 적격 계정으로 옮길 수 있습니다.
105
105
`round-robin`은 바인딩 없는 요청을 균등 분배하며 임계값은 기본 순환에 영향을 주지 않습니다.
106
106
`accountPoolStickyLimit`(기본 `1`, 1–100)은 성공 응답이 아니라 배정/바인딩 횟수를 셉니다.
107
107
`fill-first`는 바인딩 없는 요청을 cooldown, 재인증 또는 drain threshold까지 활성 계정에 배정하고,
Copy file name to clipboardExpand all lines: docs-site/src/content/docs/reference/configuration.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -61,7 +61,7 @@ differing backup and rewrites known legacy namespaced selected ids to bare ids.
61
61
|`codexAccountNamespaces?`|`Record<string,string>`| — | Optional public model-selector namespace → stored Codex account target map. This foundation layer validates and persists the map but does not add picker rows or change routing. |
62
62
|`activeCodexAccountId?`|`string`| — | Manually selected Pool account. Selection clears existing thread affinity and applies to the next request; in-flight requests keep their captured account. |
63
63
|`autoSwitchThreshold?`|`number`|`80`| Usage threshold for proactive switching. `quota` can re-evaluate both bound and unbound tasks on their next request; `fill-first` uses it only as the drain point for unbound assignment; normal `round-robin` selection does not use it. The score uses the hottest known 5h, weekly, or 30d quota window. `0` disables usage-based proactive switching only, not unbound assignment or failure recovery. |
64
-
|`accountPoolStrategy?`|`"quota" \| "round-robin" \| "fill-first"`|`"quota"`| Assignment strategy for new/unbound Codex requests. A request is unbound when it has no live `(parent thread id, quota scope)` affinity; a visible existing task can become unbound after proxy restart or affinity reset. `quota` picks the lowest known usage and may proactively rebind a bound task after `autoSwitchThreshold`;`round-robin` distributes unbound requests evenly; `fill-first` keeps assigning unbound requests to the active account until cooldown, unavailability, or the configured drain threshold. |
64
+
|`accountPoolStrategy?`|`"quota" \| "round-robin" \| "fill-first"`|`"quota"`| Assignment strategy for new/unbound Codex requests. A request is unbound when it has no live `(parent thread id, quota scope)` affinity; a visible existing task can become unbound after proxy restart or affinity reset. `quota` picks the lowest-usage eligible account when no active account exists, keeps an eligible active account below `autoSwitchThreshold`, and after the threshold may move an unbound request or proactively rebind a bound task to a lower-usage eligible account.`round-robin` distributes unbound requests evenly; `fill-first` keeps assigning unbound requests to the active account until cooldown, unavailability, or the configured drain threshold. |
65
65
|`accountPoolStickyLimit?`|`number`|`1`| Number of new/unbound task assignments retained on one round-robin selection before advancing. The counter advances when a task is bound, not after an upstream success. Range 1–100; only applies when `accountPoolStrategy` is `round-robin`. |
66
66
|`upstreamFailoverThreshold?`|`number`|`3`| Consecutive transient upstream failures before future new sessions fail over to another eligible pool account. Set `0` to disable failure failover. |
67
67
|`modelCacheTtlMs?`|`number`|`300000`| Freshness window for the per-provider `/models` cache (5 min). |
@@ -163,7 +163,7 @@ and unknown or failed quota refreshes are left unchanged.
163
163
164
164
| Strategy | Behaviour |
165
165
| --- | --- |
166
-
|`quota` (default) |For unbound requests, pick the lowest-usage eligible account across 5h, weekly, and 30d windows. A bound task can also be rebound on its next request after the active account crosses `autoSwitchThreshold`. `autoSwitchThreshold: 0` disables this usage-driven re-evaluation, not failure recovery. |
166
+
|`quota` (default) |If no active account exists, pick the lowest-usage eligible account across 5h, weekly, and 30d windows. Otherwise retain an eligible active account below `autoSwitchThreshold`; after it crosses the threshold, an unbound request or a bound task's next request can move to a lower-usage eligible account. `autoSwitchThreshold: 0` disables this usage-driven re-evaluation, not failure recovery. |
167
167
|`round-robin`| Evenly assign unbound requests across eligible accounts. `autoSwitchThreshold` does not change normal round-robin selection. `accountPoolStickyLimit` (default `1`, range 1–100) counts assignments/bindings on one pick, not successful upstream responses. |
168
168
|`fill-first`| Assign unbound requests to the active account until cooldown, reauthentication, or (when set) the `autoSwitchThreshold` drain point; unknown usage does not force a switch. Healthy bound tasks keep affinity. |
0 commit comments