OpenCodex 多智能体(Multi-Agent)子代理契约详解:spawn_agent 模型选择、V1/V2 界面与目录引脚规则
【免费下载链接】opencodexUniversal provider proxy for OpenAI Codex Claude Code — use any LLM (Claude, Gemini, Grok, DeepSeek, Ollama…) with Codex CLI, App, SDK, and Claude Code项目地址https://gitcode.com/gh_mirrors/ope/opencodex点击查看免费下载本文基于 OpenCodex 对本地 codex-rs 上游的研究笔记devlog_fin/260723_codexrs_realtime_subagent_devlog_sweep/系列整理而成聚焦 Codex 多智能体multi-agent/ 子代理subagent契约在 OpenCodex 中的落地spawn_agent可推荐模型的筛选规则、V1/V2 两套工具界面的差异、模型目录中multi_agent_version引脚pin的语义以及并发与生命周期相关的已知风险点。读完后你将能够解释 OpenCodex 为什么最多只向 Codex 推荐 5 个子代理模型、为什么某些模型在 V2 轮次下会被拒绝派生以及如何用ocx v2CLI 与config.toml控制这些行为。一、契约常量与默认配置研究笔记tip4462b9dee对应上游 PR #34887记录了本地 codex-rs 侧的核心常量与默认值OpenCodex 在源码中逐一对应实现。1.1MAX_SPAWN_AGENT_MODEL_OVERRIDES 5上游codex-rs/core/src/tools/handlers/multi_agents_common.rs定义了pub(crate) const MAX_SPAWN_AGENT_MODEL_OVERRIDES: usize 5;OpenCodex 在 subagent-roster.ts 中镜像了同一常量并在构造有效子代理名单时执行.slice(0, MAX_SPAWN_AGENT_MODEL_OVERRIDES)subagent-roster.ts保证与原生 Codex 的最多推荐 5 个模型行为一致。该常量经由 catalog.ts 的再导出进入目录同步链路catalog/sync.ts。1.2MultiAgentV2Config默认值来自上游codex-rs/core/src/config/mod.rs中MultiAgentV2Config的默认值配置项默认值说明hide_spawn_agent_metadatatrue隐藏 spawn 元数据expose_spawn_agent_model_overridestrue向模型暴露可用的模型 override 列表wait_agent_enabledtrue是否提供wait_agent工具max_concurrent_threads_per_session必填且 1每会话最大并发子代理线程数tip commit4462b9dee#34887新增的能力是把wait_agent与 sleep 工具独立地开启/关闭——在此之前二者是绑定的。OpenCodex 对其中max_concurrent_threads_per_session提供了完整的读写支持features.ts 中的readMultiAgentV2MaxThreads约 L353从config.toml解析[features.multi_agent_v2]表或内联表两种写法writeMultiAgentV2MaxThreads约 L411负责持久化并校验必须是 1 的整数。CLI 侧则由ocx v2 threads n驱动见 v2.ts 中pass an integer 1的报错分支。二、spawn 模型推荐Advertisement规则笔记概括的spawn_agent_models_description/find_spawn_agent_model_name三步筛选规则为过滤show_in_picker目录中visibility list的行过滤对当前multi_agent_version界面的后端支持按优先级取前 5 个take(MAX_SPAWN_AGENT_MODEL_OVERRIDES)。OpenCodex 中对应的实现是effectiveSubagentRostersubagent-roster.ts其流程比上游描述更细且对每个被剔除的模型给出可诊断的原因码configured 去重slugsEquivalent → 过滤 visibility list picker_hidden 之外的第一道闸 → surface v2 时过滤 V2 资格 isEligibleV2SubagentEntry → 按 spawn 优先级排序SPAWN_PRIORITY_FIELD 优先回退 priority再回退 index → slice(0, 5) → 输出 { candidates, advertised, excluded }excluded数组携带四种排除原因SubagentRosterExclusionReasonmissing_catalog_entry目录中不存在、picker_hidden存在但不可见、surface_incompatible界面不兼容如 V1 引脚行出现在 V2 轮次、outside_display_limit可见且兼容但排在第 5 名之后。这使得我配置了模型 X为什么没被推荐可以逐一定位而不是得到一个笼统的报错。关于排序优先级源码注释特别说明了 OpenCodex 的一个私有目录字段opencodex_spawn_prioritysubagent-roster.ts它记录未受modelPickerOrder影响时的自然优先级让 OpenCodex 的推荐窗口guidance window与纯展示用途的modelPickerOrder解耦——Codex 忽略未知目录字段因此该字段对原生 picker 完全不可见。2.1 reasoning effort 的严格校验笔记指出spawn 时指定的 reasoning effort 会对照所选模型的支持档位进行校验不支持的 effort 会硬失败hard-fail并返回该模型实际可用的 effort 列表。OpenCodex 的名单投影中同样携带每个候选模型的 effort 集合roster 中通过catalogEntryEfforts(entry)为每个 candidate 附efforts: string[]见 subagent-roster.ts供注入的 usage hint 文本向模型准确描述这个模型支持哪些 effort。2.2 资格的现行语义只有disabled被排除研究笔记基于4462b9dee当时的规则记录V2 下模型必须固定multi_agent_version Some(V2)才能作为后端支持。上游后续commit6d4d9442cSupport leaf models in multi-agent v2放宽了该规则。以当前仓库源码为准subagent-roster.ts 的isEligibleV2SubagentEntry注释给出了现行的三分语义目录值multi_agent_versionV2 资格含义v2合格且子代理可再委派递归协作工具上游对gpt-5.6-sol/gpt-5.6-terra的引脚v1合格的叶子LEAFworker上游对gpt-5.6-luna的引脚缺失 / null合格的叶子 worker路由或无引脚的原生模型由 feature flag 决定disabled唯一基于能力的排除项model_supports_multi_agent_backend只拒绝它注意这里的职责分裂该字段现在回答的是子代理能否拿到协作工具collab_tools_enabled而不是能否被委派。structure/subagents.md 的契约表也印证了这一点被推荐advertised的模型数有min(5, 可见合格行数)的上限而可被委派的目标资格没有数量上限仅 V2 下排除disabled。三、模型引脚upstream-models.json 与目录快照研究笔记在测量时确认了两处快照相等上游models-manager/models.json与 OpenCodex 的 upstream-models.json引脚情况为slugmulti_agent_versiongpt-5.6-solv2gpt-5.6-terrav2gpt-5.6-lunav1其余测得为 null 的模型由 feature flag 决定仓库内的 upstream-models.json 当前确实包含这些引脚值v2出现于 sol/terra 等行v1出现于 luna 行其余行为null。structure/subagents.md 进一步说明normalizeRoutedCatalogEntry会从路由routed条目中删除multi_agent_version——因为路由行克隆自原生模板时若继承 OpenAI 的引脚会给第三方提供商虚假的能力声明。3.1applyMultiAgentMode三种模式如何落章stampingapplyMultiAgentModeparsing.ts实现OcxConfig.multiAgentMode到目录字段的映射模式行为default清除陈旧的强制值对原生行重新套用上游快照引脚有 pin 的保留如 luna 的v1是真实能力声明必须保留无 pin 的原生行在multi_agent_v2feature 开启时落章v2关闭时删除该键v1强制所有行v1覆盖上游引脚v2强制所有行v2覆盖上游引脚luna 也包括在内一个关键的交互细节mode v2且keepNativeChatGptOnV1 true时parsing.tsChatGPT 原生行被单独落章回v1。其动机issue #92是原生父代理派生路由子代理时任务体是后端加密的NEW_TASK形态需要原生行保持 v1 语义才能打通。CLI 会检测keep-native-v1与multiAgentMode: v2的组合并给出冲突提示v2.ts 的 CONFLICT — global multi_agent_v2 overrides the native v1 catalog pin。四、Fork 与 override 规则笔记中记录的 fork 规则来源源码 上游 issue #20077 lead并反映在config/mod.rs默认 usage hint 文本中全历史 forkfull-history fork继承父代理的 model/effort并拒绝 overrideoverride 只允许出现在非全历史 fork即fork_turns: none或部分历史 fork。这条规则的运维含义是想让某个子代理跑在不同模型上不能走继承完整会话历史的 fork 路径必须显式声明fork_turns: none或部分。OpenCodex 注入给模型的 multi-agent guidance 文本中携带了fork_turns none的提示见 013 影响矩阵对 responses.ts multi_agent guidance 的引用并在注入侧保证roster 资格用的是 V2 兼容的前 5 名而不仅仅是目录中存在——这正是第二节筛选链与注入逻辑的衔接点。五、V1 / V2 工具界面与生命周期笔记的 Tool surface notesV1 工具族spawn / wait / send / close / resume在产品界面上使用multi_agent_v1命名V2 协作工具位于 collaboration 命名空间下不能在functions.exec内被调用默认共享 usage hint 中已说明commitb00c9b2e1在 features crate 中将 multi-agent v2 标记为 stable。OpenCodex 侧的运维入口是ocx v2子命令族cli/v2.ts、cli/help.tsocx v2 sub status | on | off | mode | keep-native-v1 | threads | mode-hintocx v2 status报告 feature 开关、multiAgentMode、agents.max_depth等状态ocx v2 on/off切换全局multi_agent_v2feature并触发目录重新落章catalog resyncocx v2 threads n写features.multi_agent_v2.max_concurrent_threads_per_sessionocx v2 keep-native-v1 on/off控制第三节描述的 v1 保留策略。ocx v2 status还会检查一个上游硬约束[agents] max_threads与multi_agent_v2互斥——codex-rs 在resolve_multi_agent_v2_config阶段会因agents.max_threads cannot be set when features.multi_agent_v2 is enabled而拒绝启动上游core/src/config/mod.rs。features.ts 的注释详细记录了该迁移背景并发配置的唯一合法位置是features.multi_agent_v2.max_concurrent_threads_per_sessionCLI 会在检测到[agents] max_threads时打印 WARNING 提示移除。六、已知稳定性与生命周期风险笔记明确标注这些是stability / lifecycle leads非产品保证即来自 issue 报告的线索而非官方承诺但都对应 OpenCodex 影响矩阵中的具体风险项槽位泄漏 / 需要显式 closeissue 报告显示子代理槽位存在泄漏代理需要显式close_agent释放。OpenCodex 侧的对策是把并发上限作为一等配置项管理max_concurrent_threads_per_session 1避免无界派生。加密 spawn 参数的后端不匹配issue #26753 leadNEW_TASK等加密任务体在不同后端间的形态不一致这正是keepNativeChatGptOnV1策略要解决的场景之一。V2 roster 不匹配把 lunav1 引脚放在 V2 轮次的推荐位会招致 spawn 拒绝——即使目录中列出了它。对应 structure/subagents.md 的契约与 upstream-models.json 的引脚同步要求引脚变化时需要重新同步快照。wait_agent可被独立关闭上游 #34887 之后罕见用户配置可能移除 wait 工具OpenCodex 的 guidance 文本若假设 wait 恒存在会有偏差影响矩阵将暴露wait_agent_enabled的读/状态查询列为后续项默认true时不阻塞。guidance 措辞漂移默认expose_spawn_agent_model_overrides true时任何参数总是隐藏的绝对化表述都是过时说法注入文本需要与暴露标志保持同步。七、小结契约的三层结构综合研究笔记与仓库实现OpenCodex 的多智能体契约可以归纳为三层能力层pinupstream-models.json 中每个模型行的multi_agent_versionv2 递归 / v1 叶子 / null 由 flag 决定 / disabled 排除由 applyMultiAgentMode 按default/v1/v2三种multiAgentMode落章且路由行一律剥离该字段推荐层rostereffectiveSubagentRoster 以可见性 → 界面兼容性 → 自然优先级 → 取前 5生成 candidates/advertised/excluded 三视图每个被排除模型带原因码运维层CLI/configocx v2子命令族与[features.multi_agent_v2]TOML 表管理 feature 开关、并发上限与 mode hint同时守卫agents.max_threads互斥、keep-native-v1冲突等上游硬约束。该契约的适用前提是当前仓库快照下的 codex-rs 上游行为若上游引脚或筛选规则再次变化如资格判定从 Some(V2)演进到仅排除 disabled需以 structure/subagents.md 的契约表与 devlog 对应研究单元为准重新核对。赞分享【免费下载链接】opencodexUniversal provider proxy for OpenAI Codex Claude Code — use any LLM (Claude, Gemini, Grok, DeepSeek, Ollama…) with Codex CLI, App, SDK, and Claude Code项目地址https://gitcode.com/gh_mirrors/ope/opencodex点击查看免费下载相关推荐opencodex 子代理注入努力值injection-effort选择器从配置契约到多智能体提示注入的完整实现解析opencodex 子代理注入努力值injection effort选择器从配置契约到多智能体提示注入的完整实现解析 opencodexUniversaOpenShell Protobuf API 规范详解实体引用、Workspace 作用域与 gRPC 契约演化规则OpenShell Protobuf API 规范详解实体引用、Workspace 作用域与 gRPC 契约演化规则 本文以仓库根目录 proto/READMApache Pulsar 内置连接器Built-in Connector完全指南Source 与 Sink 一览及实战部署Apache Pulsar 内置连接器Built in Connector完全指南Source 与 Sink 一览及实战部署 Apache Pulsar消息队列后端流处理上一篇10个KeePassXC高级技巧最大化您的密码管理效率 下一篇抖音无水印批量下载完整指南一条链接存下单个视频、整页主页与直播创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Lint静态分析工具完全指南:从原理到工程实践

