Skip to content

最佳实践

这页是 Agent QC 计划的编写检查表。它吸收 Agent UI 的 runtime-first 思路、Agent Skills 的渐进披露文档风格,以及 runtime CLI、TUI Agent、multi-channel gateway、background/browser agent、desktop client 和 eval system 中观察到的测试组织方式。

Agent QC 是标准协议,不是单一产品检查表。

从拥有的风险开始

先判断项目拥有什么风险,再选择命令。

好的写法:

这次改动触碰运行时权限边界和 TUI 审批表面,计划需要 contract-protocolruntime-e2eui-interaction 证据。

不好的写法:

这是 TypeScript 项目,所以 Vitest 就够了。

常见风险拥有者如下:

风险拥有者典型证明
Runtime命令 transcript、stream 事件、清理证明、状态快照
协议或 SDKschema diff、fake server transcript、生成客户端检查
工具或 MCP 网关声明、权限、进度、结果、恢复 transcript
UI/TUI/WebUI/桌面端snapshot、screenshot、trace、a11y 输出、console log
浏览器自动化DOM/a11y snapshot、screenshot、console/network log、清理证明
频道网关webhook replay、媒体 fixture、身份/auth 证明、脱敏
调度器确定性时钟、lease/checkpoint、restart/reclaim、防重复工作
发行package manifest、干净安装、Docker smoke、OS matrix、lock/security
评测质量rubric、baseline delta、judge output、reviewer note

让判定由证据拥有

QC 报告不能从最终文字推断通过。Verifier 可以总结,但 verdict 必须由证据支撑。

每个通过项都需要:

  • 行为描述;
  • 门禁族;
  • 命令或交互步骤;
  • 期望结果;
  • evidence refs;
  • verdict status;
  • 未完成风险或 waiver。

如果唯一证明是“Agent 说它检查过”,状态应是 needs-reviewblocked,不是 passed

分离确定性、真实服务和发行门禁

不要把昂贵或不稳定的风险藏在普通单测里。

Lane默认运行典型证据常见反模式
确定性lint/type/unit/contract/fake-server logs单测里偷偷用 live key
Runtime通常是CLI/task/session transcript 和清理证明只靠组件测试判断 runtime
Surface用户可见时TUI snapshot、Playwright trace、screenshot、console log只有截图,没有 runtime transcript
Live provider显式 opt-in脱敏请求/响应、预算、凭证范围live 调用藏在 npm test
Release发版前package/Docker/install/OS matrix 输出只有源码测试
Review/eval语义质量相关时rubric、judge output、examples、reviewer没有 baseline 的 pass/fail

OpenClaw 展示了显式 live 与 Docker lane。Hermes 展示了普通测试中清空 provider credential。Codex 展示了先用 fake server 和 fixture 验证,再谈 live/provider 声明。

把表面映射到 Agent UI 事实

Agent UI 给 Agent QC 最大的启发是 runtime-backed projection。可见表面本身不够;可见状态必须能连回拥有该事实的 runtime。

Agent UI 表面Agent QC case 重点
Composersubmit、queue、steer、interrupt、attachments、context chips
Message partsfinal text 与 reasoning、tools、diagnostics、artifacts 分离
Runtime statusfirst status before text、blocked/retrying/failed/done
Tool UItool id、安全参数摘要、progress、result、error、offload ref
Human-in-the-loopapproval/input id、scope、decision、runtime confirmation
Task capsulequeued/background/subagent status、ownership、failure、retry
Artifact workspaceartifact id、preview、version、diff、export、save failure
Timeline/evidencetrace、replay、verification、review、audit refs
Session/tabsold-session restore、stale/hydrating、unread/running
Team workbenchcoordinator、worker、handoff、review、remote/background teammate

QC 规则:用户可见通过项应连接入口、用户动作、可见 frame、runtime event、evidence ref 和 cleanup。

诚实处理缺失事实

不要猜测,用明确状态:

  • 环境、凭证、fixture 或二进制缺失时用 blocked
  • 尝试次数或预算耗尽但没有证明时用 exhausted
  • 有证据但仍需要语义、安全或争议审查时用 needs-review
  • 只有负责人带原因和过期时间接受缺口时才用 waived

如果缺少 bridge/runtime 证据,不要因为 UI 看起来健康就写 passed。这适用于所有 Agent UI/TUI/WebUI 项目。

优先行为级场景

QC case 应像可复现的用户或运维流程,而不是文件清单。

好的 case:

用户拒绝高风险工具调用;runtime 记录拒绝,TUI 移除 pending approval,且没有副作用发生。

弱 case:

Approval 组件存在。

行为级 case 应覆盖:

  • happy path;
  • deny 或 failed path;
  • cancellation/interruption;
  • reconnect/retry/recovery;
  • stale 或 missing facts;
  • old-session 或 resumed state;
  • 相关时覆盖平台和 viewport 差异。

让 qcloop 保持窄而可检查

qcloop 最适合重复、独立的检查:多文件、多频道、多 provider、多命令变体或多 prompt/eval item。

每个 item 都能从自身输出和 evidence refs 判断时,适合 qcloop。不要用 qcloop 替代 bridge health、package install smoke、Playwright trace 收集或 live-provider opt-in policy 等项目门禁。

好的 qcloop item 包含:

  • project profile;
  • touched surface;
  • gate family;
  • 精确输入或命令;
  • 期望行为;
  • evidence policy;
  • verifier rubric;
  • pass/fail/blocked/exhausted/waived 的状态映射。

保持来源可追踪

标准页变化时,同步更新来源索引或案例研究页。本地仓库是案例,不是强制依赖。

层级用途
公开规范Agent Skills、Playwright、Vitest、pytest、协议文档
本地案例Codex、Claude Code 本地快照、OpenClaw、Hermes、desktop GUI 和 release 示例
项目规则某个产品的 scripts、CI、workflow 或 AGENTS 文件
证据工件command output、trace、screenshot、transcript、report

使用渐进披露写法

沿用 Agent Skills 风格:入口短、字段和约束用表格、示例最小化、深入内容放参考页。

Agent QC 页面建议:

  • quickstart 页负责选路径;
  • authoring 页解释计划和证据怎么写;
  • contract 页定义可移植字段和 verdict 约束;
  • reference 页承载 taxonomy 和项目调研;
  • example 页展示真实 plan 形状。

避免锁死单一框架

Agent QC 可以提到 Playwright、Vitest、pytest、cargo nextest、Bazel、Docker、qcloop、VitePress 示例,但标准要求的是证据形状。

好的写法:

Browser UI 门禁应在失败时保留 trace/screenshot,并记录 console 或 network 证据。

不好的写法:

所有 Agent 项目必须使用同一份 Playwright config。

Review checklist

发布 QC 计划或报告前检查:

问题必须回答
标准是否绑定单一产品?否;profiles 适用于所有 Agent 项目类型。
是否声明 project profiles?至少声明一个 profile。
是否命名 touched surfaces?用户可见 case 包含 qc_case.surface
是否分离 gates?deterministic、runtime、surface、live、release、eval lane 分开。
证据是否可检查?每个 pass/fail 连接 logs、reports、traces、transcripts、screenshots 或 review refs。
限制是否明确?缺失 metadata、blocked credentials、本地假设都写明。
waiver 是否可追责?有 owner、reason、scope 和 expiry。
qcloop 是否可重复?重复 case 有稳定 item values 和 verifier rubrics。

Draft standard for evidence-driven quality control of Agent projects.