AiAgent 将 Codex 本地代理使用的模型从本机 Codex CLI 默认值中解耦。管理员可以维护允许使用的 Codex 模型、默认模型,以及普通用户能否在聊天中切换模型;聊天请求只能使用该白名单中的模型。
首期内置模型:
gpt-6.1-sol:GPT-6.1 Sol,适合复杂编码、长时间任务与 Agent 工作流。gpt-6.1-terra:GPT-6.1 Terra,适合日常开发、分析与 Agent 工作流,兼顾速度与质量。gpt-5.6-sol:Sol,适合复杂、开放式的编码与分析任务。gpt-5.6-terra:Terra,适合日常开发任务,兼顾速度与质量。
模型实际可用性仍取决于运行后端账户的 Codex 登录状态、套餐和当时容量,平台不承诺任一模型始终可用。
配置保存为全局 AiSettingSnapshot,键为 codex_model_policy,不写入或修改运行账户的 ~/.codex/config.toml。默认配置为 Sol、Terra 都启用,默认 Sol,并允许聊天切换。
{
"allowed_model_ids": ["gpt-5.6-sol", "gpt-5.6-terra"],
"default_model_id": "gpt-5.6-sol",
"allow_chat_model_override": true
}管理员通过 PUT /api/v1/agent-providers/codex-model-policy 更新该配置。服务端只接受内置模型目录中的模型 ID;默认模型必须在启用列表中。普通用户只能读取 GET /api/v1/agent-providers/codex-model-policy 的安全视图,不能修改策略。
- 聊天页选择
Codex 本地时,原有自有 LLM 模型选择器替换为 Codex 模型选择器。 - 初始值取管理员默认模型;管理员禁用聊天切换时,下拉框只读。
- 前端传递独立字段
codex_model_id,不能复用自有 Agent 的model_id。 - 后端再次解析策略:空值使用默认模型;非白名单模型、禁用切换时的非默认模型均拒绝。
- 后端在 Codex app-server
thread/start中传入model。 - 返回消息、历史会话和流量记录使用实际 Codex 模型 ID 与显示名,便于按模型审计消耗。
Codex 运行租约的缓存键必须包含模型 ID。这样同一个浏览器标签在 Sol 与 Terra 间切换时,会创建对应模型的 app-server 租约,不会错误复用旧模型的运行上下文。
心跳不指定模型,使用当前默认模型仅用于预热;真正聊天请求始终以服务器解析后的模型为准。
Selected model is at capacity 属于 Codex 服务端临时容量问题,不是 AiAgent 配置或本地 CLI 安装错误。
- 后端将该类错误归类为“模型繁忙”,返回可读说明及当前模型。
- 首期不静默自动切换模型,避免模型、质量与流量记录和用户预期不一致。
- 聊天用户可重试,或在管理员允许时明确切换到另一个可用模型(例如 Terra)。
- 后续如需自动降级,应新增管理员配置的回退顺序、开关和每次切换审计;不能只靠字符串匹配后静默重试。
- 内置模型扩展为
gpt-5.6-sol、gpt-5.6-terra、gpt-5.6-luna;管理员可分别启用并设置默认值。 - 管理员可以维护
minimal、low、medium、high、xhigh推理等级、默认等级,以及是否允许聊天框覆盖默认值。AiAgent 将选中的等级通过 app-server 的modelReasoningEffort下发。 - 管理员可新增第三方 Codex profile:显示名、
profile_name、可选的实际model_id、说明,以及该 provider 是否支持modelReasoningEffort。profile 名称仅允许字母、数字、连字符和下划线。 - profile 不写进
thread/start。内置模型仍走 app-server;第三方 profile 走codex exec --profile <profile_name> --json,该 profile 对应后端运行账户~/.codex/<profile_name>.config.toml。 - 第三方项未填写
model_id时,AiAgent 不传model,完整采用 profile 文件中的模型配置;填写后才覆盖为管理员指定的模型 ID。 - 运行时租约键同时包含工作目录、模型选择与 profile,避免项目切换或 DeepSeek 等不同 profile 复用到错误的 app-server 进程。
配置了 profile_name 的第三方模型不依赖 app-server,而是由服务端执行 codex exec --profile <profile_name> --json。后端逐行解析 JSONL,将文本、工具和文件修改事件映射为现有 SSE;首次运行返回的 Codex session id 会保存到 AiAgent 会话偏好,后续消息自动使用 codex exec resume <sessionId> --json。
该模式不使用 --ephemeral,因此可保留 Codex CLI 上下文。浏览器停止生成时取消 HTTP 请求,后端会终止对应的 CLI 子进程树。第三方 provider 的模型、认证、审批和 sandbox 应在其 profile 文件中配置;只有管理员勾选“允许在聊天中选择推理等级”时,AiAgent 才通过 --config model_reasoning_effort=<等级> 覆盖 profile 默认值。
- 管理员可启用/停用 Sol、Terra,设置默认模型和聊天切换权限。
- 普通用户无法调用策略更新接口。
- Codex 请求未指定模型时使用管理员默认模型。
- 普通用户提交不允许的
codex_model_id被后端拒绝。 - Codex 消息与流量记录显示实际使用的 Sol 或 Terra。
- 切换模型后不会复用先前模型的运行租约。
- Codex 容量满时显示“模型繁忙”而非笼统的内部错误。
- 新增
gpt-6.1-sol,通过 app-server 原样传入模型 ID,支持原生图片输入。 - 推理等级为
low/medium/high/xhigh/max;显式none/minimal被拒绝。默认等级不兼容时,从管理员允许的兼容等级中选择。 - 目录版本 4 为旧策略补充启用新模型,保留默认模型、切换权限及已禁用的旧模型;保存版本 4 后禁用新模型不会再次自动启用。
- 设置页与聊天选择器读取服务端目录。部署新版后端后生效;已有 Codex worker 退出后,新进程使用更新的 CLI。
- CLI 更新命令:
npm install -g @openai/codex@latest。实际模型权限仍取决于后端运行账户。 - 官方资料:模型规格、Codex 模型选择。
- 新增
gpt-6.1-terra,通过 app-server 原样传入模型 ID,支持原生图片输入。 - 推理等级为
low/medium/high/xhigh/max;显式none/minimal被拒绝。默认等级不兼容时,从管理员允许的兼容等级中选择。 - 目录版本 5 为旧策略补充启用新模型,保留默认模型、切换权限及已禁用的旧模型;保存版本 5 后禁用新模型不会再次自动启用。
- 设置页与聊天选择器读取服务端目录,部署新版后端后即可选择 GPT-6.1 Terra。