Amazon Nova Act 实测:用自然语言驱动浏览器自动化的 AI Agent 服务¶
Lab 信息
- 难度: ⭐⭐ 中级
- 预估时间: 60 分钟
- 预估费用: < $1.00(含清理)
- Region: us-east-1
- 最后验证: 2026-03-23
背景¶
浏览器自动化一直是个痛点。传统方案(Selenium、Playwright 脚本)需要维护大量 CSS selector 和 XPath,网页一改版就全部失效。
2025 年 12 月 2 日,AWS 正式 GA 了 Amazon Nova Act —— 一个让你用自然语言描述任务,AI 来操作浏览器完成的服务。不写 selector,不管 DOM 结构,只告诉它"点击 Learn more 链接"就行。
本文通过 CLI + Python SDK 全链路实测,对比 v1.0 GA 和 v1.1 Preview 两个模型版本,并探索边界行为。
前置条件¶
- AWS 账号(需要
nova-act相关 IAM 权限) - AWS CLI v2 已配置
- Python 3.10+
pip install nova-act(会自动安装 Playwright 等依赖)
核心概念¶
Nova Act 采用 客户端-服务器 架构:
| 层级 | 说明 |
|---|---|
| Workflow Definition | 定义你的自动化任务(模板) |
| Workflow Run | 一次执行实例,绑定特定模型版本 |
| Session | 一个浏览器实例,支持串行多个 act |
| Act | 一次自然语言任务调用 |
| Step | 模型"看页面 → 决策 → 执行动作"的一个循环 |
关键架构:模型在 AWS 云端运行(观察页面截图、生成动作指令),浏览器在你的本地/客户端执行。SDK 封装了这个循环。
模型版本:
| Model ID | 说明 |
|---|---|
nova-act-latest |
自动跟踪最新 GA 版本(当前 v1.0) |
nova-act-preview |
自动跟踪最新 Preview 版本(当前 v1.1) |
nova-act-v1.0 |
Pin 到 v1.0 GA,至少支持 1 年 |
注意
nova-act-latest 永远不会自动升级到 preview 模型。Preview 模型不支持 pin 到特定版本。
动手实践¶
Step 1: 用 CLI 管理 Workflow 生命周期¶
# 创建 Workflow Definition
aws nova-act create-workflow-definition \
--name my-data-extract-workflow \
--description 'Extract data from web pages' \
--region us-east-1
# 查看已创建的 Workflow Definition
aws nova-act get-workflow-definition \
--workflow-definition-name my-data-extract-workflow \
--region us-east-1
输出示例:
{
"name": "my-data-extract-workflow",
"arn": "arn:aws:nova-act:us-east-1:123456789012:workflow-definition/my-data-extract-workflow",
"createdAt": "2026-03-23T23:15:00.970000+00:00",
"status": "ACTIVE"
}
Step 2: 用 Python SDK 执行浏览器自动化¶
创建文件 nova_act_demo.py:
import os
from nova_act import NovaAct
from nova_act.types.workflow import Workflow
os.environ['NOVA_ACT_HEADLESS'] = '1' # 无头模式
with Workflow(
model_id="nova-act-latest",
workflow_definition_name="my-data-extract-workflow",
) as wf:
print(f"Workflow Run ID: {wf.workflow_run_id}")
with NovaAct(
starting_page="https://aws.amazon.com/ai/generative-ai/nova/",
headless=True,
workflow=wf,
) as nova:
# Act 1: 提取页面信息
result = nova.act(
"Read the main heading and the first 3 feature sections. "
"Return a brief summary of each.",
max_steps=10,
)
print(f"Steps: {result.metadata.num_steps_executed}")
print(f"Time: {result.metadata.time_worked}")
# Act 2: 页面导航
result2 = nova.act(
"Click on the 'Learn more' link if available.",
max_steps=10,
)
print(f"Steps: {result2.metadata.num_steps_executed}")
执行:
你会看到模型的思考链和执行过程:
start session xxx on https://aws.amazon.com/ai/generative-ai/nova/
> act("Read the main heading and the first 3 feature sections...")
> think("I am on the AWS page for Amazon Nova. I can see the main heading...")
> agentScroll("down", "<box>0,0,813,1600</box>")
> think("I can see Nova Act, Nova Forge, and Nova Models sections...")
> return("Main Heading: Amazon Nova - ...")
⏱️ Approx. Time Worked: 21.3s
Step 3: 对比 v1.0 和 v1.1 Preview¶
只需修改 model_id:
# v1.1 Preview
with Workflow(
model_id="nova-act-preview", # 改这一行
workflow_definition_name="my-data-extract-workflow",
) as wf:
# ... 其余代码相同
Step 4: 查看执行历史¶
# 列出所有 Workflow Runs
aws nova-act list-workflow-runs \
--workflow-definition-name my-data-extract-workflow \
--region us-east-1
# 查看特定 Run 详情
aws nova-act get-workflow-run \
--workflow-definition-name my-data-extract-workflow \
--workflow-run-id <run-id> \
--region us-east-1
测试结果¶
模型版本对比(同一任务)¶
| 指标 | v1.0 (GA) | v1.1 (Preview) | 差异 |
|---|---|---|---|
| 特性提取 — 步数 | 3 steps | 3 steps | 相同 |
| 特性提取 — 耗时 | 21.8s | 19.2s | v1.1 快 12% |
| 链接点击 — 步数 | 2 steps | 2 steps | 相同 |
| 链接点击 — 耗时 | 13.4s | 12.9s | v1.1 快 4% |
| 平均 Step 服务端耗时 | 3.1 - 6.1s | 3.1 - 4.6s | v1.1 更稳定 |
| 输出质量 | 准确 | 准确,稍简洁 | 相当 |
| 总执行时间 | 42.6s | 39.5s | v1.1 快 7% |
简单任务性能¶
| 任务 | 步数 | 耗时 | 说明 |
|---|---|---|---|
| 读取 Wikipedia 标题 | 1 step | 4.4s | 极简任务基准 |
| 读取 example.com 标题 | 1 step | 4.0s | 最小耗时约 4s |
边界行为¶
| 场景 | 行为 | 说明 |
|---|---|---|
| 不存在的按钮 | 搜索/尝试变通 → max_steps 超时 | 不会直接报错,会尝试恢复 |
| 404 页面 | 导航到首页 → 继续尝试 | 体现 AI Agent "韧性" |
| SSL 证书错误 | 抛出 InvalidCertificate 异常 | 可通过 ignore_https_errors=True 解决 |
踩坑记录¶
1. Preview 模型不能直接指定版本号
nova-act-v1.1_2026-02-09 会报 ValidationException,必须使用 nova-act-preview 别名。已查文档确认:官方明确 "Preview models are not version-pinnable"。
2. act() 和 act_get() 的区别
act() 返回 ActResult(只有 metadata),没有 response 字段。如果需要模型返回结构化数据,使用 act_get() 返回 ActGetResult。实测发现,官方文档未详细说明。
3. Headless 服务器需要 Chromium
SDK 默认尝试启动 Chrome,在服务器环境自动 fallback 到 Chromium。建议在 CI/CD 中设置 NOVA_ACT_HEADLESS=1 并确保 Playwright Chromium 已安装。
4. max_steps 是你的安全网
模型遇到无法完成的任务时不会主动报错,而是尝试各种变通方法直到耗尽步数。务必设置合理的 max_steps(默认 30,建议根据任务复杂度设 5-15)。
5. CLI vs SDK 的定位不同
CLI 适合管理 Workflow 生命周期(创建/查看/删除 Definition 和 Run),不适合直接执行浏览器自动化。invoke-act-step 需要客户端实现完整的浏览器执行循环。
费用明细¶
| 资源 | 说明 | 费用 |
|---|---|---|
| Nova Act Steps | ~40 steps × ~$0.003/step | ~$0.12 |
| EC2/VPC | 无 | $0 |
| 合计 | ~$0.12 |
Nova Act 按 step 计费,每个 step 是模型"观察 + 决策"的一次循环。简单任务(读标题)仅 1 step,复杂任务(数据提取 + 导航)约 3-5 steps。
清理资源¶
# 删除 Workflow Definition(会级联清理关联的 Runs)
aws nova-act delete-workflow-definition \
--workflow-definition-name my-data-extract-workflow \
--region us-east-1
务必清理
虽然 Nova Act 的运行时费用极低,但保留不用的 Workflow Definition 会占用账户配额。
结论与建议¶
适合场景:
- 🟢 Web 数据提取 — 不用维护 selector,适应网页变化
- 🟢 表单自动填充 — 自然语言描述即可
- 🟢 端到端 QA 测试 — 用自然语言写测试用例
- 🟡 生产级批量任务 — 需要合理设置 max_steps 和错误处理
v1.0 vs v1.1:v1.1 Preview 在速度上有约 7-12% 的提升,输出质量相当。生产环境建议使用 nova-act-latest(稳定 GA),实验环境可以用 nova-act-preview 获得更快的响应。
最佳实践:
- 用
@workflow装饰器管理生命周期 - 设置合理的
max_steps(建议 5-15) - 对不可控的网页使用
ignore_https_errors=True - 需要结构化返回时用
act_get()而非act() - 在 CI/CD 中设置
NOVA_ACT_HEADLESS=1