OpenClaw Auto QA 实战指南:多子系统并行、根因优先的全仓库自主质量活动编排

发布时间:2026/9/13 15:39:17
OpenClaw Auto QA 实战指南:多子系统并行、根因优先的全仓库自主质量活动编排 OpenClaw Auto QA 实战指南多子系统并行、根因优先的全仓库自主质量活动编排【免费下载链接】openclawThe AI that really does things. Any OS. Any Platform. The lobster way. 项目地址: https://gitcode.com/GitHub_Trending/cl/openclaw本文基于 .agents/skills/auto-qa/SKILL.md 及其配套参考文档深入讲解 OpenClaw 仓库中一套面向全产品范围的自主 QA 与线上/压力live/stress活动编排方案。你将理解如何设定可量化的质量目标、在多条独立子系统工作线上并行排查、以干净根因重构而非快速补丁的方式修复真实缺陷并通过可恢复的证据报告与编号账本管理从假设到合入主干的完整生命周期。技能定位一场持续追踪 current-main的产品质量战役OpenClaw 的auto-qa技能Agent Skill定义见 SKILL.md不是一次性的测试执行而是一套可持续运行、可恢复、证据驱动的质量战役编排规范。其核心立场可以概括为三句话把评审发现当作假设hypothesis任何外部结论都必须先在当前main上独立复现才能成为候选缺陷。把通过的测试当作证据但只当作针对其真实覆盖目标的证据绿测试不等于缺陷已修复更不等于架构已正确。把合并当作完成的唯一标志只有当权威仓库canonical repository确认改动真正落地后才计入战役成果。配套的技能元数据agents/openai.yaml将其定位为持续验证 OpenClaw 真实缺陷默认提示词即要求在至少十条独立子系统工作线上审计当前 main、复现真实缺陷、维护经过验证的账本并且只落地经授权的低风险修复。这意味着该技能面向的是能够自主并行执行、拥有仓库写入权限或经授权合并的自动化 Agent 编排者其输出物是一份持续更新的 Markdown 报告与编号账本。设定战役目标以已合并的根因修复为计数单位技能明确规定了战役campaign的默认与变更规则默认目标100 个互不相同、独立验证、真实合入主干的根因修复root-cause fixes除非操作者显式指定其他数量。计数口径严格计入数量的是被打破的不变量broken invariants而不是 PR 数量、症状数量、提案补丁、技能更新或单纯通过的测试。目标变更就地更新若操作者在战役进行中调整目标应就地更新既有报告、编号账本、进度分母与实时状态保留所有已验证的成果绝不重置调查或宣称未完成的目标已达。排除项涉及安全敏感、持久化状态、协议、公开契约或其他需要评审的工作在相应负责人明确授权并验证落地之前不计入可接受数量。这一节传达的工程纪律是质量活动的成功度量必须锚定在真实修复落地上而非过程指标提交数、测试数防止团队被症状级修补或表面绿测试误导。首选干净重构根因修复的架构判断标准技能用一整节强调clean refactors over quick fixes这是整个战役的修复哲学先定位所有权边界在动手前识别被破坏的 ownership boundary、抽象、状态迁移或依赖契约对比 canonical owner、调用方callers、被调方callees与兄弟路径sibling paths选择能让共享不变量shared invariant清晰可靠的设计。把决策与权威状态收敛到真实归属方通过既有生命周期传播准备好的事实修复所有受影响的兄弟路径删除不再需要的废弃分支、重复策略、死代码辅助函数与过时抽象。拒绝症状掩盖式方案明确禁止 symptom-masking guards症状掩盖守卫、一次性特例、观察示例字面量、平行代码路径、多余缓存、回退栈、兼容垫片以及只为让某个窄复现通过的测试。更小的改动并不等于更安全——如果它保留了根因或让架构更难理解。保护已发布的公开契约若干净重构会影响安全、持久化状态、公开配置、插件 SDK 兼容性、协议或产品决策则标记为待维护者评审而不是用战术补丁替代。独立评审时强制自问这个改动是不是最干净且边界恰当的根因解决方案绿测试、最小 diff 与看似合理的局部修复都不足以替代架构判断。这段哲学与配套的$autoreview技能一脉相承——autoreview/SKILL.md 提供的正是独立的结构化评审通道要求评审者比较 owner 边界与兄弟实现确认这是最佳的干净根因方案即使在测试通过时也要拒绝快速修复残留。以移动中的源码为锚点main 的权威性与工作树卫生技能要求Start with the moving source即一切调查必须锚定在真实的权威 main 分支上先读文档完整阅读根目录 AGENTS.md 以及所涉 lane 的 scoped 指南读取当前版本的专项技能而非复刻过时指令。例如$openclaw-repair-sweep缺陷接受与重复处理$openclaw-testing测试与 CI 的选择见 openclaw-testing/SKILL.md$openclaw-qa-testingQA Lab、场景目录与真实 provider lane见 openclaw-qa-testing/SKILL.md$control-ui-e2e浏览器与 Control UI 证据$crabbox远程、Docker、打包、跨平台与线上证据$autoreview发布/落地前的新鲜独立评审$openclaw-pr-maintainer维护者侧的 GitHub 动作。识别真实的 canonicalmain检出桌面任务或链接 worktree 可能处于 detachedHEAD。必须用git -C verified-canonical-main-checkout status -sb核对并记录git -C verified-canonical-main-checkout rev-parse HEAD。网络刷新权唯一化只有编排者orchestrator可以刷新origin/main并记录完整 SHA且要在检查源码前证明 canonical 检出与之匹配。每个只读评审者都应拿到绝对干净的检出或自有的精确 HEAD worktree。在检查前与验收结果前都必须同时满足git -C worker-checkout rev-parse HEAD与记录一致git --no-optional-locks -C worker-checkout status --porcelainv1 --untracked-filesall --ignore-submodulesnone输出为空。也可以直接从冻结的 Git 对象读取不可变文件。任一校验失败整个 wave 条目即作废。有意改动的实现 worktree 必须与只读的冻结源码评审分离离线工作时须披露远端新鲜度未验证绝不 pull、rebase 或切换他人检出。每个实现任务一个 worktree一次一个新鲜的codex/worktree评审 worker 保持只读共享的origin/main刷新全部串行经过编排者PR 评审/准备/合入前暂停 worker fetch合入成功后再次 fetch 并证明记录的合并提交是所取 ref 的祖先然后才广播该完整不可变 SHA 并恢复 worker。初始化报告与账本初始化或恢复用户要求的 Markdown 报告与编号账本在验收发现前先读 references/campaign-evidence.md 与 references/evidence-ledger.md。目标上调时更新活动分母与既有编号账本不抹除历史时间戳进度。这一整套 SHA 校验、干净工作树与单刷新协调者机制本质上是把可复现性作为质量活动的最高优先级——未冻结的源码与脏检出无法产生可信证据。保持至少十条 lane 并行子系统工作线地图在独立 worker 执行被授权的情况下战役全程必须保持至少十条实质不同的子系统调查lane在途完成的、失败的或过期的 worker 要及时替换网络授权单独决定某个 lane 是否可以 fetch、调用外部托管模型或联系 provider但它不禁止授权本地子代理。若独立 worker 不可用或被禁止应将并发要求如实记录为 blocked而不是声称串行评审是并发的。起始地图见 references/subsystem-lanes.md其定义的 12 条默认 lane 包括#Lane主要调查面源码起点1CLI 安装与修复src/cli、src/commands、onboarding、非交互安装、doctor、配置与升级行为2Gateway HTTPsrc/gateway、健康/就绪、路由归属、鉴权、OpenAI 兼容请求、错误响应与流式3Gateway 传输WebSocket 协议、连接作用域、订阅、重连、取消、超时与事件投递4OpenAI providerprovider 归属的发现、规范openai/*模型引用、凭据解析、工具 schema、文件/图片输入与真实流式响应5插件生命周期src/plugins、extensions、安装记录、manifest/catalog、打包的 Git/npm 安装、更新、卸载与重启边界6Control UIui、构建产物、网关连接、导航、浏览器错误、设置、会话渲染与重连7QA Labqa/scenarios/index.yaml、场景 YAML、extensions/qa-lab、extensions/qa-channel、provider 模式、非零场景计数、超时与产物8Agent 会话src/agents、转录顺序、工具执行、模型路由、压缩、中止、会话状态、隔离派生与父/子完成9调度与投递cron/调度归属、定时器、去重、重试、channel 目标、生命周期与可观察投递10原生与可移植性apps、macOS/iOS/Android 前置条件、签名、模拟器/设备可用性、Linux/Windows 路径与托管 CI 覆盖11渠道适配器src/channels与传输属主插件、原生回调信封、提及、媒体限制、线程目标与可用测试凭据12打包与分发包 manifest、dist 导出、生成产物、安装器命令、Docker、捆绑插件属主与实际安装/更新流worker 管理纪律优先使用一等子代理代理槽耗尽时使用有界codex exec --sandbox read-only --ephemeral评审先用codex exec --help确认支持的参数。CLI worker 必须挂在真正存活的父会话或持久 supervisor 下——由立即退出的 shell 启动的后台子进程不算活跃 worker用ps -p pid-list独立核对精确子 PID 与命令身份并记录观测时间。每个 worker 都要拿到绝对验证检出、初始与最终精确 SHA 与干净内容守卫、冻结 SHA、单一子系统及其 scoped 指南、有界时长与所需证据形态。运行中、成功、失败、超时与过期守卫的 worker 要分别记录。资源观测在 wave 之间观察 CPU、内存压力、磁盘、开放端口、实际 worker 数与网关健康按机器与授权负载伸缩而不是机械地启动 64 个 worker 或把短暂的 load-average 尖峰视为失败。Testbox 租约上每个远程证明串行执行租约有活动命令时绝不回收、同步或启动另一条命令。证明真实产品行为live proof 的路由规则技能强调Prove actual product behavior在调用 provider、私有 QA 构建、远程租约、打包安装或原生应用前必须先读 references/live-proof-routing.md。核心规则包括隔离运行环境使用独立的战役状态与空闲的 localhost 端口启动开发网关绝不停止、重启、重配置、迁移或绑定操作者正在运行的网关、应用、设备、状态目录或默认网关端口。源码信任分级执行前先分类源码信任度不在本地或注入了凭据的机器上执行不可信贡献者的脚本、钩子、配置、测试或包安装。凭据纪律只通过经批准的 secret-backed 工作流使用现有服务账号或 provider 凭据绝不打印、记录、提交、echo、导出到不可信 worker 或把凭据放进测试产物。OpenAI 主张的证明链先验证网关真实配置的agents.list、所选存在的 agent、规范的openai/model与真实模型响应同时证明交付的 model-final 路径与单独持久化的 transcript/会话两条路径——一条路由通过不能证明另一条。不可用的 provider、未知 agent、mock、跳过的测试、回退响应或旧 HEAD 都不是 live proof。UI 证据的视觉核验检查实际渲染的 Control UI 与截图内容即使浏览器导航、HTTP 状态或截图命令成功只要页面或截图出现GatewayRequestError、UNKNOWN_AGENT或等价网关错误就拒绝该证据。场景计数规则QA 场景 ID 从当前 qa/scenarios/index.yaml 与场景 YAML 派生检查实际 harness 与生成的 summary只有当请求的运行报告非零总数、零失败且模型/provider 模式/相关行为精确匹配时才计场景。子代理扇出上限单个 live 子代理扇出场景在启动后限 780 秒分别验证 setup、超时恢复、原始父进程、子进程完成与最终非零场景结果。打包与插件缺陷必须运行真实的当前打包与用户安装/更新路径单元测试不能证明构建产物、npm 包、Docker 镜像或 Git 插件。移动端范围诚实iOS、Android、macOS 只在当前主机/设备/模拟器/签名身份/仿真器/托管证明实际支持的操作上测试前置条件不可用时记录为不可用而不是伪造移动或 UI 覆盖。压力与浸泡测试有界记录不可变网关源码、属主 PID、精确启动时间、成功/失败/跳过数与实际完成时间已在进行中的战役属主 soak 保持在其原始源码上绝不重启也不可在未实际经过 10 小时前宣称 10 小时 soak 完成。配套的 openclaw-qa-testing/SKILL.md 给出了具体的 QA Lab 执行命令作为支撑例如常规 live 套件pnpm openclaw qa suite \ --provider-mode live-frontier \ --output-dir .artifacts/qa-e2e/run-all-live-frontier-tag产物输出到仓库相对路径.artifacts/qa-e2e/...包括qa-suite-summary.json与qa-suite-report.md主运行器位于 extensions/qa-lab/src/suite.tsQA Lab 服务器位于extensions/qa-lab/src/lab-server.ts子网关 harness 位于extensions/qa-lab/src/gateway-child.ts合成渠道位于 extensions/qa-channel。需要特别注意的是标准pnpm build会刻意排除私有 QA 插件要在源码检出中运行 QA 或显式OPENCLAW_BUILD_PRIVATE_QA1 pnpm build。同样来自该技能的字符评估character-eval示例pnpm openclaw qa character-eval \ --output-dir .artifacts/qa-e2e/character-eval-tag把发现转化为已验证修复九步落地流程技能定义了从发现到合入的完整九步流程去重对照当前账本、origin/main、当前打开与已合并的 GitHub 工作及兄弟根因去重一个被打破的不变量只计一次即使它产生多个模型/平台/路由/生命周期/UI 症状。独立复现实际复现当前 main 的用户路径映射入口点、canonical owner、调用方/被调方、兄弟实现、状态生命周期、既有回归、已发布契约与相关直接上游源码先解释当前设计为何失败再提出修复。隔离 worktree 中重构 canonical owner在同一连贯改动中修复所有受影响兄弟路径简化或移除有缺陷的抽象通过既有生命周期承载权威事实宁选最干净的恰当大小根因方案拒绝留下架构缺陷的守卫/特例/多余缓存/回退/垫片/窄测试。保护敏感契约保留公开配置、插件属主、网关协议、迁移、provider 契约、持久状态与外部依赖若正确根因修复会改变敏感契约或需要产品决策则准备给操作者评审不把该风险伪装成小的自主修复。补充真实回归覆盖覆盖原始复现、受影响兄弟、生命周期清理与未变的合法行为在精确候选 HEAD 上运行恰当范围的证明遵循$openclaw-testing的主机路由——可信的开发检查在本地跑远程证明需要有环境或源码隔离理由。检查实际退出状态、非零场景计数与产物。新鲜独立评审对最终完整重构运行一次$autoreview要求评审者比较 owner 边界与兄弟实现确认这是最佳干净根因方案测试通过时也要拒绝快速修复残留解决可验证的可操作发现实质改动或未解决关注点需复审机械的 HEAD 移动与机器人分数不要求额外评审轮次。发布前检查检查现有打开 PR、当前作者计数与实际仓库自动化阅读当前 labeler 与响应策略验证鉴权作者关联、仓库权限、账号类型、自动化分支前缀与实际覆盖标签只应用当前策略证明的豁免同一根因复用并修复既有候选 PR真实上限存在时先保留已评审 worktree、完成并落地既有已验证工作。创建聚焦 PR使用仓库真实模板包含 canonical cause、用户影响、冻结 HEAD、已完成证明与风险只使用仓库原生的scripts/pr评审、产物、准备与合并工作流做授权 main 落地。合并纪律仅当用户授权且canonical 根因重构被独立复现、低风险、独立评审、兼容当前 main、且有绿色的精确 HEAD 证明时才自主合并按属主与行为影响评估风险而不是按 diff 是否最小验证结果 canonical 合并 SHA 后再递增账本每个已验证落地立即报告给操作者附 PR URL 与一两句实际修复根因的描述不得批量、延后或把未合并 PR 宣称为已落地。技能同时列出了只准备、不自主合并的清单安全/鉴权改动SQLite 完整性、迁移、schema 或持久状态改动公开配置或插件 SDK 兼容性改动协议改动架构或产品决策宽泛高影响重构不确定诊断或证明待定/跳过/过期/冲突/失败的候选。有界低风险根因重构在显式授权下可自主落地敏感或不确定影响则必须标记为user review required并排除在接受计数之外。维护准确的战役状态报告与证据账本技能要求Maintain accurate campaign state战役全程持续更新报告而不是最后才写。两份关键参考文档分工明确references/campaign-evidence.md规定战役证据与计数规则战役头Campaign header记录用户批准的范围、当前修复目标、实际开始时间、请求的 soak 时长、当前不可变origin/mainSHA、授权落地策略、报告位置与机器负载预算记录负责串行远端 ref 更新的编排者每次落地后只有在证明合并提交被包含后才记录 post-merge 基线。审计 lane每个活跃 lane 记录subsystem、baseline_sha、worker、started_at、deadline、statusrunning/replacing/evidence-ready/rejected与evidence对每个 CLI 支撑的运行 lane 记录独立观测的存活子 PID、持久 supervisor/会话与观测时间打印的后台 PID、被丢弃的 supervisor、已完成的报告、计划的替换或STOPPED REF CHANGED响应都不是运行中 lane 的证据。冻结基线每个 worker wave 冻结一个基线canonical 与只读 worker 检出都用rev-parse HEAD 空status --porcelain双重验证worker 启动与报告验收前都要匹配 commit 与干净内容守卫原生 PR 准备/合并期间暂停 worker fetch由编排者独占origin/main。Bug 账本字段每个产品 bug 只有在全部字段被证明后才计数number、summary、baseline_sha、affected_owner_and_user_path、reproduction_before、observed、expected、independent_verification、root_cause、affected_callers_and_siblings、canonical_owner_refactor、regression_or_live_proof_after、exact_reviewed_head、exact_head_hosted_checks、pull_request、merge_commit、risk、status。要求证据证明修复消除了 canonical cause 而非仅症状记录哪些兄弟路径已检查、一起修复、哪些不受影响共享不变量只计一次持久化/迁移/鉴权/安全/SDK/协议/高影响架构等单独放在review-required节不计入合并计数。references/evidence-ledger.md规定账本维护规则在用户要求的报告中维护一个 Markdown 账本沿用既有编号绝不替换、重置或虚增运行中的战役。记录战役级事实当前目标与最小 soak 时长、精确origin/mainSHA 与刷新时间、单一刷新协调者、至少十条命名的不同活跃 lane、每个运行 CLI worker 的独立观测 PID/supervisor/检出守卫/观测时间、属主网关端口与隔离状态/健康/CPU/内存/负载/远端租约、真实 provider/agents.list/所选 agent 与模型不含凭据材料且分别记录 delivered-final 与 persisted-session 证据、soak 起止/经过时间/通过失败跳过计数、作者限制工作流与豁免证明。每个候选使用一个显式状态Hypothesis无独立复现、Reproduced已建立失败路径或聚焦回归、Fix validatedcanonical owner 根因重构通过用户路径/兄弟回归/独立评审/精确 HEAD 检查、Review required大/敏感/不确定/兼容性影响单独 PR 不计入、Merged精确托管检查通过、原生维护者合入成功、canonical main 包含合并 SHA、Rejected or duplicate记录真实原因与 canonical 根因不递增进度。每个已接受合并的记录模板number/target: distinct user-visible bug subsystem: canonical owner and affected user surface main baseline: full SHA root cause: repo-root source paths and current behavior canonical refactor: owner, shared invariant, affected callers and siblings before: actual failing user repro or regression after: exact passing product path and focused regression live proof: model, nonzero scenario/test counts, or exact packaging proof review: fresh independent review on final head CI: exact head and successful required run or check PR: canonical GitHub pull request URL merged main SHA: verified canonical full SHA risk: low; autonomous landing explicitly authorized拒绝清单不接受症状守卫、单边 workaround、兼容垫片、重复计数、纯工作流分发、排队 CI、旧 HEAD 成功、零执行场景的绿色 summary、mock 模型响应、含GatewayRequestError/UNKNOWN_AGENT的截图、因缺凭据跳过的测试或未经验证 canonical main 状态的 GitHub 合并请求计数在真实根因合并数处停止绝不向用户目标四舍五入。与配套技能体系的分工协作auto-qa是 OpenClaw 技能库中质量与交付体系的一员与之协同的还有$openclaw-qa-testing负责 QA Lab / qa-channel 场景的运行、调试、扩展与 live lane是 auto-qa 在QA 场景与真实 provider方向上的执行技能其done标准全套件绿、watch URL、通过/失败计数、产物路径与修复说明与 auto-qa 的证据要求互相印证。$openclaw-testing负责测试与 CI 的选择与诊断提供pnpm changed:lanes --json、pnpm check:changed、pnpm test path-or-filter、pnpm test:changed等本地命令与gh run系列 CI 排查命令是 auto-qa 中恰当范围证明的执行路由。$autoreview提供结构化独立评审默认 P0 阈值支持 P1–P3 扩展退出码 0/1/2 分别表示 scoped-clean、有发现/错误、范围不完整是 auto-qa 九步流程第 6 步新鲜独立评审的标准工具。$control-ui-e2e负责浏览器与 Control UI 证据对应 lane 6。$crabbox负责远程、Docker、打包、跨平台与 live 证明的租约管理对应 live-proof-routing 的远程证明串行化要求。$openclaw-pr-maintainer维护者侧 GitHub 动作labeler、合并豁免等对应九步流程第 7–8 步的发布前检查与合入工作流。实战落地建议将本技能落地到真实战役时建议按以下顺序操作初始化确定当前权威origin/main检出并冻结 SHA创建只读评审检出与独立实现 worktree初始化报告与编号账本写入战役头目标、开始时间、授权策略、机器预算。铺开 lane按 subsystem-lanes.md 的 12 条默认 lane 拆分至少十条调查面每 lane 一个只读 worker附精确 SHA 守卫、单一子系统范围与有界时长。证据纪律所有 live 证明走 live-proof-routing.md 的隔离与核验规则所有计数走 campaign-evidence 与 evidence-ledger 的字段与状态机。修复与合入对每个复现的根因执行九步流程优先干净重构强制新鲜 autoreview按授权策略自主合入或标记 user review required。持续恢复wave 之间观察资源并替换 worker每次落地后 fetchorigin/main、验证合并 SHA 为祖先、广播新冻结 SHA 并恢复 worker目标变更时就地更新分母保留历史进度。这套机制的核心价值在于用可验证的源码锚点、可审计的证据账本与可恢复的并行编排把自主质量活动从不可信的自动化脚本变成可持续累积真实产品修复的可信工程流程。对于希望在自己的仓库中复制该模式的团队重点不在于照搬 100 个修复的目标而在于其背后三件事以合并为唯一完成标志的计数哲学、以干净根因重构为唯一合格修复的评审标准、以及以冻结 SHA 与干净工作树为唯一证据基础的复现纪律。延伸阅读完整证据与计数规则见 campaign-evidence.md 与 evidence-ledger.mdlive 证明路由见 live-proof-routing.md子系统 lane 地图见 subsystem-lanes.md场景清单见 qa/scenarios/index.yamlQA Lab 运行器见 extensions/qa-lab/src/suite.ts。【免费下载链接】openclawThe AI that really does things. Any OS. Any Platform. The lobster way. 项目地址: https://gitcode.com/GitHub_Trending/cl/openclaw创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考