QA 报告
报告¶
qa-lab 从观察到的总线时间线导出 Markdown 协议报告。
报告应回答:
- 哪些有效
- 哪些失败
- 哪些仍被阻塞
- 哪些后续场景值得添加
要查看可用场景清单(在评估后续工作量或接入新传输时很有用),请运行 pnpm openclaw qa coverage(添加 --json 可获得机器可读输出)。当为受影响的代码行为或文件路径选择针对性证明时,请运行 pnpm openclaw qa coverage --match <query>。匹配报告会搜索场景元数据、文档引用、代码引用、覆盖 ID、插件和提供方要求,然后打印匹配的 qa suite --scenario ... 目标。生成的命令会保留已声明的通道驱动要求,并将驱动要求不同的场景分开。没有驱动要求时,非 QA 通道使用 live,qa-channel 保留其默认驱动。
每次 qa suite 运行都会为所选场景集写入顶层产物 qa-evidence.json、qa-suite-summary.json 和 qa-suite-report.md。声明了 execution.kind: vitest 或 execution.kind: playwright 的场景会运行匹配的测试路径,并另外写入每个场景的日志。声明了 execution.kind: script 的场景通过 node --import tsx 运行 execution.path 处的证据生成器(execution.args 中的 ${outputDir} 和 ${scenarioId} 会被展开);该生成器写入自己的 qa-evidence.json,其条目会导入套件输出,其产物路径相对于该生成器的 qa-evidence.json 进行解析。当通过 qa run --qa-profile 调用 qa suite 时,同一个 qa-evidence.json 还会包含所选分类体系类别的配置文件记分卡摘要。
运行时轴一致性报告会保留每个运行时记录的 pass、fail 或 skip 结果。运行时和传输失败会覆盖通过或跳过的结果;受控的工具错误仍可通过。当配对的运行时通过时,受跟踪的 known-harness-gap 跳过可以让场景保持通过,但被跳过的单元格仍标记为 skip。意外跳过以及两个运行时均跳过的配对仍会使一致性门禁失败。缺失的采集项标记为 missing。
计划实例与保留的观察结果¶
Schema v3 证据为每个计划场景实例赋予自己的身份。重复的场景名称在调度顺序中仍是独立实例。实例指向其选定的结果;null 结果表示未记录任何结果,而不是通过。
原生脚本尝试会保留子捆绑包及其原始实例 ID、选择指针以及确切生成器文件的收据。顶层结果描述外层计划场景;嵌套实例仍是可检查的子详情。子捆绑包独立运行时仍会报告自己的计划结果。外层尝试会单独记录其目录覆盖上限。记分卡和显式证明检查会与每个外层上限求交,而不会更改子行或断言。次要声明永远不会成为主要声明;空上限不会使任何子声明合格。没有上限的历史捆绑包保留其原始行为。
重试会保留原始观察结果和产物。选定的尝试控制有效报告计数和覆盖范围,而图库仍保留相应行以供检查。选择适用于整个尝试,而不是来自不同尝试的通过行的混合。独立诊断保持独立。完整证据和精简证据都保留出现身份、行绑定和产物收据;精简输出省略详细的执行上下文。外层重试会改变其保留的子捆绑包是否对有效证据做出贡献。它不会重写子级的本地选择或原始行。
读取器继续接受 schema v2 产物。历史行不会获得虚构的尝试、断言、运行时或包身份。除非生成器在拥有该观察结果的边界处记录,否则来源、包、协议和账户事实仍属未知。已准备的 Docker 候选收据标识候选清单和包;它并不证明安装或运行时行为。
显式证明要求¶
分类体系配置文件可以声明 proofRequirements,其中包含命名所有者、验收参考、必需或建议性义务、重试策略以及可接受的身份替代方案。每个替代方案仅指明其所需的来源、运行时、包、协议、账户或证明类别维度。一个绑定收据必须满足一个替代方案;来自无关观察结果的事实不能组合。selected-attempt 策略会排除非活动的外层尝试及其子捆绑包。all-recorded-attempts 在评估证明时会保留其断言。
必需的断言缺失或不完整时,仍视为不合格。冲突的通过/失败断言会保留两种结果。已知的身份不匹配视为过期;身份缺失或错误的证明类别属于证据不足,而非虚构的产品失败。建议性要求仍属诊断性质。没有显式声明的配置文件保留其现有行为:仅主要覆盖本身不会产生发布要求。
证据预览¶
QA Lab 证据图库使用可识别的文件后缀来选择图像、视频、JSON 或文本预览。即使其自由格式产物类别包含 gif 等媒体提示,.log 文件仍为文本。类别提示仍会对无扩展名文件和未知后缀进行分类;完整的类别标签会被保留。
qa confidence-report 将 productImpact 和 qaImpact 注解保留在各自的 Markdown 表格单元格中,并在显示时折叠空白。JSON 摘要会保留注解值,包括内部换行符。
对于 JSONL 重放通道,每份转录必须报告非负整数用户轮次计数,且两个运行时的漂移条目数和结果数须匹配。缺失或不匹配的证据被归类为 unknown,因此两种严格置信模式都会拒绝它。允许零轮次转录与完整重放轮次并存;没有重放用户轮次的报告仍保持 unknown。
将覆盖率输出视为发现辅助工具,而不是门禁替代;所选场景仍需要针对被测行为选择正确的 provider 模式、实时传输、Multipass、Testbox 或发布通道。有关记分卡上下文,请参阅 成熟度记分卡。
角色与风格评估¶
对于角色和风格检查,请在多个实时模型引用上运行同一场景,并生成一份经过评审的 Markdown 报告:
pnpm openclaw qa character-eval \
--model openai/gpt-5.6-luna,thinking=medium,fast \
--model openai/gpt-5.2,thinking=xhigh \
--model openai/gpt-5,thinking=xhigh \
--model anthropic/claude-opus-4-8,thinking=high \
--model anthropic/claude-sonnet-4-6,thinking=high \
--model zai/glm-5.1,thinking=high \
--model moonshot/kimi-k2.5,thinking=high \
--model google/gemini-3.1-pro-preview,thinking=high \
--judge-model openai/gpt-5.6-sol,thinking=xhigh,fast \
--judge-model anthropic/claude-opus-4-8,thinking=high \
--blind-judge-models \
--concurrency 16 \
--judge-concurrency 16
该命令运行本地 QA 网关子进程,而不是 Docker。角色评估场景应通过 SOUL.md 设置人设,然后运行普通用户轮次,例如聊天、工作区帮助和小文件任务。不应告知候选模型它正在被评估。该命令会保留每份完整对话记录,记录基本运行统计,然后在支持的情况下,要求评审模型以快速模式并启用 xhigh 推理,按自然度、氛围和幽默感对运行结果进行排名。在比较不同 provider 时使用 --blind-judge-models:评审提示仍会收到每份对话记录和运行状态,但候选引用会被替换为中性标签,例如 candidate-01;报告会在解析后将排名映射回真实引用。
候选运行默认使用 high 思考级别,GPT-5.6 Luna 使用 medium,支持该级别的旧版 OpenAI 评估引用使用 xhigh。可通过 --model provider/model,thinking=<level> 内联覆盖特定候选;内联选项还支持 fast、no-fast 和 fast=<bool>。--thinking <level> 仍用于设置全局回退,旧版 --model-thinking <provider/model=level> 形式保留以兼容。OpenAI 候选引用默认启用快速模式,以便在 provider 支持时使用优先处理。仅当希望强制为每个候选模型开启快速模式时,才传入 --fast。候选和评审耗时会记录在报告中用于基准分析,但评审提示会明确说明不要按速度排名。候选模型和评审模型运行的默认并发数均为 16。当 provider 限制或本地网关压力导致运行噪声过大时,请降低 --concurrency 或 --judge-concurrency。
当未传入候选 --model 时,角色评估默认使用 openai/gpt-5.6-luna、openai/gpt-5.2、openai/gpt-5、anthropic/claude-opus-4-8、anthropic/claude-sonnet-4-6、zai/glm-5.1、moonshot/kimi-k2.5 和 google/gemini-3.1-pro-preview。当未传入 --judge-model 时,评审模型默认为 openai/gpt-5.6-sol,thinking=xhigh,fast 和 anthropic/claude-opus-4-8,thinking=high。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/openclaw