Lint静态分析工具完全指南:从原理到工程实践

先直接给结论:Lint 并不是某款软件的名字,而是一类程序静态分析工具的统称。它不运行你的代码,也不启动服务,只靠“通读”源码就能把潜在的 Bug、坏味道、不符合团队约定的写法一条条挑出来,像做体检一样提前发现隐患。…

2026/9/25 2:54:27 阅读更多 →
TeamCenter 11.2本地部署避坑指南:OS/DB/JDK/FQDN四维校验

TeamCenter 11.2本地部署避坑指南:OS/DB/JDK/FQDN四维校验

简介:本资源是一份面向制造业IT实施工程师、PDM系统管理员及西门子TeamCenter初学者的实战型安装指南,聚焦TC 11.2.0版本在Windows Server 2012 R2环境下的全流程部署。手册覆盖从虚拟机(VMware 15.5.6)基础配置、JDK 7u80与Oracl…

2026/9/25 2:54:27 阅读更多 →
如何从零开发MicroPython扩展积木?旋转电位器(rotary-potentiometer)blocksdef.js实现全解

如何从零开发MicroPython扩展积木?旋转电位器(rotary-potentiometer)blocksdef.js实现全解

如何从零开发MicroPython扩展积木?旋转电位器(rotary-potentiometer)blocksdef.js实现全解 【免费下载链接】CupCode_EC11旋转编码器模块 此扩展适配于采用EC11的旋转编码器,不支持按键。 项目地址: https://gitcode.com/yuansh…

