SuperAPI AI 工具集

argos-pr-review

测试与质量

查看项目

更新于 10-15 14:28

技能介绍

Argos PR Review 是一个面向代码审查流程的技能,用于把 Argos 视觉回归构建纳入拉取请求(PR)审查。Argos 是视觉测试平台:每次 CI 构建会捕获截图并与基线比较,生成逐快照的差异。当构建检测到变更时,需要人工判断每个变更是有意为之、回归还是不稳定捕获。该技能强调把 Argos 构建当作 PR 审查的一项输入,而不是唯一事实来源——应先从 PR 标题、描述、关联 issue 和代码差异推断预期的 UI 变更,再用 Argos 确认渲染结果是否匹配。

工具与认证

通过 argos CLI 操作 Argos,需加载 argos-cli 技能了解令牌模型和参数。简要来说:build get / build snapshots 需要项目令牌(ARGOS_TOKEN/--token);提交审查或评论需要个人访问令牌(--token / argos login)。解析时始终使用 --json,且绝不打印令牌值。如果没有可用的 PAT,应向用户给出结论和证据,而不是尝试发布——CLI 无法提交审查。

工作流程

检查构建:argos build get <ref> --json。根据状态决定下一步:accepted / no-changes 表示已批准或无视觉差异,无需审查;pending / progress 表示尚未就绪,应停止并报告暂无法审查;changes-detected 表示需要决策,获取快照;rejected / error / aborted / expired 表示在理解原因前不要批准。

获取变更内容:argos build snapshots <ref> --needs-review --json。对每个差异检查 url(差异遮罩)、base.url(之前)、head.url(之后)和 head.metadata,以及不稳定信号 test.metrics,变更时还有 change.occurrences / change.ignored。

针对推断的意图判断每个差异:有意变更——与代码变更匹配且渲染正常;回归——布局损坏/重叠、裁剪、错误状态/主题/路由、内容缺失,或删除了快照但没有对应的测试删除;不稳定——权衡两个独立信号,当它们一致时可确信地判定为不稳定。测试历史方面:test.metrics.flakiness(0 稳定 → 1 不稳定)和 change.occurrences(该确切差异在指标周期内重复出现的次数)。高不稳定分数或反复出现的变更强烈表明该差异是环境噪声,而非本 PR 的工作;稳定性(无变更的构建)、一致性(变更是否完全相同地重复)和 uniqueChanges 解释了评分原因。change.ignored: true 表示已知不稳定且已自动批准——绝不要将其读作回归。本次捕获方面:加载指示器/骨架屏、异步内容尚未加载、动画中途、动态值漂移、head.metadata.test.retry > 0,或不同浏览器间 score/head.url 相同(两者捕获了相同的瞬态)。retries(配置的预算)本身不是信号。反之,稳定的测试(flakiness→0、高稳定性、首次变更)发生变更更可能是有意变更或真实回归——不要仅凭视觉就将其视为不稳定。可用 build snapshots --metrics-period <24h|3d|7d|30d|90d> 调整窗口(默认 7d)。

针对具体差异发表评论——这是智能体审查最有价值的输出。二元批准/拒绝价值有限;具体、锚定的反馈才让智能体审查值得一读。对每个有问题的差异,发表评论说明问题所在和修复方法,并锚定到该快照:argos comment create <ref> --token <pat> --diff <screenshotDiffId> --body "..."。<screenshotDiffId> 是 build snapshots --json 中的差异 id。可用 --anchor-lines <from,to> 或 --anchor-point <x,y>(归一化 0–1)固定到区域;用 --reply-to <commentId> 在讨论串中回复。使用 --draft 将评论打包到待处理审查中,然后在下一步一起提交。

提交审查(或如果没有 PAT 则报告):批准:argos review create <ref> --token <pat> --event approve;请求变更:argos review create <ref> --token <pat> --event reject --body "<summary>";仅中性备注:--event comment --body "<summary>"。对于构建编号引用(非 URL),添加 --project owner/project。

消除已确认的反复出现的不稳定变更,使其不再阻塞未来构建:argos change ignore <change.id> --token <pat> --project owner/project(用 change unignore 撤销)。只忽略指标确认的不稳定变更——绝不用来绕过真实差异;存在代码修复时优先采用代码修复(references/flaky-fixes.md)。

输出时先说明推断的意图、审查的快照和证据。在 PR 中引用构建 URL 和受影响的快照名称;对于不稳定变更,说明信号并建议修复。

参考资料

references/baseline.md——基线选择和孤立构建语义(当审查依赖于使用了哪个基线时加载)。

references/flaky-fixes.md——针对不稳定捕获的具体代码修复(aria-busy、data-visual-test、动画稳定化)。