
oh-my-codex v0.9.0 Spark Initiative 深度解析omx explore只读仓库探索与omx sparkshell原生侧车的设计、分发与实战【免费下载链接】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-codexoh-my-codex简称 OMXv0.9.0 是Spark Initiative火花计划的基座特性版本它以 Rust 原生二进制为后盾正式引入omx explore作为默认的只读仓库探索入口同时将omx sparkshell定位为面向操作者的显式 shell 原生侧车。本文基于 docs/release-notes-0.9.0.md 的版本说明结合仓库内 Rust crate 与 TypeScript CLI 的源码实现完整梳理这两个命令的用法、参数、分发契约、CI 验证与升级路径读完后你可以直接在生产环境中安全地使用只读探索 长输出摘要的 Spark 工作流。版本定位Spark Initiative 是什么v0.9.0是发布在v0.8.15之后、基于未发布dev分支的预发布草案Drafted 2026-03-12共包含55 个非 merge 提交v0.8.15..dev2026-03-10 至 2026-03-12diff 快照为149 个文件变更12,325 / -254 行。贡献者包括 Yeachan-Heo、Bellman、2233admin、Seunghwan Eom、hoky1227。该版本的核心诉求是让 OMX 拥有更强的原生快速路径用于仓库发现与 shell 原生检查具体落在四条主线omx explore成为默认的只读探索入口引入Rust 实现的探索 harnessomx-explore-harness并配套打包与源码回退source-fallback流程引入omx sparkshell command [args...]作为显式面向操作者的原生侧车允许符合条件的只读 shell 原生任务从omx explore路由到omx sparkshell。官方对探索路径的定位是刻意受限的只允许 shell、只读、且经过白名单allowlist约束。omx explore受限的只读探索入口设计约束omx explore不是又一个随意执行命令的入口而是被设计为一个低成本的只读仓库检查 harness。在 crates/omx-explore/src/main.rs 中prompt 组装函数明确写入了行为契约L959-L974仅允许仓库检查类 shell 命令rg、grep以及对rg/grep/ls/find/wc/cat/head/tail的紧密有界只读 bash 包装禁止写、删、改名或修改任何文件禁止执行会改变工作区状态的 git 命令输出必须为纯 Markdown。从源码结构看harness 的完整调用形态是crates/omx-explore/src/main.rsUsage: omx-explore --cwd dir --prompt text --prompt-file explore-prompt.md --instructions-file AGENTS.md --model-spark model --model-fallback model其中--prompt-file是探索行为的提示词契约文件--instructions-file通常指向项目级AGENTS.md--model-spark是低成本探索模型--model-fallback是备用重试模型。白名单执行环境allowlist environment为了真正落实只读且白名单约束harness 会构造一个临时白名单环境prepare_allowlist_environmentL976 起把当前可执行文件自身复制为临时bin目录下的包装器仅暴露以下直接命令ALLOWED_DIRECT_COMMANDSL41-L43rg, grep, ls, find, wc, cat, head, tail, pwd, printf同时会清洗子进程环境变量EXPLORE_SUBPROCESS_ENV_VARS_TO_SCRUBL28-L37移除BASH_ENV、ENV、PROMPT_COMMAND、NODE_OPTIONS、SHELLOPTS、BASHOPTS、GREP_OPTIONS、GREP_COLORS等可能注入行为的变量并把PATH与SHELL指到受限位置从源头防止 shell 逃逸与副作用。运行时护栏与退出码语义harness 对 Codex 子进程施加了三重资源护栏run_command_with_timeoutL430-L525每一项都有对应退出码护栏默认值环境变量覆盖超限退出码执行超时180,000 ms3 分钟OMX_EXPLORE_CODEX_TIMEOUT_MS124进程数上限进程风暴防护96OMX_EXPLORE_PROCESS_LIMIT125stdout/stderr 输出上限8 MBOMX_EXPLORE_CODEX_OUTPUT_LIMIT_BYTES126超限后会终止整棵进程树POSIX 下通过libc::kill(-pgid, SIGTERM)后补SIGKILL防止runaway shell storm与无界内存增长Linux 下还会轮询/proc统计进程树数量count_process_treeL527-L561。其他可用环境变量还包括OMX_EXPLORE_CODEX_BIN指定 codex 可执行文件与OMX_EXPLORE_ROOT。模型回退model fallback探索流程采用低成本模型优先、失败回退策略run_with_argsL124-L166先用--model-spark指定的模型执行退出码为 0 则直接输出否则在 stderr 打印回退事件fallback-attemptmodel from... to... reasonspark_attempt_failed再改用--model-fallback重试并在最终 stdout 输出中附带## OMX Explore fallback提示块明确标注成本/行为边界可能不同避免静默切换模型。平台限制与后续演进重要omx explore的内置 harness在 Windows 上尚不可用其白名单运行时依赖 POSIX sh/bash 包装器。Windows 用户需要设置OMX_EXPLORE_BIN指向兼容的自定义 harness或优先使用omx sparkshell或运行omx doctor查看就绪状态见 crates/omx-explore/src/main.rs。需要特别说明的是截至当前仓库 HEADomx explore已被硬弃用hard-deprecated直接命令面已移除见 src/cli/explore.ts官方建议改为普通只读仓库查找走常规 Codex 仓库检查工具/subagent显式 shell 原生只读取证或 pane 摘要走omx sparkshell -- command与--tmux-pane。也就是说0.9.0引入的这条探索线最终收敛到omx sparkshell上这也印证了发布说明里允许符合条件的只读 shell 任务路由到 sparkshell的演进方向。omx sparkshell面向操作者的原生侧车omx sparkshell是本次发布的另一主角。它由 crates/omx-sparkshell/src/main.rs依赖omx-mux提供 tmux capture 参数构建见 crates/omx-mux/src/tmux.rs与 TypeScript 侧的 src/cli/sparkshell.ts 封装层共同构成。其用途文案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]三种执行目标底层SparkShellTarget枚举crates/omx-sparkshell/src/main.rs对应三种模式直接命令模式默认omx sparkshell command [args...]按 argv 直接执行不做 shell 元字符解析——这是安全默认管道、重定向、;、$()等不会被解释。显式 shell 模式omx sparkshell --shell cmd通过bash -lc/sh -lcPOSIX或原生 Windows shell 执行只有显式 opt-in 才解释元字符。Windows 下的 shell 选择顺序为pwsh→powershell.exe→cmd.exesrc/cli/sparkshell.ts。tmux pane 模式omx sparkshell --tmux-pane pane-id [--tail-lines N]捕获更大范围的 pane 尾部后走同样的原始输出 vs 摘要输出判定。参数与默认值参数含义默认值 / 约束--json输出结构化 JSON 报告默认关闭纯文本/摘要--budget chars摘要/输出的字符预算默认 1000--tail-lines 100-1000tmux pane 尾部行数默认 200范围 100–1000MIN_TMUX_TAIL_LINES/MAX_TMUX_TAIL_LINESL24-L26--since-last只输出与上次观测相比的增量依赖缓存--cache on/off是否启用 pane 内容缓存默认 on--cache-ttl-ms ms缓存有效期默认 10 分钟DEFAULT_CACHE_TTL_MS 600_000--team id团队检查上下文无--worker id团队 worker 检查上下文无--终止选项解析后续全部视为命令—缓存正文带版本标记omx-sparkshell-cache-v2缓存目录解析顺序为OMX_SPARKSHELL_CACHE_DIR→OMX_TEAM_STATE_ROOT/../cache/sparkshell→.omx/cache/sparkshellL515-L523。--tail-lines与--tmux-pane之外的组合如 shell 模式附加参数、tail-lines 脱离 pane会直接报参数错误体现了显式 opt-in、禁止歧义的接口哲学。原始输出 vs 摘要输出threshold 机制sparkshell 的核心价值在于长输出可预测化通过行数阈值read_line_threshold判断是否需要调用模型做摘要避免每次都用大模型处理海量输出输出行数 ≤ 阈值直接输出原始 stdout/stderr超过阈值调用 codex 桥crates/omx-sparkshell/src/codex_bridge.rs 的summarize_output生成摘要并用--budget做字符级截断compact_text超出预算时追加[truncated: N chars omitted]摘要失败时回退为原始输出并在 stderr 说明原因。配套能力还包括脱敏redaction输出先经过 crates/omx-sparkshell/src/redaction.rs 的redact_output处理摘要与 JSON 报告使用脱敏后内容--json报告中含redactions.count字段低推理成本发布说明强调 PR #781 强制 sparkshell 摘要使用低推理low reasoning模式控制成本语言注册表源码中还有面向多种语言的检查注册表crates/omx-sparkshell/src/registry/ 下含 python、rust、go、node_js、git、generic_shell 等子模块用于语言相关的只读取证压力测试覆盖发布说明提到新增了 noisy 与 adversarial 输出的压力测试覆盖对应测试见 crates/omx-sparkshell/tests/。JSON 报告与诊断--json模式输出结构化的机器可读报告write_json_reportL907-L985关键字段包括{ ok: true, mode: command|shell|tmux-pane, status: ok|failed, exit_code: 0, summary: ..., errors: [], warnings: [], evidence: { stdout_lines: N, stderr_lines: N, raw_hash: ..., pane_id: null, tail_lines: null, line_range: null }, next_action: ..., confidence: 0.xx, classification: ..., cache: { cache_hit: bool, previous_hash: ..., current_hash: ..., changed_line_ranges: [] }, redactions: { count: N } }classification与next_action由内置诊断分类器产出classifyL701-L750能识别auth_error401/authentication、type_error、test_failure、waiting_for_input等待输入/press enter、busy_processingthinking/running/building提示do not shutdown yet等模式并给出置信度。团队运营中的 sparkshellsparkshell 不只是隐藏后端它正式进入了操作者叙事operator storypane 显式摘要omx sparkshell --tmux-pane pane-id --tail-lines 100-1000用于显式 pane 摘要可直接观察某个团队 worker 的实时运行面板团队检查元数据--team id --worker id会把分类器升级为团队感知classify_teamL752-L786读取OMX_TEAM_STATE_ROOT默认.omx/state下的team/id/workers/worker/heartbeat.json与status.json心跳超过 120 秒STALE_HEARTBEAT_MS判定为stale_heartbeat并建议run omx team statusworker 状态为blocked/needs_input时建议inspect raw pane、failed时归类为 test_failure并保持与 src/team/state.ts 中WorkerStatus.state联合类型对齐源码注释明确要求。也就是说sparkshell 已经能为团队运行时巡检提供结构化证据它能告诉你一个 worker 是在忙碌、等待输入还是已经失败以及下一步该做什么。原生发布资产成为一等公民分发与水合契约0.9.0同时对发布形态做了升级让新原生面可跨平台发布与消费统一omx-explore-harness与omx-sparkshell的跨平台原生发布生成带per-target 元数据与校验和的原生发布清单native-release-manifest.json发布工作流新增packed-install 冒烟验证CI 直接验证build:full。关键分发契约官方在发布说明中明确的分发契约是用户正常安装npm install -g oh-my-codexnpm 包刻意不直接打包全部原生二进制带 tag 的 Release 发布跨平台原生压缩包覆盖omx-explore-harness与omx-sparkshell两个产品packaged 安装通过native-release-manifest.json从 Release assets 水合hydrate匹配的原生二进制npm pack刻意不携带 staged 原生二进制——原生压缩包附加在 GitHub Release 上通过 native-asset 工作流消费。二进制解析与水合顺序TypeScript 侧 src/cli/native-assets.ts 负责整个水合流程产物类型包括omx-explore-harness、omx-sparkshell、omx-api、omx-runtimeL13。清单默认从OMX_NATIVE_MANIFEST_URL或repo/releases/download/vversion/native-release-manifest.json拉取L102-L111缓存根目录默认~/.cache/oh-my-codex/nativeWindows 为LOCALAPPDATAL113-L120。sparkshell 的二进制解析顺序src/cli/sparkshell.ts体现了官方强调的显式回退顺序env 覆盖OMX_SPARKSHELL_BIN绝对路径或相对 cwd 解析水合缓存按版本 平台/archLinux 区分 musl/glibcresolveLinuxNativeLibcPreference检查托管缓存校验通过verified即命中packaged 产物bin/native/platform-arch[-libc]/omx-sparkshellrepo-local 构建target/release/omx-sparkshell与嵌套的native/omx-sparkshell/target/release/omx-sparkshellRelease 水合联网拉取native-release-manifest.json对应的压缩包并校验 SHA-256全部失败则报错提示恢复网络或设置OMX_SPARKSHELL_BIN。omx explore侧同样支持OMX_EXPLORE_BIN覆盖见 src/cli/explore.ts 的 packaged 元数据解析。此外当原生侧车不可用时sparkshell 命令会降级为原始命令执行runSparkShellFallbacksrc/cli/sparkshell.ts在 stderr 打印cause/path/state/remediation诊断后以stdio: inherit直接跑原始命令GLIBC 不兼容GLIBC_* not found模式也会触发同样的降级路径。相关环境变量速查变量作用OMX_SPARKSHELL_BIN/OMX_EXPLORE_BIN显式指定原生二进制路径最高优先级OMX_SPARKSHELL_MODEL/OMX_SPARKSHELL_FALLBACK_MODEL摘要模型与重试模型OMX_SPARKSHELL_MODEL_INSTRUCTIONS_FILE覆盖打包的摘要指令默认templates/model-instructions/sparkshell-lightweight-AGENTS.mdOMX_SPARKSHELL_SUMMARY_TIMEOUT_MS本地 API 摘要超时OMX_NATIVE_AUTO_FETCH/OMX_NATIVE_MANIFEST_URL/OMX_NATIVE_RELEASE_BASE_URL/OMX_NATIVE_CACHE_DIR控制水合开关、清单地址、发布基址、缓存目录OMX_SPARKSHELL_CACHE_DIR/OMX_TEAM_STATE_ROOTpane 缓存目录与团队状态根目录v0.9.1 热修复本地化冒烟水合资产值得注意的是官方将v0.9.0标记为历史上红red的版本——packed-install 冒烟水合热修复在该 tag 之后才落地因此干净的超替superseding版本是v0.9.1见 docs/release-notes-0.9.1.md。该热修复把冒烟流程中的水合资产本地化到测试工作区不再依赖只在源码 checkout 布局下才有效的路径对应当前仓库的 src/scripts/smoke-packed-install.ts。历史记录建议的发布口径是v0.9.0保持历史红v0.9.1是携带 packed-install 冒烟水合热修复的干净超替版本。CI 与构建验证Rust 路径成为一等公民0.9.0让 CI 更直接地验证 Rust 路径与仓库根目录 Cargo.toml 下的 workspace 对应完整构建 lane 显式配置 Rust 工具链cargo fmt --all --check格式门禁cargo clippy --workspace --all-targets -- -D warnings以 warning 为错误的全 workspace 静态检查build:full在 workflow 中直接验证并与纯 TS 构建TS-only build明确区分release 说明里的d12e5f4提交同时补了build:full及文档发布工作流新增packed install 冒烟门禁559089f。这保证了npm 安装保持简单同时仍交付经过验证的跨平台原生助手这一目标。升级指南与配套打磨升级操作使用project-scoped OMX 安装的用户需要重跑omx setup --force --scope projectomx explore与omx sparkshell的 packaged 安装在没有显式二进制覆盖或 repo-local 产物时会依赖Release asset 水合请保证安装环境可访问发布资产源再次强调npm pack不会携带 staged 原生二进制原生资产通过 native-asset 工作流消费。0.9.0 同期打磨项除 Spark 主线外dev还收编了一批让版本更完整的配套改进均有对应 PR 编号见发布说明worker 邮箱/触发措辞#805提示 worker 在回复后继续汇报进度并执行而不是停止默认模型解析集中化#787把 OMX 默认模型解析收敛到统一位置对应 src/config/models.ts 的模型解析体系本地帮助路由清理#786ask与hud的嵌套帮助路由整理团队运行时生命周期与清理加固#785Windows Codex 命令 shim 探测修复#793团队 worker 的 aspect-task 分发修复#789生成类 aspect 任务在 worker 间的分配HUD 分支/配置加载加固#788关联 issue 还包括 linked Ralph 与默认团队运行的生命周期配置持久化#744、团队清理策略加固#745、团队策略/治理拆分#746等后续项。结语一条受限、可预测、可审计的原生快速路径回看0.9.0Spark Initiative 的核心方法论非常清晰用 Rust 原生侧车承接高频、机械、只读的 shell 取证工作把是否值得动用模型交给行数阈值与预算控制把是否安全交给白名单、环境清洗与进程护栏把是否可观测交给 JSON 报告、缓存哈希与团队诊断。omx explore作为默认只读入口负责仓库发现omx sparkshell作为显式操作者侧车负责 shell 原生取证与 tmux pane 摘要两者通过 native-release-manifest 完成跨平台分发并在后续版本中收敛为以 sparkshell 为主的单一原生取证面。对于想要在团队协同场景中少看全量日志、只看变化与结论的操作者这套工作流直接可落地omx sparkshell --json --since-last --tmux-pane pane-id就是它的最小实战范式。【免费下载链接】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),仅供参考