OpenRig S6 效果验收:数据库路径、插件版本与 Recap 供给的权威性守卫(RED-first → GREEN)
发布时间:2026/9/30 8:35:46 锦皓数字建站
`)
人工智能AI Agent多智能体Agent 编排代码智能体CLI【免费下载链接】openrigMulti-agent harness that runs Claude Code and Codex together as one system项目地址https://gitcode.com/GitHub_Trending/op/openrig点击查看免费下载导读本文基于 .evidence/S6-GREEN-EFFECTS.md 及配套的 RED-first 对照记录完整拆解 OpenRig 第六轮迭代S6代号 Hermeticity Guards的三大契约效果隐式 SQLite 数据库不得逃逸 OPENRIG_HOME、捆绑插件与全局技能不得回滚已安装/未版本化的既有权威、recap-write必须能为缺失的 seat 目录完成供给。读者将同时获得可复现的验收命令、源码级守卫机制分析以及 RED→GREEN 的证据链方法论可直接用于自己项目的 TDD 效果验收。验收上下文一份效果收据的构成要素S6 的验收文档不是普通的功能说明而是一份严格的效果收据effect receipt它明确记录了四个层面的前提缺一不可Rebased base886c1f3d5def1e1140ef97b3739f81e178a62639标明所有效果都是在完成 rebase 之后的候选工作树上验证的RuntimeNodev22.23.1环境完整性Environment integrity构建与测试开始之前先跑包自检证明工作树自洽WORKTREE_SELF_CHECK_OK packages/daemon node_modules/openrig/daemon这一行意味着openrig/daemon解析到的就是当前工作树而非已发布的旧包——只有先证明这一点之后的任何包级测试结果才可信证明项一致性SPEC.md与IMPLEMENTATION-PRD.md中的授权证明项authored proof items在排除 PRD 允许的镜像横幅后逐字节一致PROOF_ITEMS_EXACT且 PRD 编辑前快照与编辑后哈希均可追溯编辑前.evidence/S6-IMPLEMENTATION-PRD-before.md哈希e48b8929...填充后工作树 PRD 哈希38a5a142...。从源码结构看这一先自证、再验证的次序正是仓库在 scripts/gate-lane-hermeticity.mjs 等门禁脚本中一贯坚持的 hermeticity 原则在验收流程中的体现任何测试结论都必须建立在被测对象确实是本工作树产物这个前提上。构建与聚焦测试收据复现命令文档给出了可直接复现的验收命令。首先是两个包构建均以退出码 0 结束npm run build -w packages/daemon npm run build -w packages/cli其次是 rebase 之后的聚焦测试集以单 worker 串行方式运行--maxWorkers1保证文件系统隔离测试不被并发干扰npx vitest run --maxWorkers1 \ packages/daemon/test/daemon-db-path.test.ts \ packages/daemon/test/plugin-vendor-service.test.ts \ packages/daemon/test/plugin-vendor-exec-mode.test.ts \ packages/cli/test/context-recap-write.test.ts结果Test Files 4 passed (4) Tests 37 passed (37)这 4 个测试文件恰好对应 S6 的三大契约领域数据库路径守卫、插件 vendoring/执行模式、recap 供给。它们与 .evidence/S6-RED-FIRST.md 中记录的失败基线一一对应形成完整的 RED→GREEN 闭环。契约效果一数据库逃逸守卫DB outside home效果描述S6 的第一项契约效果是一个真实的home/openrig.sqlite符号链接若指向OPENRIG_HOME之外的哨兵文件则在数据库打开之前就被拒绝错误信息同时包含realpath解析出的两个身份home 与目标且哨兵文件字节保持不变未被触碰或写入。与此同时一个真实显式的 split-path 数据库可以正常打开、写入表与行、以只读方式重新打开且 home 目录下不会生成任何本地数据库。源码级原理守卫的核心实现在 packages/daemon/src/daemon-db-path.ts入口为resolveDaemonDbPath(explicitDb, openrigHome)其行为可以概括为三条规则显式路径优先非空OPENRIG_DB直接原样返回——操作者对该路径负责这是唯一合法的 split-path 授权方式隐式路径锚定 home未设置OPENRIG_DB时数据库固定为join(openrigHome, openrig.sqlite)绝不允许退化为裸文件名见文件头注释D15——这正是 2026-08-07 事故的教训此前入口默认dbPath为裸的openrig.sqlite会相对进程 CWD 解析导致一个设置了隔离OPENRIG_HOME的守护进程仍可能打开共享舰队数据库打开前做包含性校验resolveForContainment递归解析路径组件realpathSync 逐级lstatSync/readlinkSync能正确处理尚不存在的尾部因为 SQLite 首次启动时路径往往还不存在并显式抛出 symlink 环错误随后isWithin(resolvedHome, resolvedDb)校验解析后的数据库是否仍位于解析后的 home 之内越界即抛错并附上两侧 realpath 身份。文件头注释还揭示了一个设计细节如果路径存在但realpath因EACCES/ENOTDIR无法确立其身份代码宁可抛错也不把未验证的路径当作权威——这是 fail-closed 哲学的典型体现。测试佐证packages/daemon/test/daemon-db-path.test.ts 中的用例与效果描述一一对应未设置OPENRIG_DB时路径必须是绝对、home 锚定的expect(p).toBe(/scratch/home/openrig.sqlite)并断言p.startsWith(/)两个不同OPENRIG_HOME的守护进程即使共享同一 CWD 也互不干扰空字符串视为未设置回落到 home 锚定默认symlink 逃逸场景在临时目录中创建home/openrig.sqlite → shared.sqlite断言resolveDaemonDbPath抛错、错误信息含两个 realpath 身份、哨兵内容shared fleet sentinel原封不动显式 split-path写入表与行、只读重开验证数据并断言home/openrig.sqlite不存在非目录组件不被误判为缺失尾部not-a-directory作为 home 时必须抛错。契约效果二无回滚守卫No canon rollback效果描述第二项契约效果针对插件 vendoring 与全局技能投影一个真实、未版本化的全局技能若符号链接指向共享 canon则保持字节一致、不获得任何 OpenRig 版本标记跳过日志会指名其外部权威一个真实、旧版本标记的投影会被更新到新技能字节与标记单元 pin 覆盖了已安装插件方向的旧/等/新三态与全局方向的旧/等/新三态。源码级原理核心实现在 packages/daemon/src/domain/plugin-vendor-service.ts职责注释开宗明义ensureVendored(name)在~/.openrig/plugins/name/缺失时从packages/daemon/assets/plugins/name/播种或仅在捆绑清单版本严格更新时推进等/新已安装字节保有权威。关键机制如下版本权威解析pluginVersion(pluginDir)同时读取.claude-plugin/plugin.json与.codex-plugin/plugin.json要求两处version为合法数字x.y.z且完全一致否则抛错——因为两个 harness 清单版本不一致意味着选择任意一份都会让另一运行时撒谎compareVersions逐段比较三个数字分量严格更新 pinensureVendored中若目标已有清单且捆绑版本低于已安装版本直接跳过leaving installed bytes unchanged版本相等时已安装字节保持权威仅对字节完全相同的文件做 mode 修复hash 比对后preserveMode即元数据调和而非回滚仅当捆绑版本严格更新时才执行整树替换全局技能投影ensureSkillGlobally投影目标目录以.openrig-vendor-version标记文件携带插件版本。若目标已存在但无标记包括符号链接指向共享 canon 的未版本化目录一律视为外部权威、跳过且不动字节若目标标记等/新于源版本也跳过仅对缺失目标或旧标记目标执行创建/升级并回写新版本标记hash-skip 幂等与 mode 保留写入前做 SHA-256 内容比对字节相同则跳过写入但仍修复权限位避免writeFileSync默认 mode 丢掉嵌套可执行脚本的 0755 位例如claude-compaction-restore/scripts/*.mjsv0 自动拉取边界attemptAutoFetch对 404、网络错误、超时全部静默容忍并回落到 vendored 副本v0 阶段成功路径只记日志、不落盘未来 marketplace 解包逻辑必须同样经由preserveMode写入。测试佐证该契约由两个测试文件共同验证packages/daemon/test/plugin-vendor-service.test.ts版本 pin 三态与全局投影三态与 packages/daemon/test/plugin-vendor-exec-mode.test.ts执行模式保留。而 RED 基线中旧捆绑插件覆盖了新安装字节等版本捆绑插件覆盖了不同安装字节捆绑全局投影覆盖未版本化 canon 目标新捆绑投影未推进目标版本标记旧捆绑投影覆盖了新标记目标这 5 项失败正是旧实现无条件覆盖留下的漏洞清单。契约效果三Recap 供给Recap provisioning效果描述第三项契约效果围绕 CLI 产品命令context recap-write在一个已存在 rig 但 seat 目录缺失的场景下命令会创建缺失的 seat 子树并写入RECAP.md随后第二次写入会把前任 recap 移入recap-superseded/而缺失的 rig、不安全的路径段、符号链接的拓扑命名空间都会在不创建目标的前提下失败。源码级原理命令实现位于 packages/cli/src/commands/context.ts其执行顺序本身就是一条安全链assertSafeTopologySegment(rig, opts.rig)与assertSafeTopologySegment(seat, opts.seat)对 rig/seat 两个段做路径段安全校验阻止..等逃逸写法进入路径解析rig 存在性检查rigs/rig目录不存在直接抛错rig directory ... does not exist — check --rig against the topology tree杜绝凭空创建 rig的隐式行为assertDestinationNamespaceContained校验最终目标rigs/rig/seats/seat/RECAP.md仍落在topologyRoot/rigs命名空间内配合topology.root配置解析ConfigStore的resolveWithSource(topology.root)供给式创建mkdirSync(seatDir, { recursive: true })——这是供给语义的落点只允许补齐 seat 子树不允许越权创建 rig合同校验为 advisoryvalidateRecapContract(content)的发现缺少decisions段、使用非规范UNVERIFIED:标记走 stderr 输出但写入照常落盘——边界写入不被散文形状阻塞命令注释明确the boundary is never blocked on prose shape写入经由唯一存储入口writeSeatRecap来自openrig/daemon/seat-recap-storedaemon 侧表面为 packages/daemon/src/seat-recap-store-surface.tssuperession 与 addressability gate 全部收敛到这一处随后listRecapChain报告被取代的前任数量。命令本身与 daemon 无关同trace一样是 daemon-independentseat 目录由 topologyCONFIG的topology.root解析得出这保证了即使守护进程未运行交接边界Q2 需求也能被写出。测试佐证packages/cli/test/context-recap-write.test.ts 覆盖有效 rig 但 seat 缺失时成功供给不安全段被拒绝RED 基线中不安全 seat 段到达路径解析而非被拒绝正是本契约修复的目标不存在的 rig 仍响亮失败且不留任何树以及既有的写/取代行为与 addressability gate 全部保持通过。RED-first 对照效果如何被证明S6 的验收文档不是孤立的 GREEN 结果它明确声明因果基线失败保留在 .evidence/S6-RED-FIRST.md。这是整个收据方法论的灵魂——GREEN 只有在能对照 RED 时才有意义DB 插件权威 RED6 项因果失败隐式数据库 symlink 逃逸解析 home 未抛错旧捆绑插件覆盖新安装字节等版本捆绑插件覆盖不同安装字节捆绑全局投影覆盖未版本化 canon 目标新捆绑投影未推进目标版本标记旧捆绑投影覆盖新标记目标。其中严格更新 pin在基线上反而通过因为旧实现是无条件覆盖——其反向测试恰好确立了缺失的权威规则Recap 供给 RED2 项因果失败 / 3 项保持通过首轮 CLI 运行因 daemon 包未构建而不确定npm run build -w packages/daemon完成后重跑有效 rig 但 seat 缺失时供给失败、不安全段未在路径解析前被拒绝而既有写/取代行为、缺失 rig 拒绝、addressability gate 三项保持通过。把 RED 基线与 GREEN 效果逐条对照可以看到 .evidence/S6-HERMETICITY-MINI-SPEC.md 中 5 条 mini-requirements 与 5 条 proof contract 项被逐一满足隐式 db 逃逸 RED 时失败、GREEN 时抛错普通 home 本地与显式 split-path 保持可用旧/等捆绑内容不可替换新/等已安装内容严格更新可升级旧标记安装旧/等全局投影不可覆盖新/等标记 canon未版本化既有目标字节不变缺失/旧标记目标可安装/升级recap-write在 rig 存在而 seat 缺失时成功、对不存在 rig 与不安全段仍拒绝且不创建。结论一份可复用的效果验收模板S6-GREEN-EFFECTS 提供了一套完整的权威性守卫验收范式可直接迁移到其他系统先证环境再测功能worktree 自检packages/daemon node_modules/openrig/daemon 证明项逐字节比对杜绝测错对象RED→GREEN 双向锚定GREEN 文档显式引用 RED 基线文件每个现在正确的行为都能追溯到曾经错误的对应项守卫写入源码与测试逃逸拒绝数据库 realpath 包含性校验、版本 pin严格更新才替换、供给而非越权只补 seat 不建 rig每一层都有源码常量与测试用例双保险失败必须响亮且无副作用错误信息携带两侧 realpath 身份哨兵字节不变拒绝路径不创建任何目标。对于运行 OpenRig 的团队本文给出的三条运维结论同样重要设置隔离的OPENRIG_HOME即可同时隔离数据库不再需要担心 CWD 上的共享openrig.sqlite插件与全局技能升级遵循严格更新语义旧版本永远不会静默回滚你的本地权威交接边界上的 recap 可以放心交给rig context recap-write即使 seat 目录从未被手动创建过。赞分享人工智能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 Hermeticity Guards 源码解析从 RED-first 失败清单到数据库、插件与 Recap 的三重密闭防护openrig Hermeticity Guards 源码解析从 RED first 失败清单到数据库、插件与 Recap 的三重密闭防护 openrig 是人工智能AI Agent多智能体Agent 编排代码智能体CLI3分钟快速掌握Windows平台微信QQ防撤回终极方案3分钟快速掌握Windows平台微信QQ防撤回终极方案 还在为错过重要消息而烦恼吗每次看到对方已撤回一条消息的提示那种错失关键信息的感觉确实令人沮丧。桌面应用即时通讯DPI Love社区贡献指南如何参与这个开源项目DPI Love社区贡献指南如何参与这个开源项目 DPI Love是一个简单实用的开源项目能够轻松帮助用户查找任何屏幕的DPI/PPI值。本指南将详细介绍如前端创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。