Java for You AI Nova Act合成监控:从选择器脚本转向结果断言

Nova Act合成监控:从选择器脚本转向结果断言

数据可视化

服务器 200、香港节点延迟正常、页面也打开了,但“加入购物车”的图层被遮住,用户仍然无法下单。这就是合成监控要解决的缺口:不只监控组件,而是按真实用户路径定期完成一次任务。

AWS 9 月 28 日发布一套 Amazon Nova Act 与 Bedrock AgentCore 实现:EventBridge Scheduler 定时启动,AgentCore Runtime 托管执行,Browser 工具为每次运行提供隔离浏览器,Nova Act 根据截图和自然语言执行动作,失败后通过 SNS 通知。官方样例代码已公开,典型 6 步旅程依页面加载情况需 2—4 分钟。

传统 Selenium 脚本常把 class 或 XPath 当成真相,界面重构就会大面积误报。Nova Act 用多模态大模型处理截图,官方说早期企业案例中浏览器流程准确率超过 90%。这是厂商案例,不是一条对所有网站的承诺;Agent 也会看错、点错,因此必须把“动作”和“结果断言”分开。

mermaid diagram

最小实践:别让一次模型抖动直接升级为事故

from dataclasses import dataclass

@dataclass
class Step:
    name: str
    ok: bool
    ms: int

def assess(run):
    required = {"search", "cart", "checkout"}
    seen = {step.name for step in run if step.ok}
    return required <= seen and sum(step.ms for step in run) < 10_000

runs = [
    [Step("search", True, 800), Step("cart", True, 900), Step("checkout", True, 1200)],
    [Step("search", True, 700), Step("cart", False, 1100), Step("checkout", False, 0)],
    [Step("search", True, 750), Step("cart", False, 1300), Step("checkout", False, 0)],
]

results = [assess(run) for run in runs]
alert = len(results) >= 2 and results[-2:] == [False, False]
print("results=", results, "alert=", alert)
assert alert

保存为 journey_gate.py,用 Python 3.9+ 直接运行,无第三方依赖。代码不只要求三个关键结果全部出现,还限制总时间,并在连续两次失败后才告警。本次在 Python 3.9.6 实际运行,结果为 [True, False, False],告警断言通过。这只验证状态与告警逻辑;本次没有 AWS 凭据,未实际运行 Nova Act 或 AgentCore。

真实实现中,每次旅程应使用新会话,避免 cookie、LocalStorage 或购物车残留让测试“假通过”。AWS 文档说 AgentCore Runtime 采用一会话一 Firecracker microVM,合成监控推荐临时会话。身份凭据放 Secrets Manager,运行角色只给打开浏览器和发告警的最小权限,监控账号不应有真实支付能力。

最常见的误区有三个:把“点了按钮”当成“结果正确”;为降低误报而无限重试,最终把真故障拖成数分钟后的延迟告警;只在一个地域运行,却宣称全球用户旅程正常。每个告警应保留失败步骤、截图或视频、总时间、会话 ID 和模型版本,但要对账号、地址和支付信息脱敏。

这套方法适合视觉改动频繁、选择器维护成本高,且业务结果可明确断言的流程。对于稳定 API、简单健康检查或每秒高频探测,传统脚本更快、更便宜、更可预测。我的判断是,Agent 监控不会替代指标、日志和追踪,它是第四层证据:用户真的能完成任务。

要让告警真的可处置,每个关键步骤要有独立的结果断言。搜索成功不是“输入框被点了”,而是页面出现与关键字相关的结果;加购物车成功不是“按钮消失”,而是购物车数量、商品标识与价格一致;结账就绪不是真正提交付款,而是到达明确的安全停止点。如果断言只复述 Agent 自己的动作说明,整个监控会变成模型给自己打分。

为了区分产品故障和 Agent 抖动,可以给相同旅程设置两类对照。一类是传统 API 或页面元素探针,用来证明后端基础能力;另一类是 Agent 旅程,用来证明真实交互。如果 API 正常、Agent 失败,优先检查界面、模型或提示词;如果两者都失败,更可能是真实业务事故。这种对照能显著缩短排查路径。

告警策略也不是越灵敏越好。支付页面可以每五分钟检查并在连续两次失败后告警,但一个每日才执行的报表流程,连续两次就意味着24小时的发现延迟。门槛要根据业务损失速度、模型单次失败概率和执行成本共同定义。对高价值旅程,可以在第一次失败后立即用另一个地域或不同测试账号复核,而不是无上限原地重试。

成本不能只看 EventBridge 的调度费用。AWS 示例将定时调用、Runtime会话、Browser会话、Nova Act 操作和通知分开估算。团队还应计入每次旅程的平均步数、重试次数、多地域倍数、证据存储和人工处置。一个月运行数千次的任务,即使单次不贵,也可能在重试与视频证据上累积出不小账单。

上线前最好做一次人为故障演练。例如临时隐藏购物车按钮、让价格接口返回错误币种、制造缓慢加载,检查 Agent 是否在正确步骤停止,告警是否附带足够证据,值班人能否不登陆生产账号就确认问题。如果 Agent 在首个关键断言失败后仍尝试后续结账,说明流程将“完成任务”错误地置于“可安全失败”之上。

还要定期复查监控自身的漂移。页面文案、商品数据和 Agent 模型会更新,去年有效的断言可能今天已经过宽或过窄。团队应保存一小组已知成功与已知失败录像,每次升级提示词、模型或浏览器镜像后先回放,确认告警敏感度没有静默变化。

你的线上监控能证明页面打开,还是能证明用户真的完成了任务?

关注「蜗牛聊AI」,一起看懂技术变化背后的真正机会。


本文首发于 java4u.cn,转载请注明出处。

本文由 java4u.cn 发布,可自由转载、引用,但需署名作者且注明文章出处(作者:白色蜗牛,出处:java4u.cn)。如转载至微信公众号,请在文末添加作者公众号二维码。 https://java4u.cn/ai/2858.html

作者: 蜗牛

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

联系我们

公众号:蜗牛互联网

在线咨询: QQ交谈

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部