ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

OpenRig v0.5.2 发布详解:crash-cart 舰队恢复指挥器与测试驱动的可靠性修复

OpenRig v0.5.2 发布详解:crash-cart 舰队恢复指挥器与测试驱动的可靠性修复 人工智能AI Agent多智能体Agent 编排代码智能体CLI【免费下载链接】openrigMulti-agent harness that runs Claude Code and Codex together as one system项目地址https://gitcode.com/GitHub_Trending/op/openrig点击查看免费下载导读OpenRig v0.5.2 是 v0.5.1 引入的测试系统第一次真正投入实战的版本本窗口内的可靠性修复全部由驱动真实产品、模拟真人操作命令的场景scenario发现并验证。本版本的绝对头条是crash-cart 舰队恢复指挥器fleet-restore conductor——在守护进程daemon死亡时只需输入裸命令rig即可进入一个诚实可信的控制台按一次 Enter 就能以内核优先的顺序恢复整个舰队、收养任何幸存的 tmux 面板且绝不覆盖它们并以一次按键走完每个席位seat的精确修复路径。本文将以该发布说明为骨架结合仓库源码逐项展开讲解各功能背后的实现机理、行为语义与兼容性边界并如实列出官方背书记载的已知限制。版本定位让测试系统为自己正名v0.5.2 的发布摘要只有一句话Test system exercises for real; crash-cart conductor; reliability fixes。它意味着两层事实v0.5.1 的测试系统首次产生闭环价值。v0.5.1 为产品引入了一套文本化场景scenario格式与执行器runner场景通过真人使用的同一条命令驱动真实产品端到端运行从而在没有人工逐项检查的情况下证明产品自身行为。v0.5.2 的所有可靠性修复正是通过这套测试系统被发现并验证的——测试系统在第一个完整周期就证明了自身价值。单线谱系one lineage, no divergencev0.5.2 完整包含 v0.5.1 的全部内容不存在分支漂移。在迁移层面本版本没有新增迁移。v0.5.1 已经发布了迁移 068-071其中 068 与 071 是一对匹配的 CREATE / DROP-IF-EXISTS对于任何 v0.5.0→v0.5.1 升级者而言净效果为无操作v0.5.2 停留在迁移 071。CLI 方面相对 v0.5.1没有任何命令或 flag 被移除或重命名API 表面完整保留。头条crash-cart 舰队恢复指挥器这是 v0.5.2 的核心交付。一句话概括其体验在守护进程已死的环境下输入裸命令rig得到的是一个诚实的控制台而不是一条晦涩报错或一次静默失败。交互流程与行为承诺发布说明给出的行为承诺可拆解为五条诚实控制台truthful cockpit不再出现cryptic error或silent failure系统明确告诉你守护进程处于何种状态。一次 Enter 恢复舰队按一次回车恢复以kernel-first内核优先顺序进行——先恢复作为监督者的 kernel rig再恢复其余 rigv1 为顺序执行。收养幸存 tmux 面板adopt, never clobber守护进程死亡但 tmux 面板存活时指挥器会收养adopt这些幸存会话绝不覆盖clobber它们。逐席位的精确修复路径每个需要操作员介入的席位seat都被给出座位 精确需求seat exact need的检修行triage row可用一次按键逐一走完。取消是诚实的cancel is honest取消采用stop-before-next-rig语义——正在飞行中的 rig 会运行到它自己的结果为止尚未开始的 rig 一律记为not_attempted未被尝试绝不静默丢弃。破坏性恢复仅在被收养无法成功时才提供只有收养分支确实无法达成时才向操作员提供破坏性快照恢复路径。发布说明同时记录了工程门槛该功能经历了十个构建轮次build rounds、四道独立门禁independent gates、以及非作者执行的 QA 门测试non-author QA door test。源码骨架RestoreConductor 与四个原子构件从源码看该功能由 daemon 侧指挥器核心 与 CLI 侧的只读裁决命令 共同构成。指挥器核心Atom BRestoreConductor类通过依赖注入的restoreRig组合已发布的逐 rig 恢复逻辑findLatestRestoreUsable→RestoreOrchestrator.restore它本身不重新编写任何恢复逻辑。关键设计点最佳努力best-effort单个 rig 的失败绝不会让整个舰队停下来catch分支将结果记为failed后继续。停止语义在每个 rig 的边界轮询isCancelled被取消而未开始的 rig 携带reason: cancelled before this rig started (stop-before-next-rig)与remediation: re-run the fleet restore to attempt this rig。进度流每个 rig 完成即通过onRigDone回调发射结果路由层可以据此更新一个可轮询的汇总rollup而无需阻塞到全部完成。逐 rig 的闭合结果并集closed unionPerRigOutcome只有四个取值——fully_restored、partially_restored、failed、not_attempted。其中not_attempted是一等公民first-class永远不会被折叠进failed——这是诚实语义的代码级落点一个指挥器没来得及处理的 rig无可用快照或已取消会被如实标记并附上原因与补救方法而不是用一个模糊的失败糊弄过去。内核优先排序R2listRigsInKernelFirstOrder从宿主上的全部非归档 rig 中挑出名称为kernel的 rig 置于序列首位其余按listRigs顺序跟随若不存在 kernel rig则全部 rig 按原序恢复、且没有任何 rig 被标记为 kernel诚实绝不虚构。幸存面板收养分支Amendment 2这一分支解决了一个表面矛盾——对于仅守护进程崩溃、面板幸存的场景restore()按设计会以 409rig_not_stopped失败关闭fail-closed而验收要求可恢复的席位必须回到自己的面板中。解法是收养对每个存活会话调用已发布的ClaimService.reconcileSession即rig reconcile-session的先例进行无启动收养仅触碰会话状态bindings/sessions/events绝不触碰队列状态然后对剩余席位调用已发布的launchNodeSubset做逐席位恢复验证。收养发现空结果探测说活着但实际已死时会诚实地返回not_attempted并建议重新运行走快照恢复路径。舰队汇总Atom CaggregateFleetRollup是纯聚合——四个闭合并集键全部初始化计数attention_required是各 rig 检修行的并集视图a view, not a parallel recordderiveFleetVerdict则是从计数派生的判定函数all_fully_restored/all_failed/none_attempted/mixed任何舰队级结论都从不落库存储避免存储的结论与逐 rig 事实漂移。检修行生成R5attentionRowsFromNodes只对attention_required、awaiting-decision、failed三种节点生成检修行运行中/已恢复节点被排除对awaiting-decision节点会原样保留已发布编排器携带的精确错误与修复命令例如具体的--fresh logicalId命令绝不虚构需求。CLI 侧只读裁决 结构化 JSON按发布说明的边界R10/Boundariesv1 不新增任何公开 CLI 动词——没有restore-fleet或cancel-fleetTUI 通过 daemon 客户端直接驱动 daemon 侧的批量路由。CLI 侧的rig crash-cart --json只发射只读裁决输出一条 JSON 三态检测器裁决up/down/unverified若 DOWN发现信息discovery即使失败关闭fail-closed也输出结构化 JSON绝不只靠退出码表达。退出码只是提示state up ? 0 : 1JSON 才是契约。该命令对openrig/daemon/crash-cart窄子路径做懒加载导入调用时才加载rig 启动与其他动词绝不加载 daemon 模块组合已测试的 emit/detector/read 核心。窄表面定义见 crash-cart-surface.ts仅导出 discovery、detect、probes、emit 四组杜绝意外公开 API。探测器probeHealthz对 daemon/healthz做带超时默认 700ms的探测2xx →answered非 2xx他方占用→not-openrig见 crash-cart-probes.ts。测试验证仓库中对应的测试覆盖了指挥器全链路crash-cart-conductor.test.ts指挥器核心、crash-cart-probes.test.ts探测器、crash-cart-emit.test.ts发射、crash-cart-load.test.ts发现加载、crash-cart-route.test.ts路由、crash-cart-readmodel.test.ts读模型、crash-cart-guard.test.ts护栏、crash-cart-copy-read.test.ts只读复制、crash-cart-detect.test.ts检测等共同构成十轮构建 四道独立门禁 非作者 QA的工程证据链。可靠性修复经测试系统验证守护进程事件循环在负载下不再挂起发布说明明确A class of daemon event-loop freeze under load is fixed and measured——若你的守护进程在舰队级活动下变得无响应正是这一类问题。对应的监控与修复证据包括仓库中的event-loop-monitor、event-loop-health-server、daemon-lifecycle-event-loop.test.ts、event-loop-health-server.test.ts等测试位于 daemon/src 与 daemon/test。无人值守的 Claude 席位交接当一个 Claude 席位需要交接compaction、会话边界、显式交接请求时离席席位现在自动写入 recap纪要并提交自己的数据包packet接任席位带着 recap 接手而不是冷启动。该能力端到端经过门测试door-proven end-to-end。代码侧可参考 claim-service.ts交接的会话声明逻辑、迁移021_seat_handover_observability、060_occupant_tenures、063_occupant_generation_stamps交接可观测性与任期数据以及claude-resume.ts、codex-resume.ts恢复数据包读写等实现。rig policy诚实处理对抗性输入畸形或恶意的策略policy输入现在产生诚实的结构化错误而不是静默失败或意外行为。该修复经历了三轮评审three review rounds。对应实现与验证见策略解析/校验相关模块及policy.test.ts、permission-policy-r2-adversarial.test.ts对抗性输入测试等。跨主机消息携带来源机器标识跨主机发送的消息现在包含其来源机器machine of origin使多主机协调在接收端可正确解读。该行为通过门测试端到端强制enforced end-to-end via door tests。从 v0.5.1 起该字段即为消息的一等属性machine-of-origin on messagesv0.5.2 以门测试把接收端可读固化下来。相关实现可参考 daemon 侧消息路由、跨主机 HTTP 传输与cross-host-http.test.ts、cross-host-executor.test.ts等测试。Codex 模型配置漂移检测器新增一类此前会被悄然忽视的Codex model-config drift模型配置漂移检测器落地时即捕获了真实案例Caught real cases on landing。结合 codex-runtime-adapter.ts 与 codex-resume.ts 等适配器实现可看到模型配置在 Codex 运行时中的读取路径漂移检测保证席位实际运行的模型配置与预期来自 agent spec一致避免配置被悄悄改写却无人知晓的静默故障。测试完整性Test-integrity工作本版本在测试基础设施上做了三条硬约束脏树拒绝运行测试运行器拒绝在未提交dirty tree的工作区上运行——一次绿色运行意味着绿色源码而不是碰巧未提交的状态。封闭测试根hermetic test roots测试根目录彼此隔离避免交叉污染。隔离易碎夹具flaky fixtures isolated把不稳定的测试夹具单独隔离处理。这三条与 v0.5.1 建立的场景驱动真实产品体系一起构成发布流程的质量底线。代码中的治理Governance in code计划锁显式化计划锁plan locks是在你主动请求时才选定的而不是从环境状态ambient state隐式继承——杜绝明明没锁却被当作已锁的歧义。Wake 改为 opt-in唤醒行为默认为关闭只有明确选择才启用。这属于产品内治理语义的收紧把默认继承改为显式选择使可审计性与可预测性更强。容器 tar 文件挂起从源头消灭一类容器 tar 文件挂起问题**dead by construction——不是绕过去worked around而是封死了让它成为可能的那条接缝seam**。也就是说修复不是打补丁而是在结构上让该挂起类不再可能发生。相关工程背景可参考 docker/testbed容器测试床脚手架v0.5.1 引入、本轮继续演进。已知限制5.3 backlog发布说明诚实记账ledgered honestly了下一周期要修的问题并明确命名了尚未修复的内容Reply-hint self-qualify部分跨主机消息上的 reply-hint 以机器 IDmachine-ID自我寻址而非注册主机名直接使用该 reply-hint 可能报 no registered host X。规避方法从rig host list取注册主机名替换。修复排期 5.3。rig queue handoff --summary自相矛盾命令发出警告但该字段在其自身输出上却不可设置unsettable。修复排期 5.3。rig send --verify不检测 staged-unsent对 Claude 席位的多行发送未检测已暂存但未发出多行发送可能静默暂存。修复排期 5.3。全屏推销下的 Claude 转录变薄上游全屏推销会写入tui:fullscreen一次被接受的提示就可能让整个舰队翻转re-flip。修复 固定pin 预防排期 5.3。测试运行器可在未构建树上静默跳过发布仪式已采用最终门禁规则构建 CLI 断言零跳过产品侧修复排期 5.3。seat-handover模型保真度的真实 Codex 端到端在 main 上同样失败环境与产品的差异尚未根因隔离。隔离修复排期 5.3。另有少量内部债务项记账待维护internal debt items ledgered for maintenance。行为与兼容性迁移Migrations本版本无新增迁移v0.5.1 已交付 068-071068 CREATE 071 DROP-IF-EXISTS 成对对 v0.5.0→v0.5.1 升级者净无操作v0.5.2 停留在 071。API 表面完整保留相对 v0.5.1 无任何 CLI 命令或 flag 移除/重命名。单线谱系v0.5.2 完整包含 v0.5.1无分歧。延伸阅读CHANGELOG.md 中的[0.5.2]条目含 Summary For Installing Agents包版本自 0.5.1 提升、Node engines 不变、无新增捆绑技能。上一版本发布说明测试系统 可靠性修复是理解 v0.5.2 测试驱动方法论的上下文。发布说明目录 与 发布模板了解本仓库发布文档的格式约定。核心源码crash-cart-conductor.ts、crash-cart.ts 命令、crash-cart-surface.ts。赞分享人工智能AI Agent多智能体Agent 编排代码智能体CLI【免费下载链接】openrigMulti-agent harness that runs Claude Code and Codex together as one system项目地址https://gitcode.com/GitHub_Trending/op/openrig点击查看免费下载相关推荐Mosquitto 1.4.9 发布详解一个 bugfix 版本背后的 MQTT 可靠性修复Mosquitto 1.4.9 发布详解一个 bugfix 版本背后的 MQTT 可靠性修复 本指南基于 Mosquitto 官方 1.4.9 发布公告 w物联网消息队列后端网络/通信Mosquitto 2.0.21 发布详解安全修复、Broker 可靠性改进与 retain_expiry_interval 新配置Mosquitto 2.0.21 发布详解安全修复、Broker 可靠性改进与 retain_expiry_interval 新配置 Eclipse Mosq后端消息队列消息路由Availup备份恢复测试验证数据可靠性Availup备份恢复测试验证数据可靠性 你是否曾因数据丢失而导致服务中断是否担心节点升级过程中配置文件损坏Availup作为Avail轻客户端的部署工具上一篇如何用OBS RTSP服务器插件实现零延迟本地直播完整教程指南下一篇BetterNCM Installer3分钟搞定网易云插件安装的终极神器创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表