oh-my-openagent 文档漂移修正实战:F2 审计修复清单与模型匹配链的源码级校准
【免费下载链接】oh-my-openagentOmO: Just type "mass ulw" keyword with your prompt. Now you are the master of graph engineering.项目地址: https://gitcode.com/gh_mirrors/oh/oh-my-openagent
在 oh-my-openagent 仓库中,docs文档与packages源码之间的一致性由一套名为docs-drift-audit的定期审计机制保障:审计发现差异后,会为每个修复者(fixer)生成一份带精确行号与源码引用地址的修复指令。本文围绕.omo/evidence/20260809-docs-drift-audit/fix-instructions-f2.md展开,逐条解读 F2 修复者负责的 5 份文档、30 项漂移修正:从模型-代理匹配链的逐 rung 校准、已知问题状态的历史化归档,到 Codex 遥测安装命令、lazycodex-ainpm 发布门槛与整体发布流程的文档同步。读完本文,你将掌握如何以源码为锚点执行文档漂移审计、如何读懂内置代理与类别的模型回退链,以及一份专业修复指令所要求的全局规则与交付物形态。
修复任务的边界:worktree、拥有文件与全局规则
fix-instructions-f2.md首先用四条约束划定了修复者的工作边界,这是整个审计流程的纪律基础:
| 约束 | 内容 |
|---|---|
| 工作目录 | 只在指定的 worktree 中编辑,禁止触碰其他分支 |
| 拥有文件 | 仅docs/guide/agent-model-matching.md、docs/reference/known-issues.md、docs/reference/codex-telemetry.md、docs/reference/lazycodex-npm-reservation.md、docs/reference/release-process.md五份文档 |
| 全局规则 | 每次编辑前重新核对引用(re-verify each citation);发现不匹配则跳过并记入报告;最小编辑;仅 ASCII;禁用 em dash;无法验证的条目一律不动 |
| 交付物 | 编辑完成后产出/tmp/omo-docs-drift/fix-report-f2.md,逐项标记 FIXED / SKIPPED |
这套规则的本质是"证据优先、宁缺毋滥":文档中的每个模型名、每个提供商列表、每行配置,都必须能在源码中逐字找到依据;找不到依据的表述要么被改写,要么被跳过并记录,而不是凭印象"修正"。这正是文档漂移审计区别于普通校对的核心差异。
模型-代理匹配文档的 20 项校准
agent-model-matching.md 是 F2 修复工作量最大的文档(20 项指令),其核心矛盾是:模型生态快速演进(GPT-5.6 Sol、Kimi K3、GLM 5.2、MiniMax M 系列等),而内置回退链的定义在 agent-model-requirements.ts 中持续变化,文档容易停留在旧版本。
GPT-5.6 Sol 成为新主角
三项修正把 GPT-5.6 Sol 推到了文档的前台:
- Sisyphus 的第三自动 rung:原文档写"Sisyphus uses Claude, Kimi, and GLM",修正后必须补上 GPT-5.6 Sol。从源码看,Sisyphus 的完整回退链确实包含四个自动 rung(agent-model-requirements.ts):
sisyphus: { fallbackChain: [ { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-5", variant: "max" }, { providers: ["opencode-go", "kimi-for-coding", "moonshotai", "opencode", "bailian-coding-plan", ...], model: "kimi-k3" }, { providers: ["openai", "openai-codex", "github-copilot", "opencode"], model: "gpt-5.6-sol", variant: "medium" }, { providers: ["zai-coding-plan", "opencode", "bailian-coding-plan"], model: "glm-5.2" }, { providers: ["opencode"], model: "big-pickle" } ], requiresAnyModel: true, }- Hephaestus 是 Sol-only 单 rung 代理:修正指令明确"Hephaestus requires the GPT-5.x family"应改为"Hephaestus 只有一个自动模型 GPT-5.6 Sol,且不存在 GPT-5.4 / 5.5 回退"。源码证实了这一点(agent-model-requirements.ts):
hephaestus的fallbackChain仅含一个gpt-5.6-sol (medium)rung,并带有requiresProvider声明,要求连接 openai / openai-codex / github-copilot / opencode 之一。 - Prometheus 没有 GPT rung:文档中原把 Prometheus 列入 GPT 路径列表,但源码中 Prometheus 的链只有 Claude Fable 5.1(xhigh)→ Kimi K3(max)两个 rung(agent-model-requirements.ts),没有任何 GPT 模型,因此必须从 GPT 路径列表中移除。
Sisyphus 丢失链与 Kimi K2.7 的重新定位
修正指令第 7 项是典型的口径纠偏:原文档声称"Sisyphus 丢失 Claude 时应回退 Kimi K3、Kimi K2.7、GLM 5.2、Big Pickle 并避免 GPT"。修正后的真实链是Kimi K3 → GPT-5.6 Sol (medium) → GLM 5.2 → big-pickle,且K2.7 不是任何内置链的自动 rung——它只是手册/目录(catalog)选项,所有内置链现在都使用 K3。
同类纠偏还有:
- "丢失 GPT-5.4/5.5/5.6 应回退 DeepSeek v3.2"不成立:没有任何内置 deep-agent 链使用 DeepSeek v3.2。各代理的实际链不同——Hephaestus 是 Sol-only;Oracle 则是 Sol → Gemini 3.1 Pro → Claude Opus 5 → GLM 5.2(agent-model-requirements.ts)。
- Kimi K3 重复行合并:文档中两行重复的 Kimi K3 应合并为一行;Kimi K2.7 行改为"手动/目录选项,不在任何内置链中"。
- "GPT-5.6 Sol 是关键回退"的表述收窄:在具名代理中,只有 Atlas 的链包含 GPT 回退 rung(
gpt-5.6-sol (medium),见 agent-model-requirements.ts),因此该表述必须限定到 Atlas。
Explore / Librarian 的精确链与 MiniMax 家族
Explore 与 Librarian 的链在源码中完全一致(agent-model-requirements.ts),修正要求文档照此补全:
gpt-5.6-luna-fast (low) → deepseek-v4-flash (max) ← 紧跟在 Luna Fast 之后插入 → qwen3.7-plus → minimax-m3 / MiniMax-M3 → minimax-m2.7 ← 与 gpt-5.4-nano 一同纳入 rung 列表 → claude-haiku-4-5 → gpt-5.4-nano细节修正包括:首个gpt-5.6-luna-fastrung 必须标注(low)变体;"MiniMax M2.7 通过 OpenCode Go 与 OpenCode Zen 使用"改为opencode-go 与 vercel两个提供商;"MiniMax M2.7 Highspeed 是 OpenCode 目录条目"改为vercel-only 回退 rung。
MiniMax 的使用范围也随之扩大:文档原称"MiniMax 仅用于 Explore 和 Librarian",实际还用于Atlas 与 Sisyphus-Junior(后者在 agent-model-requirements.ts 中还有big-pickle收尾 rung)。
visual-engineering 链与 GLM 使用边界
类别侧的链定义在 category-model-requirements.ts 中,visual-engineering的 Opus rung 提供商集合为anthropic / anthropic-api / github-copilot / opencode。修正指令要求文档侧补齐第四 runggpt-5.6-sol (medium)(与deep类别的gpt-6-astra (high) → gpt-5.6-sol (medium)结构一致),并把 GLM 5.2 的活跃使用行收敛为Sisyphus、Oracle、Momus(Prometheus、Metis 等代理的链中没有 GLM rung,见 agent-model-requirements.ts)。Sisyphus 的 GLM 5.2 rung 提供商则从opencode-go修正为直接编码计划提供商(agent-model-requirements.ts 中为zai-coding-plan / opencode / bailian-coding-plan)。
注入顺序值与默认值的源码级核对
修正指令第 20 项最为隐蔽:文档中代理注入的order值 0,1,2,3 应改为 1,2,3,4。源码给出了确定性证据——agent-priority-order.ts 中reorderAgentsByPriority以index + 1注入序号:
for (const [index, displayName] of orderedDisplayNames.entries()) { if (Object.prototype.hasOwnProperty.call(agents, displayName)) { ordered[displayName] = injectOrderField(agents[displayName], index + 1) seen.add(displayName) } }从 0 基索引加 1,实际注入值必然是 1,2,3,4,文档写 0,1,2,3 属于复制粘贴层面的漂移。而报告中的:259与:335-337两条("unspecified-low 的 Luna 默认值")则被REJECTED:因为类别的默认值确实是openai/gpt-5.6-luna:xhigh(见 delegate-task 类别定义 的默认配置),只有需求链从 Terra high 起步——这不是文档错误,因此修复者被明确要求"Leave those lines"。这一节展示了审计流程的完整性:不是所有差异都要修,源码说了算。
已知问题文档的 6 项状态修正
known-issues.md 的修正模式与模型文档不同:它处理的是问题生命周期状态,即"已解决的历史问题不应再以开放问题形式误导读者"。
| 修正指令 | 内容 | 当前文档状态 |
|---|---|---|
Ralph Loop<promise>VERIFIED</promise>探测问题 | 降级为历史/已解决注释:Ralph Loop 不再接入当前 session hooks,Goal 子系统不使用该探测器 | #5839已标记 Resolved |
| 内置 GPT-5.5 推理强度冲突 | 内置链已改用 GPT-5.6 Sol,仅保留为手动自定义提供商/上游 OpenCode 的注意事项 | #5529降级为 caveat |
| required-model 未固定子问题 | 标记已解决:必需代理在可用性门禁失败时会被跳过 | #5604已标记 Resolved |
| LSP 配置位置 | 支持的配置文件收敛为.opencode/lsp.json、.omo/lsp.json、.omo/lsp-client.json或用户级lsp.json | #4225工作区列表已更新 |
| Ralph Loop 日志洪水 | 历史/已解决注释(Goal 已取代 Ralph Loop) | #5105已标记 Resolved |
| Windows Bun.serve 问题 | 运行时技能源服务器在 Bun.serve 不可用时回退到 Node HTTP | #5025已标记 Resolved |
源码证据清晰可查:LSP 配置列表定义在 mcp/lsp.ts 的PROJECT_LSP_CONFIGS = [".opencode/lsp.json", ".omo/lsp.json", ".omo/lsp-client.json"];Ralph Loop 的"保留但未接线"状态可以从 hooks/index.ts 看到——createRalphLoopHook与createGoalHook同时被导出,但当前会话接线只走 Goal 路径。修正指令专门提醒:Ralph Loop 目录(hooks/ralph-loop)虽然保留,但它已经是历史组件,文档必须避免让读者以为它仍在生效。
发布链路三份文档的修正
Codex 遥测:从 npx 到 bunx 的运行时策略对齐
codex-telemetry.md 只有一项修正:安装命令从npx lazycodex-ai install改为bunx lazycodex-ai install。理由是仓库运行时策略Bun-first,且publish.yml发布流程会随包分发lazycodex-ai的 bin。当前文档中两处来源(install与plugin)均已使用bunx表述。
这份文档其余内容(如遥测事件omo_codex_daily_active、每日去重状态文件~/.local/share/omo-codex/posthog-activity.json、OMO_CODEX_DISABLE_POSTHOG与OMO_DISABLE_POSTHOG两级退出开关)不受修正影响,保持了"仅发送匿名日活、绝不含提示词内容与密钥"的隐私边界,可参见 隐私政策。
lazycodex-ai npm 保留:可信发布成为硬门槛
lazycodex-npm-reservation.md 的两项修正属于流程升级:
- trusted-publisher 预检从软性建议升级为硬门槛:
publish.yml的 preflight-trust 阶段对所有入选发布包(含lazycodex-ai)强制执行;缺少可信发布配置会直接导致预检失败并阻断发布。因此原文档中"手动npm publish+NPM_AUTH_TOKEN"的 playbook 必须删除,改为:先在 npm 侧配置 GitHub Actions 可信发布(Provider 为 GitHub Actions,Organization 为code-yeongyu,Repository 为oh-my-openagent,Workflow 为publish.yml),然后完全通过工作流发布。 - 拆分触发条件明确化:仓库推送与 GitHub Release 是两个独立事件——当生成文件与 marketplace 仓库不同时推送
code-yeongyu/lazycodex仓库;只有当生成载荷与上一个lazycodex-ainpm 载荷比较有变化时才创建 GitHub Release。两者都需要LAZYCODEX_SYNC_TOKEN密钥。
文档还维护了lazycodex版本命名空间的保留规则:LazyCodex-only 发布必须使用带保留后缀的版本(如5.0.0-beta.62.lazycodex.1或5.0.0-lazycodex.1),正常 omo 发布会拒绝该标识符,双向互斥。预检诊断的重试预算(OIDC 每次 30 秒超时、最多 6 次尝试、1/2/4/8/16 秒退避)也是文档记录的可操作细节。
发布流程:版本由工作流计算而非手工预置
release-process.md 的修正纠正了一个流程误区:原文档称"版本提升与包元数据必须已存在于发布分支",实际流程是工作流计算版本 → 在 release-state 分支上盖章包元数据 → 打开并合并 release-state PR → 从准备好的 SHA 重新发布。这正是 publish.yml 中双 dispatch 设计的文档化表达:
- 第一次 dispatch 的
prepared_release_sha为空:执行门禁、准备或复用 release 状态、创建/校验 tag,然后从该 tag 发起第二次 dispatch; - 第二次 dispatch 携带精确的
prepared_release_sha:只有这次运行能执行平台发布、主包发布与 release 创建。
同时文档强调幂等守卫(重复 tag 复用、npm 已发布探测、marketplacegit diff --cached --quiet跳过无变化提交)与恢复纪律:gh run rerun --failed <run-id>仅用于瞬态失败;一旦出现 release commit、tag 或 npm 发布,必须恢复既有 run 而不是新开一次;绝不手工发布 npm 包或手工移动 release tag。
方法论沉淀:cite → verify → edit → report
从这份 F2 指令可以提炼出可复用的文档漂移修复循环:
- cite(定位):每条修正都带精确锚点(文档行号 + 源码引用),例如"agent-model-requirements.ts:12-28"。
- verify(验证):编辑前重新核对引用是否仍成立;源码与文档双重确认,任何一方不匹配就跳过并记录,而不是猜测。
- edit(最小编辑):只改差异点,保持 ASCII、不用 em dash,避免引入与主题无关的重写。
- report(报告):交付
fix-report-*.md,逐项标记 FIXED / SKIPPED,直到全部条目解决(STOP WHEN all items resolved)。
这套循环的价值在于:文档修正不再是"文笔问题",而是可验证的工程问题。每条表述都能指回一个源码文件;每个 REJECTED 条目都带一句源码证据。对维护者而言,这意味着文档可以像代码一样被 review、被回归测试;对使用者而言,模型匹配文档中的每一条链、每个提供商列表,都是运行时真实行为的镜像。
延伸阅读
- 模型-代理匹配指南:三个模型配置档位、提示词预设与安全/风险覆盖对照
- 已知问题:已解决条目的历史化写法
- Codex Light 遥测:匿名日活事件与退出开关
- lazycodex-ai npm 发布手册:版本命名空间与可信发布门槛
- 发布流程:双 dispatch、幂等守卫与恢复纪律
- 源码锚点:内置代理回退链、类别回退链、内置模型配置档位、代理-模型需求定义、类别-模型需求定义
【免费下载链接】oh-my-openagentOmO: Just type "mass ulw" keyword with your prompt. Now you are the master of graph engineering.项目地址: https://gitcode.com/gh_mirrors/oh/oh-my-openagent
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考