
oh-my-codex 0.18.17 补丁发布深度解析Ultragoal 空目标恢复、MSYS 团队启动路径与运行时可靠性加固【免费下载链接】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导读0.18.17是 oh-my-codex 在0.18.16之后的可靠性列车reliability train补丁版本聚焦修复一批直接影响日常使用的运行时问题Ultragoal 在 Codexget_goal返回空值时陷入死循环的恢复机制、MSYS 环境下 Team worker 启动脚本路径错误、Ralplan 终端会话状态持久化、planning-gate 状态写入守卫收紧、Windows psmux 问答渲染器修复以及 profile mention 回退与 stop-keyword 路径误报的修复。本文以 docs/release-notes-0.18.17.md 为骨架结合仓库源码与 QA 文档逐一拆解每个修复点的技术原理、涉及文件与可复现验证方式帮助读者理解这轮补丁为什么值得升级。发布背景与范围根据 docs/qa/release-readiness-0.18.17.md 的记录本版本紧接v0.18.16候选分支为dev发布头提交为a0c834522fix: recover ultragoal null get_goal loops (#3020)。整个比较区间内的提交清单git log --oneline v0.18.16..origin/dev包括a0c834522— 修复 ultragoal nullget_goal循环#3020f0d3d6167— 修复 MSYS team worker 启动脚本路径#301710aa1b0d8— 修复 ralplan 终端会话状态#3015437030a15— 收紧 planning gate 状态写入守卫#30048131a2579— 修复 Windows psmux 问答渲染器#3014f8f847da0/4ce08fcc4— 依赖升级biome 2.5.1、types/node 26.0.192e2152ab— 修复 profile Discord mention 环境变量回退#3009b0ca6d97b— 修复 stop keyword 路径误报#300840db45c75— 修复 ralplan gate fail#3006以及 #2979 到 #3003 之间的 planning/exact-role/runtime 守卫系列提交注意发布时处于 blocked/draft 状态的 #3018 与 #3010 未纳入本候选版本。兼容性方面官方声明没有破坏性的 CLI、包或插件布局变更因此从0.18.16升级属于低风险的补丁升级。Ultragoal 空get_goal恢复终止死循环的关键修复问题本质get_goal返回空值导致的重复完成循环Ultragoal 是 oh-my-codex 的持久化目标执行系统它在.omx/ultragoal/下维护brief.md、goals.json与ledger.jsonl三个核心工件见 src/ultragoal/artifacts.ts。其完成路径依赖 Codex 原生的get_goal/create_goal/update_goal快照来执行严格完成对账strict completion reconciliation。死循环的场景是当get_goal返回null或 Codex 目标数据库/模式出错例如no such table: thread_goals时模型可能反复尝试--status complete完成检查点但每次都因拿不到有效快照而被拒从而陷入完成→被拒→再完成的无限循环。修复策略将不可用引导为可审计的非终态阻塞源码在 src/ultragoal/artifacts.ts 的checkpointUltragoal阻塞分支中对parseCodexGoalSnapshot返回的unavailableReason db_schema_context_error情况做了专门处理不再抛错拒绝而是记录一个goal_blocked事件failureReason写入证据并在 ledger 中写入消息Codex get_goal was unavailable due to a DB/schema/context error; strict completion reconciliation is deferred until get_goal works.同时构建给模型的两条恢复指引被明确写入代码src/ultragoal/artifacts.ts不同已完成遗留目标若get_goal返回的是另一个已完成的遗留/线程目标则不要在本线程重复--status complete而是用omx ultragoal checkpoint --goal-id id --status blocked --evidence ... --codex-goal-json get_goal JSON 或路径记录非终态阻塞再切换到无冲突目标上下文中创建目标。get_goal本身不可用Codex DB/schema/context 错误同样不要重复 complete 或从 shell 状态标记完成而是记录可审计的非终态阻塞待get_goal恢复可用的上下文后再继续。这两条指引同时出现在 per-story 与 aggregate 两种模式的指令模板中src/ultragoal/artifacts.ts 与 src/ultragoal/artifacts.ts并配套了专门测试guides unavailable get_goal DB/schema errors to auditable blocked recovery instead of completion与records unavailable get_goal DB/schema errors as non-terminal blocked audit checkpoints见 src/ultragoal/tests/artifacts.test.ts。配套保障写权限守卫与聚合目标迁移本次补丁还依赖 Ultragoal 已有的两套防竞态机制非本次新增但构成该修复生效的前提写生命周期权威检查writable lifecycle authorityassertUltragoalWritableLifecycleAuthority在进入变更锁前、以及获取锁后各执行一次点对点检查若等待锁期间 session 指针发生漂移则拒绝变更src/ultragoal/artifacts.ts。聚合目标迁移aggregate objective migrationmigrateAggregateObjectiveUnderLock将旧的枚举式聚合 Codex 目标迁移为稳定的指针式目标并把旧目标放入codexObjectiveAliases以便对账src/ultragoal/artifacts.ts这保证了get_goal快照与期望目标可比对。MSYS Team worker 启动路径修复问题MSYS/Git-Bash 环境下的 worker 启动脚本路径失效Team 模式的 worker 在启动时需要从多个候选路径加载 worker skill并组合 AGENTS.md 覆盖层。在 Windows 的 MSYS/Git-Bash 环境下路径分隔符与脚本路径拼接方式会导致 worker 无法找到 skill 或初始化指令文件进而 ACK 握手失败。修复要点路径组合与 Git 值读取的跨平台加固核心实现位于 src/team/worker-bootstrap.tsworker skill 候选路径按$CODEX_HOME/skills/worker/SKILL.md→leader_cwd/.codex/skills/worker/SKILL.md→leader_cwd/skills/worker/SKILL.mdrepo 回退的顺序加载src/team/worker-bootstrap.ts。Git 内部路径解析tryReadGitValue使用git rev-parse --git-path获取info/exclude与备份文件路径并显式传入windowsHide: true以避免 Windows 控制台窗口闪烁src/team/worker-bootstrap.ts。AGENTS.md 写入与恢复writeWorkerWorktreeRootAgentsFile对跟踪文件设置skip-worktree未跟踪文件写入info/exclude并把原始内容备份到root-agents-backup.json运行结束时removeWorkerWorktreeRootAgentsFile还原src/team/worker-bootstrap.ts。相关回归测试集中在 src/team/tests/worker-bootstrap.test.tsQA 阶段亦通过dist/cli/__tests__/team.test.js等定向测试验证616 个测试全部通过。Ralplan 终端会话状态加固Ralplan 是 Planner → Architect → Critic 的共识规划模式。本轮补丁#3015、#3006修复了终端会话状态在多轮咨询切换、取消场景下的错误持久化。源码层面src/ralplan/runtime.ts 中整个 run 只固定一次可写会话options.sessionId ?? (await resolveWritableStateScope(cwd)).sessionId后续所有状态读写都使用该固定的runtimeSessionId避免会话指针漂移导致状态写错位置src/ralplan/runtime.ts。取消咨询使用terminalizeCancelledAdvisory将已取消的 advisory 状态显式终结src/ralplan/runtime.ts确保取消不会留下悬挂的 in-progress 状态。Planning-gate 状态写入守卫收紧规划闸门planning gate用于控制批准的执行生命周期与启动提示launch hint的传递。本轮将状态写入守卫收紧#3004/#3003 train确保只有满足前置条件的状态才被允许写入 ralph/team 规划状态文件。相关状态矩阵在 src/planning/tests/approved-execution-lifecycle-matrix.test.ts 与 src/planning/tests/approved-launch-hint-lineage-matrix.test.ts 中被穷举验证——这些测试枚举了hidden / ready / ambiguous等状态并逐项断言写入是否被允许从测试结构可以推断收紧方向是非法/未授权状态跳转一律拒绝写入避免下游依赖不存在的启动提示。Windows psmux 问答渲染器修复问题Windows psmux 环境下问答 UI 无法弹出问答question模块负责向用户弹出交互式问题。在原生 Windows psmux一个类 tmux 的 pane 管理器会话中旧的渲染策略可能回退到 detached Windows console导致问答 UI 不可见或命令注入失败。修复要点识别 psmux 会话并打开可见 shell panesrc/question/renderer.ts 中策略枚举新增windows-psmux-shell-panesrc/question/renderer.ts。判定逻辑tmux.includes(psmux) || isPaneId(tmuxPane)并结合hasNativeWindowsPsmuxBridge检测 psmux 可执行文件如C:/Program Files/psmux/psmux.exe命中即选择该策略src/question/renderer.ts。创建 pane 后校验其存活paneId缺失或 pane 启动后立即消失都会抛出明确错误src/question/renderer.ts并把问答 UI 命令以字面形式注入新开的 shell panesrc/question/renderer.ts。配套测试在 src/question/tests/renderer.test.ts验证 psmux 会话选择windows-psmux-shell-pane策略、打开可见 shell pane 并注入命令同时保持非 psmux 返回桥走 detached Windows console 路径。Profile mention 回退与 stop-keyword 误报修复Profile Discord mention 环境变量回退#3009通知模块的 Discord 配置支持OMX_DISCORD_MENTION等环境变量见 src/notifications/tests/config.test.ts。修复前profile 中的 mention 在环境变量未设置时可能解析失败或覆盖显式配置。修复后环境变量OMX_DISCORD_MENTION仅在没有显式 profile/事件 mention时作为回退应用测试applies env Discord mention without overriding explicit profile or event mentions见 src/notifications/tests/profiles.test.ts。stop-keyword 路径误报#3008关键字检测模块在 src/hooks/keyword-registry.ts 中把stop、abort、$cancel注册为cancelskill 的触发词。误报场景是用户在普通对话或文件名中恰好提到这些词如stop the server被错误路由到取消流程。修复方向#3008是对触发路径的上下文判定收紧回归测试见 src/hooks/tests/keyword-detector.test.ts测试覆盖stop关键字在多种上下文中的命中判定。版本同步与发布验证发布前执行了完整的本地验证链见 docs/qa/release-readiness-0.18.17.md 的 Local validation 一节node src/scripts/check-version-sync.ts --tag v0.18.17确认package0.18.17 workspace0.18.17 tagv0.18.17三者同步。npm run build、npm run verify:native-agents22 个可安装原生 agent、37 个 setup prompt 资产、npm run sync:plugin29 个 canonical skill 目录同步、npm run verify:plugin-bundle全部通过。node dist/scripts/generate-catalog-docs.js --checkcatalog 检查通过。定向跨平台回归codex-native-hook.test.js、ralplan/runtime.test.js、cli/team.test.js、ralph-goal-mode-contract.test.js、ultragoal/artifacts.test.js共 616 个测试通过。npm pack --dry-run产物oh-my-codex-0.18.17.tgz包大小 4.2 MB解包后 26.9 MB共 3133 个文件。版本元数据同步范围覆盖根package.json、package-lock.json、根Cargo.toml/Cargo.lock工作区包版本以及plugins/oh-my-codex/.codex-plugin/plugin.json。升级建议与适用前提若你正在使用 Ultragoal 且遇到过get_goal返回空/异常导致的完成循环本版本的阻塞恢复路径是直接受益点若你在 Windows MSYS/Git-Bash 下运行 Team 模式建议立即升级以修复 worker 启动路径若你在 Windows 上使用 psmux 且问答 UI 无法弹出本版本已修复渲染策略选择本版本无破坏性 CLI/包/插件布局变更0.18.16用户可平滑升级。需要进一步了解本轮补丁的完整清单与验证细节可阅读 docs/qa/release-readiness-0.18.17.md 与 CHANGELOG.mdUltragoal 的完整状态机与工件格式可参考 docs/STATE_MODEL.md。【免费下载链接】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),仅供参考