OmX 0.12.6 发布解析:Wiki 优先知识工作流与 Hook/通知链路加固
2026/9/9 23:51:24 网站建设 项目流程

OmX 0.12.6 发布解析:Wiki 优先知识工作流与 Hook/通知链路加固

【免费下载链接】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.12.6是 OmX(Oh My codeX)在v0.12.5..v0.12.6之间的补丁列车(patch train),共合入 32 个 PR,核心是让OMX wiki 成为一等公民的知识工作流、对通知与 Hook 投递链路做系统化加固,同时提升dirty worktree 启动与审批流的可靠性,并新增dev 合入后自动关闭关联 issue的自动化。读完本文,你将掌握 0.12.6 的完整变更清单、wiki 工作流的底层实现原理(存储 / 摄取 / 查询 / lint / MCP 与 CLI 双通道),以及通知去重、冷却等运维调优手段。

版本总览:一次 32 PR 的稳定性补丁列车

0.12.6延续了 OmX 的增量发布节奏,本版本聚焦四个方向:

  • Wiki 成为一等工作流:本地 markdown wiki 正式落地,具备 CLI/MCP 双通道、query/lint/refresh 辅助流程、存储与摄取原语,并接入 explore 流程——在大范围仓库搜索前先注入 wiki 上下文(PR #1481 中对应条目)。
  • 会话可见性与通知加固:reply-listener/session-status 状态、lifecycle 去重、idle 冷却、tmux 通知行为全部收紧,让实时会话状态更清晰、噪音更少(#1495、#1518、#1520、#1527、#1538)。
  • Hook 与团队交付可靠性:native-hook、notify-hook 派发、leader nudge、managed tmux、fallback watcher 以及启动/运行时路径再次获得稳定化,减少陈旧状态、重复 nudge 与 mailbox/投递竞态(#1487、#1491、#1493、#1496、#1514、#1525)。
  • 启动与运维安全:dirty worktree 启动在 caution 流程内先告警再复用,同时保留 caution 流程之外的硬失败语义;Claude issue 会话在明显仓库读取场景下不再被不必要审批打断(#1532、#1536)。
  • Dev 合入自动关闭 issue:合入dev的 PR 可自动关闭明确关联的本地 issue 并附带维护者评论,收紧 dev→issue 工作流(#1541)。

OMX Wiki:本地 markdown 知识库成为一等公民

0.12.6 最核心的改动是wiki 工作流从零散实验变成完整的知识管理闭环(PR #1481)。它是一套"持久化、自维护的 markdown 知识库":把项目与会话知识跨会话沉淀下来,随会话不断复利增长。

存储层:规范目录、锁与原子写

wiki 的存储层位于 src/wiki/storage.ts,职责是把知识页以 markdown + frontmatter 形式落到磁盘:

  • 目录约定:规范存储目录通过omxWikiDir(root)解析(代码内注释给出目录名omx_wiki/),同时兼容旧版.omx/wiki/只读 fallback——当规范目录不存在而旧目录存在时,isLegacyWikiFallbackActive()返回 true,查询/列表可读旧数据,但不会写入,避免只读 lint 在源码可见目录制造规范文件(src/wiki/lifecycle.ts 中有明确注释)。
  • 保留文件index.md(索引)、log.md(操作日志)、environment.md(环境页)为保留文件名,普通写入被拒绝(RESERVED_FILES集合),防止知识页覆盖系统文件。
  • 原子写入atomicWriteFileSync先写临时文件再renameSync,避免写入中断留下半截文件。
  • 目录锁withWikiLock通过mkdirSync(lockPath, { recursive: false })实现互斥,默认超时 5s、重试间隔 50ms,确保并发会话不会互相踩踏。

页面模型:frontmatter 驱动分类与置信度

页面类型定义见 src/wiki/types.ts。每页包含 frontmatter(标题、标签、创建/更新时间、来源、[[wiki-link]]关联、分类、置信度、schema 版本)与正文。分类(WikiCategory)共 8 种:

分类用途示例
architecture架构说明
decision决策记录
pattern复用模式
debugging调试结论
environment环境事实
session-log会话日志
reference参考资料
convention项目约定

置信度(confidence)分为high/medium/low,是 lint 与合并策略的重要输入。

默认配置DEFAULT_WIKI_CONFIG定义在 src/wiki/types.ts,也可在.omx-config.json的项目根或~/.codex/.omx-config.json中按wiki键覆盖(src/wiki/lifecycle.ts 负责加载):

{ "wiki": { "enabled": true, "autoCapture": true, "maxContextLines": 30, "staleDays": 30, "maxPageSize": 10240, "feedProjectMemoryOnStart": false } }

各配置项含义:enabled开关 wiki;autoCapture会话结束自动写入 session-log 页;maxContextLines控制会话启动时注入索引的行数上限;staleDays定义"陈旧页"阈值;maxPageSize是页面大小上限(字节);feedProjectMemoryOnStart为 true 时,启动阶段会把项目记忆文件同步进受管environment.md页。

摄取原语:创建与合并(追加策略)

ingestKnowledge(src/wiki/ingest.ts)把知识写入 wiki,单次摄取可新建页或并入已有页,采用追加策略,绝不覆盖已有内容

  • 新建:标题经titleToSlug转 slug 文件名(NFC 归一化、非字母数字折叠为-、截断 64 字符;空 slug 退化为哈希名),正文以# 标题开头。
  • 合并:标签取并集、来源去重追加、[[wiki-link]]重新提取合并、时间戳更新、置信度取两者中更高者;正文以## Update (ISO时间)区块追加。
  • 副作用:每次摄取后自动重建index.md索引并追加log.md日志条目。

[[双括号]]语法是页间关联的载体,extractWikiLinks会将其统一转为 slug 存入 frontmatter 的links字段,供 lint 做断链检测、供查询做入链统计。

查询原语:关键词 + 标签检索(无向量嵌入)

queryWiki(src/wiki/query.ts)是纯关键词搜索,硬性约束是不使用向量嵌入——LLM 负责从返回的匹配片段中综合答案。评分权重清晰:

  • 标签命中:每个匹配标签 +3,查询词命中页标签 +2
  • 标题命中:完整命中 +5,分词命中每个 +2
  • 正文命中:每个唯一分词 +1,并截取首个命中点前后约 120 字符的片段

查询支持tags/category过滤与limit限制(默认 20,MCP 侧上限 50),并按分数降序返回。分词器tokenize值得一提:拉丁/数字按空白切分,中日韩(Han/Hangul/Kana)采用二元组滑动窗口并辅以单字符,保证 CJK 查询可用;其余文字(西里尔、阿拉伯、泰文等)走空白切分兜底(src/wiki/query.ts,配套测试见 src/wiki/tests/cjk-tokenize.test.ts)。

健康检查:lint 六大类问题

lintWiki(src/wiki/lint.ts)对知识库做体检,产出error/warning/info三级 issue:

  1. orphan(孤儿页):无其他页入链,info级;
  2. stale(陈旧页):超过staleDays未更新,warning级并报告天数;
  3. broken-ref(断链)links指向不存在的页,error级;
  4. low-confidence(低置信度)confidence: low的页,info级提示核实或删除;
  5. oversized(超大页):内容超过maxPageSize字节,warning级建议拆分;
  6. structural-contradiction(结构矛盾):同 slug 前缀组内出现 high/low 置信度冲突(warning),或同一标签跨不同分类(info);语义级矛盾检测明确标注为 v2 的 LLM 能力。

lint 结果会汇总成统计(总数、孤儿数、陈旧数、断链数、低置信度数、超大页数、矛盾数),默认写入log.md

生命周期集成:启动注入、会话日志、项目记忆

src/wiki/lifecycle.ts 把 wiki 织入会话生命周期:

  • onSessionStart:会话启动时若 wiki 存在且enabled,把索引前maxContextLines行注入上下文,并提示可用wiki_query/wiki_list/wiki_read;legacy fallback 生效时输出只读提示。feedProjectMemoryOnStart为 true 时同步项目记忆到environment.md
  • onSessionEndautoCapture开启时,3 秒超时窗口内尽力写入session-log-<日期>-<会话ID后8位>.md会话日志页,提示把重要发现用wiki_ingest提升为策展页。
  • onPreCompact / onPostCompact:压缩前提供页面数、分类与最后更新时间摘要;压缩后 nudge 提示把压缩产物中的决策、架构笔记、调试发现等沉淀进omx_wiki/

MCP 与 CLI 双通道:wiki 工具的调用面

wiki 既可通过 MCP 服务器调用,也可通过 CLI 调用,二者对齐同一底层实现:

  • MCP 服务器:src/mcp/wiki-server.ts 注册omx-wiki服务器,暴露wiki_ingestwiki_querywiki_lintwiki_add(快速新增,拒绝覆盖,合并请用 ingest)、wiki_listwiki_readwiki_deletewiki_refresh等工具,其中wiki_ingest必填title/content/tags/categorycontent上限 50000 字符、标签最多 20 个。
  • CLI 通道:mcp-parity 表面在 src/cli/mcp-parity.ts 注册了wiki命令组,把上述工具映射为wiki_ingestwiki_querywiki_lintwiki_addwiki_listwiki_readwiki_deletewiki_refresh子命令(生命周期提示中给出的实际用法示例为omx wiki wiki_ingest --input <json> --json)。

这样,无论通过 Codex 的 MCP 能力还是omxCLI,都能以同一套数据模型操作 wiki。相关的端到端与契约测试见 src/mcp/tests/wiki-server.test.ts 和 src/cli/tests/mcp-parity.test.ts。

会话可见性与通知加固

0.12.6 对通知链路的重点是"更清晰、更安静"——状态更准确,噪音被系统化抑制:

  • reply-listener / session-status 状态收紧:live 会话状态读取更可靠,配合 hook cwd 别名修复(#1495),managed-session 逻辑与归属跟踪不再因 cwd 不一致而错乱。
  • Lifecycle 广播去重:src/notifications/lifecycle-dedupe.ts 对session-start/session-stop/session-end三类事件做 5 秒窗口内去重,指纹由事件、reason、activeMode、question、incompleteTasks 归一化生成;状态按会话 ID 分目录落盘(lifecycle-notif-state.json),非法会话 ID 退化为全局状态文件。对应修复覆盖 #1518、#1520、#1526、#1529。
  • Idle 冷却:src/notifications/idle-cooldown.ts 防止 session-idle 通知刷屏。冷却时长解析顺序:OMX_IDLE_COOLDOWN_SECONDS环境变量 → 配置notifications.idleCooldownSeconds(位于~/.codex/.omx-config.json)→ 默认 60 秒;设为 0 完全关闭限流。状态落盘于.omx/state/idle-notif-cooldown.json(有会话 ID 时按会话隔离)。
  • Follow-up 关键词告警与元数据误报抑制:来自元数据衍生的误报被过滤,post-stop 后的关键词重放被抑制(#1526、#1529)。
  • 陈旧死会话 HUD 残留清理:在 follow-up 工具读取前清除死会话的 HUD 残留(#1539),配套问题 #1538。

Hook 与团队交付可靠性

本版本对 hook 派发与团队交付做了又一轮稳定化:

  • 数组型 assistant prompt 正确触发 needs-input 监听(#1487/#1486):此前数组形态的提示不会进入"等待输入"状态,现在得到修复。
  • 本地 worker 运行时启动不再被陈旧排队草稿或误导性滚动缓冲卡住(#1491/#1493),解决启动即 stall 的问题。
  • Ralph steer/handoff 与 release-readiness finalize 逻辑保持作用域内、跨会话不粘滞(#1496/#1514),避免状态泄漏到后续会话。
  • Hook cwd 别名不匹配不再破坏 managed-session 逻辑或归属跟踪(#1495)。
  • malformed native-hook stdin JSON 防御式处理(#1504/#1503):畸形输入不再级联为运行时不稳定。

启动与运维安全:dirty worktree 与审批流

  • Dirty worktree caution 流程(#1535/#1532):对于"可复用"的 dirty worktree,启动前先告警再复用;caution 路径之外仍保留硬失败语义——告警不等于放行一切。
  • 工作树依赖引导复用父仓库依赖(#1510/#1507):safe-launch worktree 不再强制全新安装,而是复用父仓库依赖,显著加快启动。
  • Claude issue 会话可在明显仓库读取场景继续推进(#1537/#1536):不再因不必要的审批提示而停顿,审批流更贴合实际操作。
  • tmux 团队 worker 保留代理环境访问(#1523/#1522):tmux 会话中代理配置得以透传。
  • 用户自撰 AGENTS 内容在 setup 刷新后幸存(#1524/#1521):刷新不会覆盖用户对 AGENTS 的定制。

MCP / app-server 表面修复

  • Superseded MCP stdio 兄弟进程不再堆积(#1517/#1516):在存活的 Codex app-server 父进程下,被取代的 stdio 兄弟进程得到清理,避免进程泄漏。
  • state 与 wiki 的 MCP parity 表面通过专用 CLI 路由与 bootstrap 注册开放(#1481),wiki 能力与 state 能力获得同等的一等调用入口。

Dev 合入后自动关闭 issue 工作流

新增的 dev merge issue auto-close(#1541/#1540):合入dev分支的 PR,可在合入后自动关闭明确关联的本地 issue,并附带维护者评论,从而把"dev 合入 → issue 收尾"的工作流自动化,减少人工追踪成本。

元数据同步与文档

  • 版本元数据同步:Node/Cargo 包元数据、lockfile、CHANGELOG、release body 与 release notes 全部对齐0.12.6
  • README 与本地化文档:开始记录规范的OMX + Codex 混合 skill 根以及新的 wiki 工作流入口(#1534/#1531)。

验证证据

0.12.6 合入前通过了完整验证链(详见 docs/release-notes-0.12.6.md 的 Verification evidence 一节):

  • npm run build
  • npm run lint
  • npm test
  • npm run test:recent-bug-regressions
  • node --test dist/cli/__tests__/version-sync-contract.test.js
  • npm run smoke:packed-install

小结

0.12.6 是 OmX 在知识沉淀投递可靠性两个方向上的里程碑:wiki 以存储、摄取、查询、lint、生命周期五层原语 + MCP/CLI 双通道成为完整工作流;通知链路通过 lifecycle 去重、idle 冷却、指纹与状态文件落盘显著降噪;dirty worktree 与审批流在"安全"与"流畅"之间取得新平衡;dev→issue 的合入闭环开始自动化。对使用 OmX 的团队而言,本版本可直接受益的落地动作包括:开启wiki.autoCapture沉淀会话日志、用wiki_lint定期体检知识库、按需调低OMX_IDLE_COOLDOWN_SECONDS控制通知频率,以及把 wiki 查询接入 explore 之前的知识注入。

【免费下载链接】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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询