资讯动态

OmX 0.17.3 热修复深度解析:恢复 Codex CLI-first/Plugin 配置下的 Team 默认启动与 Worker MCP 隔离

发布时间:2026/9/10 17:59:49 来源:尧图企业网站定制
OmX 0.17.3 热修复深度解析恢复 Codex CLI-first/Plugin 配置下的 Team 默认启动与 Worker MCP 隔离【免费下载链接】oh-my-codexOmX - Oh My codeX: Your codex is not alone. Add hooks, agent teams, HUDs, and so much more.项目地址: https://gitcode.com/GitHub_Trending/oh/oh-my-codex导读本文围绕 OmXOh My codeX0.17.3 热修复版本展开核心主题是恢复 Codex CLI-first/plugin 配置下omx team的默认启动能力同时完整保留 0.17.1 引入的 worker MCP 隔离机制。读完本文你将掌握OMX_TEAM_WORKER_MCP_COMPAT逃生舱口的正确用法、Team worker 启动时 MCP 禁用覆盖override的底层判定逻辑以及如何用仓库内置测试与冒烟命令验证这一兼容性修复。背景0.17.1 的 worker MCP 隔离与 0.17.3 的回归0.17.1 引入了一项安全设计OmX Team 在拉起 Codex worker 时默认禁用 OMX 第一方 MCP 服务器避免 worker 与 leader 竞争同一组 MCP 通道。这套worker MCP 隔离通过向 Codex worker 的启动参数中追加mcp_servers.name.enabledfalse覆盖实现。然而该实现在 0.17.2 之后的 Codex 版本上暴露了一个兼容性问题当用户使用CLI-first 或 plugin 配置CODEX_HOME/config.toml中并未声明任何 OMX 第一方 MCP 服务器表时Team 启动逻辑仍会为 worker 合成这些 MCP 服务器表导致当前 Codex 在启动阶段直接报invalid transport错误——worker 尚未就绪Team 就已失败。这正是 0.17.3 作为0.17.2之后的 hotfix 要解决的核心问题不凭空捏造 Codex 配置中不存在的 MCP 服务器表同时保留对传统配置legacy config中已显式声明这些服务器场景的默认禁用行为。根因为不存在的服务器表注入 enabledfalse从源码看0.17.3 之前的问题出在禁用覆盖的生成条件上。在 src/team/tmux-session.ts 中Team 维护了一份需要默认禁用的第一方 MCP 服务器清单const TEAM_WORKER_DISABLED_OMX_MCP_SERVERS [ omx_state, omx_memory, omx_code_intel, omx_trace, omx_wiki, omx_hermes, ] as const;对应 src/team/tmux-session.ts如果这段逻辑无条件遍历清单并为每个服务器追加mcp_servers.name.enabledfalse那么当config.toml中压根没有这些表时Codex 就会看到一张被引用的服务器表不存在的配置从而以invalid transport拒绝启动。0.17.3 的修复要点正是把是否追加从总是追加改为仅当用户配置中已声明该服务器时才追加。修复实现声明式探测 有条件的覆盖注入0.17.3 的修复落在 src/team/tmux-session.ts 的四个函数上形成了完整的判定链路兼容开关判定shouldDisableOmxMcpForTeamWorkersrc/team/tmux-session.ts读取OMX_TEAM_WORKER_MCP_COMPAT环境变量只有取值为1、true、on、compat时才抑制禁用逻辑其余任何取值含未设置都保持默认禁用行为。配置路径解析resolveCodexConfigPathsrc/team/tmux-session.ts优先使用CODEX_HOME环境变量未设置时回退到~/.codex最终定位config.toml。表存在性探测codexConfigDeclaresMcpServersrc/team/tmux-session.ts用正则^\s*\[\s*mcp_servers\s*\.\s*(?:name|name|name)\s*\]\s*$逐行匹配config.toml同时兼容带引号与不带引号的 TOML 表名写法文件缺失或读取失败一律视为未声明。覆盖注入appendTeamWorkerMcpDisableOverridessrc/team/tmux-session.ts遍历六服务器清单仅对已在 config.toml 声明且启动参数中尚未存在同名 override的服务器在--分隔符之前插入-c mcp_servers.name.enabledfalse。值得注意的是这一覆盖只作用于Codex worker在buildAttachedTmuxWorkerStartupPlansrc/team/tmux-session.ts中仅当processSpec.workerCli codex时才调用appendTeamWorkerMcpDisableOverridesClaude/Gemini worker 不参与此逻辑。六服务器隔离清单与 legacy 配置的默认行为修复后存在两种明确区分的场景CLI-first/plugin 配置config.toml不含任何第一方 OMX MCP 表Team worker 不再收到任何mcp_servers.omx.enabledfalse覆盖worker 可正常就绪omx team恢复默认启动。legacy 配置config.toml仍显式声明omx_state、omx_memory、omx_code_intel、omx_trace、omx_wiki或omx_hermesTeam 依旧默认对 Codex worker 禁用这些服务器0.17.1 的隔离语义保持不变。这套行为被 src/team/tests/tmux-session.test.ts 的三组测试完整锁定does not synthesize absent first-party OMX MCP server tables for Codex team workerssrc/team/tests/tmux-session.test.ts构造只含mcp_servers.gitnexus的config.toml断言生成的 worker 启动命令中六个服务器均不出现enabledfalse。disables configured first-party OMX MCP compatibility servers for Codex team workers by defaultsrc/team/tests/tmux-session.test.ts在 config.toml 显式声明六个服务器后断言每个服务器都出现enabledfalse。recognizes every MCP config spelling before -- and inserts generated overrides before positional suffixessrc/team/tests/tmux-session.test.ts验证-c、--config、-c、--config四种拼写均被识别且用户显式传入的enabledtrue不会被覆盖。OMX_TEAM_WORKER_MCP_COMPAT显式逃生舱口对于确实需要在 Team worker 中启用第一方 OMX MCP 服务器的高级用户0.17.3 保留并重申了显式 opt-in 变量export OMX_TEAM_WORKER_MCP_COMPAT1 # 或 true / on / compat只要该变量取值为上述四种之一shouldDisableOmxMcpForTeamWorker即返回假Team 完全不再追加任何 worker MCP 禁用覆盖参见 src/team/tmux-session.ts 与测试 src/team/tests/tmux-session.test.ts。注意这只代表不强制禁用不代表 OmX 会替你声明这些服务器——config.toml 中不存在的表依旧不会被创建。顺带搭车AGENTS 契约覆盖保护与元数据对齐0.17.3 的对比区间还带上了两条dev分支上已就绪的加固提交AGENTS 契约覆盖保护commit906b37ec当工作区缺少完整 OMX 契约标记时不再静默覆盖已有AGENTS.md内容。相关实现可参见 src/cli/agents-init.tsOMX 管理的文件带有!-- OMX:AGENTS-INIT:MANAGED --标记src/cli/agents-init.ts对未管理的AGENTS.md默认跳过只有显式传入--force才会在备份后接管src/cli/agents-init.ts。插件元数据对齐与 question 返回注入测试隔离commit318bd2e6对齐插件元数据并隔离 question 返回注入相关测试避免测试间状态串扰。验证证据与复现步骤0.17.3 的发布验证覆盖构建、单测、静态检查与两条真实 Team 冒烟启动# 1. 构建 npm run build # 2. worker MCP 隔离核心单测 node --test dist/team/__tests__/tmux-session.test.js # 3. 未使用代码检查 npm run check:no-unused # 4. 默认启动冒烟无 compat 变量验证修复生效 OMX_TEAM_READY_TIMEOUT_MS12000 OMX_TEAM_STARTUP_EVIDENCE_TIMEOUT_MS1500 ./dist/cli/omx.js team 1:explore default smoke launch fixed # 5. 兼容模式冒烟显式 opt-in 仍需正常工作 OMX_TEAM_WORKER_MCP_COMPAT1 OMX_TEAM_READY_TIMEOUT_MS12000 OMX_TEAM_STARTUP_EVIDENCE_TIMEOUT_MS1500 ./dist/cli/omx.js team 1:explore compat smoke launch still fixed其中OMX_TEAM_READY_TIMEOUT_MS与OMX_TEAM_STARTUP_EVIDENCE_TIMEOUT_MS控制 Team 就绪判定与启动证据收集的超时窗口这两条冒烟命令在 CHANGELOG.md 中有对应记录。关于就绪语义的重要提示0.17.3 并未放宽 Team 的就绪语义——若 worker 启动失败Team 仍会如实报告失败而不会伪装成已启动。修复只消除因合成 MCP 表导致的启动前失败不掩盖任何真实的 worker 故障。升级与排查建议升级后无需改动配置即可恢复omx team默认启动若你的config.toml显式声明了六个第一方服务器worker 默认仍被隔离这是预期行为。若升级后 worker 依旧报invalid transport请检查CODEX_HOME指向的config.toml中是否存在残缺的[mcp_servers.*]表例如只写了表名但没有command0.17.3 只负责不为不存在的表注入覆盖不负责修复用户配置本身的语法错误。需要 worker 访问第一方 MCP 服务器时按上文设置OMX_TEAM_WORKER_MCP_COMPAT后重启 Team。总结0.17.3 是一次小而精准的兼容性热修复它把worker MCP 隔离从无条件合成覆盖收敛为仅对已声明配置生效的有条件覆盖在保住 0.17.1 安全语义的同时让 CLI-first/plugin 形态的 Codex 配置重新获得默认的omx team启动能力并以四组测试与两条真实冒烟命令锁定了这一行为边界。【免费下载链接】oh-my-codexOmX - Oh My codeX: Your codex is not alone. Add hooks, agent teams, HUDs, and so much more.项目地址: https://gitcode.com/GitHub_Trending/oh/oh-my-codex创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价