
OmX CLI Discoverability Pilot沙箱规则、评估合约与可发现性测试切片的完整解析【免费下载链接】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导读本文基于 oh-my-codex 仓库中 cli-discoverability-pilot 任务包及其 sandbox 合约完整解读该项目围绕CLI 命令可发现性discoverability设计的任务边界、沙箱操作规则与自动化评估策略。文章不仅逐条继承沙箱文档中的评估字段语义还深入src/scripts/eval/eval-cli-discoverability.ts评估器与四组 CLI 测试切片源码说明顶层 help、嵌套帮助路由、sparkshell 与 session-search 四条可发现性验证线是如何被构建、打分并纳入omx autoresearch循环的。读完本文你将掌握如何读懂一个 mission 包的沙箱合约、如何定位并运行其评估器、以及 help 文本层面的可发现性改动应满足哪些回归约束。一、任务背景为什么可发现性值得一个专门的 Pilotoh-my-codexomx是一个面向 Codex CLI 的多 Agent 编排工具omx顶层命令面在 src/cli/index.ts 中承载了几十个子命令exec、mission、setup、team、ralph、ralplan、sparkshell、session、hud、sidecar、wiki等。当命令面膨胀到这种规模时从 help 文本中仅凭直觉找到正确的命令就成了一种真实的操作瓶颈。mission.md 把这一目标明确为改进整个 OMX CLI 的命令可发现性重点覆盖四条线顶层 helpomx --help主帮助文本嵌套帮助路由omx subcommand --help是否正确落到命令自身的本地帮助sparkshell 可发现性顶层 help 与子命令 help 中是否能发现omx sparkshell及其两种用法session-search 可发现性omx session搜索本地会话历史的帮助面。任务的成败判据是找到最小的改动集合让操作者仅凭 help 文本就能发现正确的 CLI 入口。mission 文档同时给出成功提示——优先做 help 文本或路由清晰度的小改动、避免把范围扩大到无关命令行为、除非可发现性改进必须对齐否则保留既有 docs/contracts。二、沙箱规则把改动关进最小可评审 diff的笼子里sandbox.md 前半部分是沙箱操作规则它界定了 Agent 在本次任务中的活动边界改动只允许聚焦 CLI 可发现性禁止顺手改动其他行为偏好最小的可评审 diffsmallest reviewable diff不得新增依赖保留命令语义——本任务是关于可发现性不是功能重设计评估器只奖励通过目标构建 CLI 可发现性测试切片的改动。这五条规则与 mission 文档的聚焦点一一对应修改面被限定在 README.md、src/cli/index.ts顶层 HELP 常量与嵌套路由表以及四份测试文件所在的目录内。其中保留命令语义是一条硬约束omx sparkshell command [args...]的调用方式、omx session search query的参数形态都不能因为 help 文案优化而被改变否则即便测试通过也违背了任务初衷。三、评估策略pass / score / keep_policy 的字段语义sandbox.md 的 frontmatter 定义了评估器入口与保留策略evaluator: command: node scripts/eval-cli-discoverability.js format: json keep_policy: score_improvement三个字段的含义分别为command评估器可执行命令。node scripts/eval-cli-discoverability.js直接运行编译产物对应的评估脚本实际源码位于 src/scripts/eval/eval-cli-discoverability.ts输出 JSON 供上层autoresearch循环解析format: json评估器必须以 JSON 输出结果keep_policy: score_improvement候选提交是否被采纳的保留策略——只有分数相对基线有提升的改动才会被保留平局或回退的候选会被丢弃。sandbox.md 的 Evaluation policy 部分进一步定义了结果语义passtrue表示目标构建build与可发现性测试全部通过score是目标检查项通过比例取值范围0.00到1.00分数越高越好且与keep_policy: score_improvement直接联动——score 是omx autoresearch迭代循环里 keep/discard 决策的量化依据。这套字段与 src/autoresearch/runtime.ts 中AutoresearchKeepPolicy、AutoresearchEvaluationRecord、candidate_file、ledger_file等运行期结构一一对应每次迭代的score会被写入候选记录监督者根据keep_policy决定保留、丢弃或停止。四、评估器实现一条命令如何量化可发现性评估器源码 src/scripts/eval/eval-cli-discoverability.ts 的实现非常紧凑核心是一个构建 四个测试切片const checks: [string, string[]][] [ [node, [--test, dist/cli/__tests__/index.test.js]], [node, [--test, dist/cli/__tests__/nested-help-routing.test.js]], [node, [--test, dist/cli/__tests__/sparkshell-cli.test.js]], [node, [--test, dist/cli/__tests__/session-search-help.test.js]], ];执行流程为先跑npm run build把 TypeScript 源码编译到dist/这是 pass 的前置条件编译失败即整体失败依次用node --test运行四个编译后的测试文件分别对应src/cli/__tests__/下的index.test.ts、nested-help-routing.test.ts、sparkshell-cli.test.ts、session-search-help.test.ts统计通过项占比得到score passed / 5构建 四个切片保留两位小数全部退出码为 0 时passtrue以 JSON 输出pass、score、summary以及每个检查项的command、ok、status、stderr明细。值得注意的是dist/cli/__tests__/前缀测试目标是编译产物因此任何改动都必须先通过构建再接受行为断言这从机制上保证了help 文本改动不能破坏编译。而spawnSync的stdio: [ignore, pipe, pipe]配置保证评估器输出是干净的、可被 JSON 解析的。五、四条可发现性测试切片逐个拆解5.1 顶层 helpindex.test.ts顶层 help 的完整文本由 src/cli/index.ts 中的HELP常量维护覆盖Usage:、子命令清单、全局 Options--yolo、--high、--xhigh、--madmax、--spark、--direct、--tmux、--worktree等以及OMX_LAUNCH_POLICY环境变量说明。src/cli/__tests__/index.test.ts是该文件对应的主测试验证resolveCliInvocation的命令路由、HELP常量渲染、启动策略解析等核心行为——任何对顶层 help 文本的改动都会经过这一切片回归。从 src/cli/index.ts 的resolveCliInvocation可以看出顶层路由逻辑--help/-h路由到help命令--version/-v路由到version无参数或以--开头的参数默认进入launch其余首个 token 作为子命令名。这意味着新增一个命令名天然不会破坏既有路由而改 help 文案则直接影响操作者能否在长列表里快速定位目标。5.2 嵌套帮助路由nested-help-routing.test.ts嵌套帮助路由是本次 pilot 的核心机制之一。src/cli/index.ts中维护了NESTED_HELP_COMMANDS集合包含adapt、ask、question、cleanup、auth、exec、hud、state、ralph、ralplan、session、sparkshell、team等并提供commandOwnsLocalHelp(command)判定某个命令是否拥有自己的本地帮助面。src/cli/tests/nested-help-routing.test.ts 用一张命令 → 期望帮助特征的表来逐条断言命令期望的本地帮助特征正则adapt --helpUsage: omx adapt target probe\|status\|init\|envelope\|doctorask --helpUsage: omx ask claude\|gemini question or taskquestion --helpomx question - OMX-owned blocking user question entrypointautoresearch --help硬弃用提示并指向$autoresearchexplore --help硬弃用提示并指向omx sparkshellhud --helpUsage:\n omx hud Show current HUD statestate --helpUsage: omx state read\|write\|clear\|list-active\|get-statusnotepad --help工具清单中含notepad_readtrace --help工具清单中含trace_timelinemcp-serve --helpUsage: omx mcp-serve targetralph --helpomx ralph - Launch Codex with ralph persistence mode active每条断言同时校验两件事状态码为 0、输出包含命令自身的 Usage 特征且不得出现顶层 help 的签名oh-my-codex (omx) - Multi-agent orchestration for Codex CLI。也就是说嵌套帮助路由的正确形态是omx sub --help必须落到子命令的本地帮助面而不是退化成顶层 help。测试还额外验证了omx state read --input {mode:ralph} --json能穿透顶层 CLI 正常执行{exists:false,mode:ralph}证明 help 路由改动不能破坏实际命令执行路径。5.3 sparkshell 可发现性sparkshell-cli.test.tssparkshell 是 omx 的原生侧车sidecar命令面其本地帮助常量SPARKSHELL_USAGE定义在 src/cli/sparkshell.tsUsage: omx sparkshell command [args...] or: omx sparkshell [--json] [--budget chars] command [args...] or: omx sparkshell --shell shell command or: omx sparkshell --tmux-pane pane-id [--tail-lines 100-1000]src/cli/tests/sparkshell-cli.test.ts 中与可发现性直接相关的断言分为两层顶层 help 可见性omx --help必须同时出现omx sparkshell command [args...]、omx sparkshell --tmux-pane pane-id [--tail-lines 100-1000]与explicit tmux-pane summarization描述并且弃用命令omx explore的文案要引导用户转向 sparkshellDEPRECATED compatibility command; use normal repo inspection or omx sparkshell子命令本地帮助完整性omx sparkshell --help必须包含Usage: omx sparkshell command [args...]、or: omx sparkshell --tmux-pane pane-id [--tail-lines 100-1000]以及两个环境变量说明OMX_SPARKSHELL_BIN overrides the native binary、OMX_SPARKSHELL_MODEL_INSTRUCTIONS_FILE overrides packaged summary instructions。同一文件的其余测试则保障可发现性改动不破坏语义通过 JS bridge 透传子进程 stdout/stderr/退出码、GLIBC 不兼容时回退到原始执行、缺失二进制时报错清晰failed to launch native binary: executable not found等。这些测试共同把 sparkshell 的入口可见与运行可靠绑在一起回归。5.4 session-search 可发现性session-search-help.test.tsomx session用于搜索并总结本地会话历史其本地帮助与锁/指针子命令位于 src/cli/session-search.ts例如Usage: omx session lock inspect|recover [--cwd path] [--json]、Usage: omx session pointer recover [--cwd path] [--json]。src/cli/tests/session-search-help.test.ts 对帮助文本的断言包括顶层 help 必须包含omx session Search and summarize local session history (--codex-home path escape hatch)、omx resume Resume Codex sessions (supports --project and --codex-home path)以及omx autoresearch [DEPRECATED] Use $autoresearch的弃用标记omx session --help必须包含omx session search query、omx session friction [options]、Options for friction:、--since spec、--codex-home pathomx session lock --help与omx session pointer --help也要逐层给出用法。测试同样验证了发现面背后的真实行为session lock inspect能输出确定性 JSONlockPath、safeToRecover遇到暂存锁场景时recover会拒绝恢复not safe to recoversession pointer recover能把已验证死亡的会话指针按取证字节原样隔离quarantine并在重复执行时输出status: absent。这些行为测试保证了帮助文本承诺的能力与实际能力一致。六、如何本地运行评估器与整个 Pilot评估器可以直接在仓库中运行编译后脚本路径对应 src/scripts/eval/eval-cli-discoverability.ts# 编译 运行全部 5 项检查构建 4 个测试切片 node scripts/eval-cli-discoverability.js输出示例结构示意{ pass: false, score: 0.80, summary: CLI discoverability pilot evaluator, details: [ { command: npm run build, ok: true, status: 0 }, { command: node --test dist/cli/__tests__/index.test.js, ok: true, status: 0 }, { command: node --test dist/cli/__tests__/nested-help-routing.test.js, ok: false, status: 1, stderr: ... } ] }若要以真实的端到端方式运行整个 mission 循环基线 → 候选迭代 → keep/discard 决策可以借助omx autoresearch相关运行机制见 missions/README.mdomx autoresearch missions/cli-discoverability-pilot运行后可在.omx/logs/autoresearch/run-id/下检查manifest.json、candidate.json与iteration-ledger.json查看监督者对每个候选的score_improvement判定结果——这正是 sandbox.md 中keep_policy字段在运行期的落地产物。七、从 Pilot 看 CLI 可发现性工程的三个要点结合 sandbox 合约、mission 目标与上述源码可以提炼出本项目 CLI 可发现性工程的三条可复用经验可发现性是可测试的顶层 help、嵌套路由、子命令帮助面的特征文本全部被写进node --test断言任何回归help 被意外删除、路由退化成顶层帮助都会让对应切片红掉改动者因此可以放心地在文案层做优化而不用担心破坏行为层。发现面与行为面必须联动回归nested-help-routing.test.ts、session-search-help.test.ts都在断言 help 文本之后继续执行真实命令state read、session lock inspect、session pointer recover确保帮助里承诺的用法与真实可用的命令不脱节。任务边界靠合约而非自觉sandbox.md 用 frontmatter 把评估器命令、JSON 输出格式与score_improvement保留策略固化下来再配合omx autoresearch的迭代循环源码佐证见 src/autoresearch/runtime.ts 的keep_policy/candidate_file/ledger_file结构让最小可评审 diff 分数提升才保留成为可自动执行的纪律而不是一句建议。相关资源任务目标与聚焦点missions/cli-discoverability-pilot/mission.md沙箱规则与评估合约missions/cli-discoverability-pilot/sandbox.md评估器实现src/scripts/eval/eval-cli-discoverability.ts顶层 HELP 常量与嵌套帮助路由表src/cli/index.tssparkshell 本地帮助src/cli/sparkshell.tssession 帮助与锁/指针子命令src/cli/session-search.ts四组测试切片src/cli/tests/index.test.ts、src/cli/tests/nested-help-routing.test.ts、src/cli/tests/sparkshell-cli.test.ts、src/cli/tests/session-search-help.test.ts【免费下载链接】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),仅供参考