2026/9/25 2:54:27 阅读更多 →

最新新闻

robot-dog-swarm-control 使用教程:服务端与客户端如何分工,让多只机器狗听令而同步

robot-dog-swarm-control 使用教程:服务端与客户端如何分工,让多只机器狗听令而同步

robot-dog-swarm-control 使用教程:服务端与客户端如何分工,让多只机器狗听令而同步 【免费下载链接】CupCode_robot-dog-swarm-control模块 源师兄扩展项目: 机器狗群控 | 由源师兄组织创建 项目地址: https://gitcode.com/yuanshixiong/robot-dog-sw…

2026/9/25 3:29:49 阅读更多 →
PCI简易通讯控制器黄标修复全指南

PCI简易通讯控制器黄标修复全指南

1. 黄色感叹号不是故障,而是Windows在向你发求救信号“PCI简易通讯控制器”这个名称听起来很陌生,但只要你打开设备管理器,展开“系统设备”或“其他设备”,大概率会看到它——一个带着黄色感叹号的灰色图标,名字里带着…

2026/9/25 3:29:49 阅读更多 →
JobOps AI Provider配置终极对比:OpenAI、Claude还是Ollama本地部署免费方案

JobOps AI Provider配置终极对比:OpenAI、Claude还是Ollama本地部署免费方案

