Skip to content

Commit e6d3d27

Browse files
committed
Merge branch 'dev'
2 parents 37f97e3 + a4bd122 commit e6d3d27

27 files changed

Lines changed: 1912 additions & 14 deletions

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ opencodex는 `~/.opencodex/config.json`에서 설정을 읽습니다. `ocx init`
2020
| `subagentModels?` | `string[]` | `gpt-5.5`, GPT-5.6 3종, `gpt-5.4-mini` | Codex 서브에이전트 선택기 앞쪽에 표시할 네이티브 slug 또는 `provider/model` id. 최대 5개이며, 명시적인 빈 배열도 그대로 보존합니다. v2 위임 안내에는 사용 가능한 모델 로스터로도 주입되며, 각 항목이 카탈로그에 광고하는 effort 사다리가 함께 표기됩니다. |
2121
| `injectionModel?` | `string` || 주입되는 multi-agent 안내(v2 표면)에 들어갈 네이티브/라우팅 모델. 위임 안내에서 이 모델을 `fork_turns: "none"`과 함께 `spawn_agent`에 넘기게 합니다. |
2222
| `injectionEffort?` | `string` || 선호하는 `spawn_agent` reasoning effort(`low`부터 `ultra`). `injectionModel`과 함께 쓸 때만 의미가 있습니다. |
23+
| `effortCap?` | `string` | — | reasoning effort에 요청별로 적용하는 강제 상한입니다. 멀티 에이전트 V2 전용 기능으로, 자체 도구 목록에 V2 협업 표면이 있는 메인 턴과, `x-openai-subagent: collab_spawn` 헤더 또는 `x-codex-turn-metadata`의 `"subagent_kind": "thread_spawn"` 표식이 정확히 일치하는 스폰된 자식 턴에 적용됩니다(표식이 붙은 자식은 자체 도구 표면과 무관하게 적용 대상입니다). 일반 메인 턴과 V1 표면 메인 턴은 건드리지 않고, 컴팩션 턴은 항상 상한을 우회하며, `multiAgentMode: "v1"`은 상한 기능 전체를 비활성화합니다(대시보드도 패널을 숨깁니다). `low`부터 `ultra`까지 허용하며 값을 높이지 않고 낮추기만 합니다. 상한 이하에서 모델이 지원하는 가장 높은 단계로 내립니다. 모델이 effort 제어를 노출하지 않거나 상한 이하에 지원 단계가 없으면 effort 필드를 제거하고 프로바이더 기본값을 적용합니다. `max`와 `ultra`도 허용하지만 더 낮은 rank 상한을 만들지는 않습니다(클라이언트가 `ultra`를 `max`로 변환하므로 요청은 `low`부터 `max`로 들어옵니다). 단, 알려진 모델 effort 사다리에 따라 단계가 내려가거나 필드가 제거될 수 있습니다. 대시보드 선택기는 `low`부터 `xhigh`까지 제공합니다. `GET /api/effort-caps`와 `PUT /api/effort-caps`로 관리합니다. |
24+
| `subagentEffortCap?` | `string` | — | 같은 강제 상한을 codex-rs 표식이 정확히 일치하는 스폰된 자식 턴에만 적용합니다: `x-openai-subagent: collab_spawn` 또는 `x-codex-turn-metadata`의 `"subagent_kind": "thread_spawn"`. 그 외 내부 서브에이전트 범주(리뷰, 컴팩션, 메모리 정리)는 이 상한에 걸리지 않으며, `multiAgentMode: "v1"`은 기능 전체를 비활성화합니다. `low`부터 `ultra`까지 허용하며 두 상한이 모두 설정되면 더 낮은 값이 적용되고, 값을 높이지 않고 낮추기만 합니다. 상한 이하에서 모델이 지원하는 가장 높은 단계로 내립니다. 모델이 effort 제어를 노출하지 않거나 상한 이하에 지원 단계가 없으면 effort 필드를 제거하고 프로바이더 기본값을 적용합니다. `max`와 `ultra`도 허용하지만 더 낮은 rank 상한을 만들지는 않습니다(클라이언트가 `ultra`를 `max`로 변환하므로 요청은 `low`부터 `max`로 들어옵니다). 단, 알려진 모델 effort 사다리에 따라 단계가 내려가거나 필드가 제거될 수 있습니다. 대시보드 선택기는 `low`부터 `xhigh`까지 제공합니다. `GET /api/effort-caps`와 `PUT /api/effort-caps`로 관리합니다. |
2325
| `injectionPrompt?` | `string` || 주입되는 v2 안내 본문을 통째로 교체하는 커스텀 텍스트. `{{model}}`, `{{effort}}`, `{{roster}}` 플레이스홀더가 치환되며 발화 조건은 그대로입니다. `PUT /api/injection-model``prompt` 키로도 설정할 수 있습니다. |
2426
| `disabledModels?` | `string[]` || Codex에서 숨길 모델. 라우팅된 `provider/model` id는 카탈로그와 `/v1/models`에서 제외합니다. `gpt-5.4` 같은 일반 네이티브 GPT slug는 카탈로그 항목을 `visibility: "hide"`로 바꾸고 일반 `/v1/models` 목록에서 뺍니다. 대시보드 Models 페이지에서 모델별로 전환할 수 있습니다. |
2527
| `multiAgentMode?` | `"v1" \| "default" \| "v2"` | `"default"` | 3단계 multi-agent surface override. `"v1"`은 업스트림 pin보다 우선해 모든 모델을 v1로, `"default"`는 업스트림 model pin(sol/terra=v2, luna=v1)을 따르고, `"v2"`는 모두 v2로 강제합니다. 대시보드 Models 페이지나 `ocx v2 mode`에서 설정합니다. |

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ console warning, and starts with defaults. Missing files also fall back to a def
2121
| `subagentModels?` | `string[]` | `gpt-5.5`, GPT-5.6 trio, `gpt-5.4-mini` | Up to 5 native slugs or `provider/model` ids featured first in Codex's subagent picker. Also injected into v2 delegation guidance as the available-model roster, annotated with the effort ladder each entry advertises in the catalog. An explicit empty list is preserved. |
2222
| `injectionModel?` | `string` || Preferred native or routed model named in the injected multi-agent guidance (v2 surface); delegation is told to pass this exact model to `spawn_agent` with `fork_turns: "none"`. |
2323
| `injectionEffort?` | `string` || Preferred `spawn_agent` reasoning effort (`low` through `ultra`). Only meaningful with `injectionModel`. |
24+
| `effortCap?` | `string` | — | Hard per-request ceiling for reasoning effort. A multi-agent V2 feature: it applies to main turns whose own tool list carries the V2 collab surface, plus spawned-child turns marked with exactly `x-openai-subagent: collab_spawn` or `"subagent_kind": "thread_spawn"` in `x-codex-turn-metadata` (marked children qualify regardless of their own tool surface). Plain and V1-surface main turns are untouched, compaction turns always bypass caps, and `multiAgentMode: "v1"` disables caps entirely (the Dashboard hides the panel). Accepts `low` through `ultra`; caps only lower, never raise. Snaps down to the highest supported rung at or below the cap. If the model exposes no effort control, or no supported rung fits under the cap, the effort field is removed and the provider default applies. `max` and `ultra` are accepted but do not impose a lower rank ceiling (requests arrive as `low` through `max` after the client's `ultra` → `max` conversion), though known model ladders may still cause snap-down or strip. The Dashboard picker offers `low` through `xhigh`. Managed via `GET /api/effort-caps` and `PUT /api/effort-caps`. |
25+
| `subagentEffortCap?` | `string` | — | The same hard ceiling, applied only to spawned-child turns identified by codex-rs markers matched exactly: `x-openai-subagent: collab_spawn` or `"subagent_kind": "thread_spawn"` in `x-codex-turn-metadata`. Other internal sub-agent categories (review, compaction, memory consolidation) never trip this cap, and `multiAgentMode: "v1"` disables it entirely. Accepts `low` through `ultra`; when both caps are set, the lower one wins, and caps only lower, never raise. Snaps down to the highest supported rung at or below the cap. If the model exposes no effort control, or no supported rung fits under the cap, the effort field is removed and the provider default applies. `max` and `ultra` are accepted but do not impose a lower rank ceiling (requests arrive as `low` through `max` after the client's `ultra` → `max` conversion), though known model ladders may still cause snap-down or strip. The Dashboard picker offers `low` through `xhigh`. Managed via `GET /api/effort-caps` and `PUT /api/effort-caps`. |
2426
| `injectionPrompt?` | `string` || Custom override for the injected v2 guidance body. Replaces the built-in text; `{{model}}`, `{{effort}}`, and `{{roster}}` placeholders are substituted. Firing gates are unchanged. Settable via `PUT /api/injection-model` (`prompt` key). |
2527
| `disabledModels?` | `string[]` || Models hidden from Codex. Routed `provider/model` ids are excluded from the catalog and `/v1/models`; bare native GPT slugs (e.g. `gpt-5.4`) flip their catalog entry to `visibility: "hide"` and drop from the bare `/v1/models` list. Toggleable per model from the dashboard Models page. |
2628
| `multiAgentMode?` | `"v1" \| "default" \| "v2"` | `"default"` | 3-state multi-agent surface override. `"v1"` forces all models to the v1 surface (overrides upstream pins); `"default"` respects upstream model pins (sol/terra=v2, luna=v1); `"v2"` forces all models to v2. Settable from the dashboard Models page or `ocx v2 mode`. |

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ opencodex 使用 `~/.opencodex/config.json` 配置。`ocx init` 和仪表盘会
2020
| `subagentModels?` | `string[]` | `gpt-5.5`、三款 GPT-5.6、`gpt-5.4-mini` | 最多 5 个原生 slug 或 `provider/model` id,优先显示在 Codex subagent picker 中。显式空数组会被保留。 也会作为可用模型清单注入 v2 委派指南,并标注各模型在目录中公布的 effort 阶梯。 |
2121
| `injectionModel?` | `string` || 注入 multi-agent 指南(v2 界面)的首选原生或路由模型;委派指南会要求把该模型连同 `fork_turns: "none"` 一起传给 `spawn_agent`|
2222
| `injectionEffort?` | `string` || 首选 `spawn_agent` reasoning effort(`low``ultra`)。只有与 `injectionModel` 一起使用才有意义。 |
23+
| `effortCap?` | `string` | — | reasoning effort 的逐请求硬上限。这是多代理 V2 专属功能:适用于工具列表带有 V2 协作表面的主轮次,以及标记精确匹配 `x-openai-subagent: collab_spawn` 或 `x-codex-turn-metadata` 中 `"subagent_kind": "thread_spawn"` 的派生子轮次(带标记的子轮次无论自身工具表面如何都会被覆盖)。普通主轮次与 V1 表面主轮次不受影响,压缩(compaction)轮次始终绕过上限,`multiAgentMode: "v1"` 会完全禁用上限功能(仪表盘同时隐藏该面板)。接受 `low` 到 `ultra`;只会降低 effort,绝不会提高。会降至不高于上限的最高受支持档位。若模型不提供 effort 控制,或上限之下没有可用档位,则移除 effort 字段并采用 provider 默认值。`max` 和 `ultra` 均可使用,但不会形成更低的等级上限(客户端会将 `ultra` 转换为 `max`,因此请求以 `low` 到 `max` 的范围到达);不过,已知的模型 effort 阶梯仍可能触发降档或移除字段。仪表盘选择器提供 `low` 到 `xhigh`。通过 `GET /api/effort-caps` 和 `PUT /api/effort-caps` 管理。 |
24+
| `subagentEffortCap?` | `string` || 同样的硬上限,但只用于 codex-rs 标记精确匹配的派生子轮次:`x-openai-subagent: collab_spawn`,或 `x-codex-turn-metadata` 中的 `"subagent_kind": "thread_spawn"`。其他内部子代理类别(评审、压缩、记忆整理)不会触发此上限,`multiAgentMode: "v1"` 会完全禁用该功能。接受 `low``ultra`;两个上限同时设置时取较低者,且只会降低 effort,绝不会提高。会降至不高于上限的最高受支持档位。若模型不提供 effort 控制,或上限之下没有可用档位,则移除 effort 字段并采用 provider 默认值。`max``ultra` 均可使用,但不会形成更低的等级上限(客户端会将 `ultra` 转换为 `max`,因此请求以 `low``max` 的范围到达);不过,已知的模型 effort 阶梯仍可能触发降档或移除字段。仪表盘选择器提供 `low``xhigh`。通过 `GET /api/effort-caps``PUT /api/effort-caps` 管理。 |
2325
| `injectionPrompt?` | `string` || 整体替换注入的 v2 指南正文的自定义文本。`{{model}}``{{effort}}``{{roster}}` 占位符会被替换,触发条件保持不变。也可通过 `PUT /api/injection-model``prompt` 键设置。 |
2426
| `disabledModels?` | `string[]` || 从 Codex 隐藏的模型。路由 `provider/model` id 会从目录和 `/v1/models` 排除;bare 原生 GPT slug(如 `gpt-5.4`)的目录条目会改成 `visibility: "hide"`,并从 bare `/v1/models` 列表移除。可在仪表盘 Models 页面按模型切换。 |
2527
| `multiAgentMode?` | `"v1" \| "default" \| "v2"` | `"default"` | 三态 multi-agent surface override。`"v1"` 覆盖 upstream pin,强制全部模型使用 v1;`"default"` 遵循 upstream model pin(sol/terra=v2,luna=v1);`"v2"` 强制全部模型使用 v2。可在仪表盘 Models 页面或 `ocx v2 mode` 中设置。 |

gui/src/i18n/de.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@ export const de = {
5454
"dash.injectionNone": "Keine",
5555
"dash.injectionEffortLabel": "Reasoning-Aufwand",
5656
"dash.injectionEffortNone": "Modell-Standard",
57+
"dash.effortCapLabel": "V2 Ultra Effort-Limit",
58+
"dash.subagentEffortCapLabel": "V2 Sub-Agent Effort-Limit",
59+
"dash.effortCapHelp": "Begrenzt die Reasoning-Intensität für V2-Ultra-Modus-Turns. Wenn gesetzt, werden eingehende Max-Anfragen (aus dem Ultra-Modus) auf das gewählte Niveau begrenzt. Das Sub-Agent-Limit gilt nur für erzeugte Kind-Agenten. Limits senken die Intensität nur, sie erhöhen sie nie. Wenn ein Modell das gewählte Niveau nicht unterstützt, wird automatisch auf das nächste unterstützte Niveau herabgesetzt.",
60+
"dash.effortCapNone": "Kein Limit",
5761
"dash.maintenance": "Wartung",
5862
"dash.maintenanceHint": "Aktualisiere Codex’ Modellkatalog oder installiere eine neuere opencodex-Version.",
5963
"dash.syncModels": "Modelle synchronisieren",
@@ -76,6 +80,12 @@ export const de = {
7680
"dash.updateSource": "Dies ist ein Source-Checkout. Aktualisiere es im Terminal mit dem angezeigten Befehl.",
7781
"dash.updateUnavailable": "Die neueste Version konnte nicht von npm gelesen werden. Versuche es später erneut.",
7882
"dash.updateRetry": "Wiederholen",
83+
"dash.updateRecheck": "Erneut prüfen",
84+
"dash.updateCannotAuto": "Ein-Klick-Update ist nicht verfügbar ({reason}).",
85+
"dash.updateReason.source_checkout": "Quellcode-Checkout",
86+
"dash.updateReason.latest_unavailable": "npm-Registry nicht erreichbar",
87+
"dash.updateReason.already_latest": "bereits auf dem neuesten Stand",
88+
"dash.updateReason.unknown": "Update nicht verfügbar",
7989
"dash.updateRestart": "Nach Update neu starten",
8090
"dash.updateRestartHint": "Empfohlen. Die aktuelle GUI läuft weiter mit altem Code, bis der Proxy neu startet.",
8191
"dash.runUpdate": "Aktualisieren",

gui/src/i18n/en.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,10 @@ export const en = {
5858
"dash.injectionNone": "None",
5959
"dash.injectionEffortLabel": "Reasoning effort",
6060
"dash.injectionEffortNone": "Model default",
61+
"dash.effortCapLabel": "V2 ultra effort limit",
62+
"dash.subagentEffortCapLabel": "V2 sub-agent effort limit",
63+
"dash.effortCapHelp": "Limits the reasoning effort for V2 ultra-mode turns. When set, incoming max-effort requests (from ultra mode) are capped to the selected level. The sub-agent limit applies only to spawned child agents. Caps only lower effort, never raise it. If a model doesn't support the capped level, it snaps down to the nearest supported level.",
64+
"dash.effortCapNone": "No cap",
6165
"dash.maintenance": "Maintenance",
6266
"dash.maintenanceHint": "Refresh Codex's model catalog or install a newer opencodex release.",
6367
"dash.syncModels": "Sync models",
@@ -80,6 +84,12 @@ export const en = {
8084
"dash.updateSource": "This is a source checkout. Update it from the terminal with the shown command.",
8185
"dash.updateUnavailable": "Could not read the latest version from npm. Try again later.",
8286
"dash.updateRetry": "Retry",
87+
"dash.updateRecheck": "Re-check",
88+
"dash.updateCannotAuto": "One-click update is unavailable ({reason}).",
89+
"dash.updateReason.source_checkout": "source checkout",
90+
"dash.updateReason.latest_unavailable": "npm registry unreachable",
91+
"dash.updateReason.already_latest": "already on latest",
92+
"dash.updateReason.unknown": "update unavailable",
8393
"dash.updateRestart": "Restart after update",
8494
"dash.updateRestartHint": "Recommended. The current GUI keeps running the old code until the proxy restarts.",
8595
"dash.runUpdate": "Update",

gui/src/i18n/ko.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,10 @@ export const ko: Record<TKey, string> = {
5858
"dash.injectionNone": "없음",
5959
"dash.injectionEffortLabel": "추론 강도",
6060
"dash.injectionEffortNone": "모델 기본값",
61+
"dash.effortCapLabel": "V2 ultra 추론 강도 제한",
62+
"dash.subagentEffortCapLabel": "V2 서브에이전트 추론 강도 제한",
63+
"dash.effortCapHelp": "V2 ultra 모드 턴의 추론 강도를 제한합니다. 설정하면 ultra 모드에서 들어오는 max 요청이 선택한 수준으로 내려갑니다. 서브에이전트 제한은 스폰된 자식 에이전트에만 적용됩니다. 강도를 낮추기만 하고 올리지는 않습니다. 모델이 해당 수준을 지원하지 않으면 가장 가까운 지원 수준으로 내려갑니다.",
64+
"dash.effortCapNone": "상한 없음",
6165
"dash.maintenance": "유지보수",
6266
"dash.maintenanceHint": "Codex 모델 카탈로그를 새로고침하거나 최신 opencodex 릴리스를 설치합니다.",
6367
"dash.syncModels": "모델 동기화",
@@ -80,6 +84,12 @@ export const ko: Record<TKey, string> = {
8084
"dash.updateSource": "현재는 소스 체크아웃입니다. 표시된 명령을 터미널에서 실행해 업데이트하세요.",
8185
"dash.updateUnavailable": "npm에서 최신 버전을 읽지 못했습니다. 잠시 후 다시 시도하세요.",
8286
"dash.updateRetry": "재시도",
87+
"dash.updateRecheck": "다시 확인",
88+
"dash.updateCannotAuto": "원클릭 업데이트를 사용할 수 없습니다 ({reason}).",
89+
"dash.updateReason.source_checkout": "소스 체크아웃",
90+
"dash.updateReason.latest_unavailable": "npm 레지스트리에 연결할 수 없음",
91+
"dash.updateReason.already_latest": "이미 최신 버전",
92+
"dash.updateReason.unknown": "업데이트 불가",
8393
"dash.updateRestart": "업데이트 후 재시작",
8494
"dash.updateRestartHint": "권장. 프록시를 재시작하기 전까지 현재 GUI는 이전 코드로 계속 실행됩니다.",
8595
"dash.runUpdate": "업데이트",

gui/src/i18n/zh.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,10 @@ export const zh: Record<TKey, string> = {
5858
"dash.injectionNone": "无",
5959
"dash.injectionEffortLabel": "推理强度",
6060
"dash.injectionEffortNone": "模型默认",
61+
"dash.effortCapLabel": "V2 ultra 推理强度限制",
62+
"dash.subagentEffortCapLabel": "V2 子代理推理强度限制",
63+
"dash.effortCapHelp": "限制 V2 ultra 模式轮次的推理强度。设置后,来自 ultra 模式的 max 请求将被限制到所选级别。子代理限制仅适用于衍生的子代理。只会降低强度,不会提高。如果模型不支持所选级别,将自动降至最近的支持级别。",
64+
"dash.effortCapNone": "无上限",
6165
"dash.maintenance": "维护",
6266
"dash.maintenanceHint": "刷新 Codex 模型目录,或安装新的 opencodex 版本。",
6367
"dash.syncModels": "同步模型",
@@ -80,6 +84,12 @@ export const zh: Record<TKey, string> = {
8084
"dash.updateSource": "当前是源码检出。请在终端运行显示的命令进行更新。",
8185
"dash.updateUnavailable": "无法从 npm 读取最新版本。请稍后重试。",
8286
"dash.updateRetry": "重试",
87+
"dash.updateRecheck": "重新检查",
88+
"dash.updateCannotAuto": "无法一键更新({reason})。",
89+
"dash.updateReason.source_checkout": "源码检出",
90+
"dash.updateReason.latest_unavailable": "无法连接 npm 注册表",
91+
"dash.updateReason.already_latest": "已是最新版本",
92+
"dash.updateReason.unknown": "无法更新",
8393
"dash.updateRestart": "更新后重启",
8494
"dash.updateRestartHint": "推荐开启。代理重启前,当前 GUI 仍运行旧代码。",
8595
"dash.runUpdate": "更新",

0 commit comments

Comments
 (0)