JobOps AI Provider配置终极对比:OpenAI、Claude还是Ollama本地部署免费方案 【免费下载链接】job-ops job-ops: DevOps principles applied to job hunting. A self-hosted pipeline to track, analyze, and assist your application process 项目地址: https://…

2026/9/25 3:29:49 阅读更多 →
为什么地址是0x13?深入解析ps2-controller背后PS2手柄I2C通信原理

为什么地址是0x13?深入解析ps2-controller背后PS2手柄I2C通信原理

为什么地址是0x13?深入解析ps2-controller背后PS2手柄I2C通信原理 【免费下载链接】ps2-controller 源师兄扩展项目: PS2 | 由源师兄组织创建 项目地址: https://gitcode.com/yuanshixiong/ps2-controller 在 ps2-controller 这款源师兄出品的 PS2 手柄 I2C …

2026/9/25 3:29:49 阅读更多 →
华为云与腾讯云怎么选?从云原生到信创的全场景决策指南

华为云与腾讯云怎么选?从云原生到信创的全场景决策指南

前阵子有个朋友找我做选型咨询,他们要做一个面向连锁餐饮企业的数据分析中台,既要卖软件又要做交付,甲方那边点名要“信创”。朋友打开两个网页问我:华为云和腾讯云到底差在哪?参数表我看得头晕,你直接告诉…

2026/9/25 3:29:49 阅读更多 →
Sliver 仓库中的 logtail 日志服务 API:Collection、Instance 与日志存取配置接口详解

Sliver 仓库中的 logtail 日志服务 API:Collection、Instance 与日志存取配置接口详解

网络安全 【免费下载链接】sliver Adversary Emulation Framework 项目地址: https://gitcode.com/gh_mirrors/sl/sliver 点击查看 免费下载 Sliver 仓库的 vendor/tailscale.com/logtail 目录内置了 Tailscale Logs Service 的完整客户端库与接口文档(…

2026/9/25 3:28:49 阅读更多 →

日新闻

AI元人文:从工具使用到思维重构的深度探索

AI元人文:从工具使用到思维重构的深度探索

最近半年我一直在琢磨一件事:AI元人文到底是什么?说白了,就是“用元视角重新审视人与AI的关系”,也在“探索AI如何反向逼着我们发现自己的思考边界”。标题里的“元探索”,在我看就是一层套一层的追问——当你用AI解决…

2026/9/25 0:00:41 阅读更多 →
Python+CNN车牌识别实战:从数据预处理到模型训练与部署

Python+CNN车牌识别实战:从数据预处理到模型训练与部署

简介:基于Python与卷积神经网络的车牌识别项目,面向计算机视觉初学者及智能交通开发者,目标是帮助用户掌握从数据预处理、模型构建到实际部署的完整流程。压缩包共25个文件,包含jpg/png图像样本、py训练脚本、md说明文档、dat数据…

2026/9/25 0:00:41 阅读更多 →
Vim基础操作全攻略:保存退出、模式切换与高频命令实战

Vim基础操作全攻略:保存退出、模式切换与高频命令实战

1. 项目概述1.1 核心需求解析今天聊聊Vim。写这个题目的原因是:几乎每个后端开发者、运维人员、数据工程师某天都会遇到一个场景——深夜加班,服务器登录界面只有黑底白字,编辑器只有vi/vim,你必须在五分钟内完成一次配置修改并保…

2026/9/25 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →