AWS Agentic Form Filling:Bedrock 情景记忆与语义元素发现的实践

基于 Amazon Bedrock AgentCore 与 Playwright 的企业级智能表单填充方案。情景记忆注入跨会话经验,Sentence Transformers 语义向量发现元素。

亿牛云技术团队2026年6月2日6 分钟阅读

引言:企业级智能体的特殊要求

前七篇文章介绍的工具面向不同的使用场景——个人自动化、云端并发、CLI 加速、反爬对抗、认知编排。但它们有一个共同点:是无状态的。每个任务从零开始,智能体不记得上一次成功填表时使用了什么方法。

在企业级场景中,这远远不够。

以航空公司的值机流程为例。航空公司 A 要求在表单第一页输入预订编号和姓氏,航空公司 B 要求在同一个页面选择航班并验证身份,航空公司 C 把输入框藏在一个需要先点击"开始值机"按钮才能展开的面板后面……

如果 AI 智能体每次遇到这些差异都从零开始推理,效率和可靠性都无法满足生产要求。

AWS Agentic Form Filling 的核心创新就是解决这个问题:情景记忆(Episodic Memory)。它让智能体记住"上次遇到这个航空公司的页面时,我先点击了哪里,然后才看到输入框",并在下次遇到相同场景时直接复用这些经验。

架构概览

AWS Agentic Form Filling 的架构深度结合了 Amazon Bedrock 的托管 AI 服务与 Playwright 的浏览器自动化能力。

┌────────────────────────────────────────────────────┐
│           AWS Agentic Form Filling 架构              │
│                                                    │
│  ┌──────────────────────────────────────────────┐  │
│  │           Amazon Bedrock AgentCore           │  │
│  │                                              │  │
│  │  ┌────────────────┐  ┌──────────────────┐   │  │
│  │  │ Claude Model   │  │  Episodic Memory │   │  │
│  │  │ (claude-opus)  │  │  (情景记忆存储)   │   │  │
│  │  └────────┬───────┘  └──────────────────┘   │  │
│  │           │                                  │  │
│  │  ┌────────▼──────────────────────────────┐   │  │
│  │  │     ImageFilteringConversationManager │   │  │
│  │  │     (滑动窗口协议,自动排除旧记录)      │   │  │
│  │  └───────────────────────────────────────┘   │  │
│  └──────────────────────────────────────────────┘  │
│                                                    │
│  ┌──────────────────────────────────────────────┐  │
│  │            Playwright Driver                  │  │
│  │                                              │  │
│  │  ┌────────────────┐  ┌──────────────────┐   │  │
│  │  │ aria_snapshot  │  │ Semantic Element │   │  │
│  │  │ (A11y 树)      │  │ Discovery (BERT) │   │  │
│  │  └────────────────┘  └──────────────────┘   │  │
│  └──────────────────────────────────────────────┘  │
│                                                    │
│  ┌──────────────────────────────────────────────┐  │
│  │           目标网站(如航空公司值机页面)       │  │
│  └──────────────────────────────────────────────┘  │
└────────────────────────────────────────────────────┘

核心组件

组件作用技术实现
Bedrock AgentCore智能体编排、记忆管理、工具调用AWS 托管服务
Claude 模型核心推理和决策Amazon Bedrock
Episodic Memory跨会话经验存储与检索AgentCore 内置
Playwright浏览器控制(导航、交互、截图)开源自动化库
ImageFiltering Manager上下文窗口管理、Token 优化自定义滑动窗口
Semantic Discovery语义化元素定位Sentence Transformers

情景记忆(Episodic Memory)的设计

情景记忆是 AWS Agentic Form Filling 最具企业价值的设计。它不同于普通的聊天历史存储——它是有结构的、可检索的、经过 PII 过滤的经验数据库。

记忆生命周期

第一轮交互


AgentCore 自动捕获当前情节数据:
  - 当前页面 URL / 标题
  - 执行的操作流水(navigation, click, fill)
  - 每个操作的工具效率和返回结果
  - 是否遇到错误及如何解决

PII 过滤层
    │  自动移除:乘客姓名、确认码、支付信息等
    │  保留:导航路径、表单结构特征、错误模式

存储到情景记忆数据库
  - 命名空间:航空公司名称
  - 包含:成功导航流程、工具效率、错误解决方案


下一轮新会话初始化

AgentCore 自动检索相关记忆
    │  根据当前任务上下文匹配
    │  "我们之前处理过这家航空公司的值机页面"

记忆注入到 LLM 提示上下文
    │  "上次这个表单需要先点击'开始值机'按钮才能看到输入框"

智能体复用成功策略,避免重复错误

关键设计决策

决策原因
按命名空间隔离记忆不同航空公司的表单结构差异巨大,混在一起会混淆推理
自动过滤 PII合规要求(GDPR、CCPA),防止敏感数据被下一轮会话读取
保留错误解决方案失败的模式往往比成功路径更有信息价值

语义元素发现(Semantic Element Discovery)

传统的网页元素定位依赖精确匹配——通过 ID、CSS 选择器、XPath 或可访问性标签。但在企业表单中,这些标识符通常是动态生成的或不可靠的。

AWS 的方案是:不匹配文本,匹配语义

工作原理

Playwright aria_snapshot() 
    │  获取当前页面的可访问性树

Sentence Transformers(本地客户端模型)
    │  将 A11y 树分块
    │  每个块转换为高维向量嵌入(Embeddings)

语义相似度搜索
    │  搜索目标:"提交按钮"
    │  发现:"Proceed to Next Step"(语义相似度 0.91)
    │         "Continue"(语义相似度 0.87)
    │         "Submit"(语义相似度 0.85)

即使按钮文本是 "Proceed to Next Step",
也能通过语义接近度可靠识别

这种设计彻底摆脱了对精确 CSS 选择器的依赖。即使页面的 HTML 结构完全改变、class 名全部重写,只要按钮的语义不变,智能体就能找到它。

与精确匹配的对比

定位方式示例面对改版的鲁棒性
CSS 选择器#submit-btn极差(class 或 ID 改变即失效)
XPath//form/div[3]/button差(DOM 结构变化即失效)
可访问性标签button "Submit"中(文本改变即失效)
语义向量similar_to("提交按钮")高(语义不变即可)

上下文窗口管理:ImageFilteringConversationManager

使用 LLM 驱动的智能体面临一个两难问题:截图提供了丰富的视觉上下文,但每次截图都要消耗大量 Token。

AWS 的方案是一个滑动窗口协议

对话开始时:
  [系统提示][记忆注入][初始截图]
 
随着对话进行:
  [系统提示][记忆注入][截图 #1][操作 #1][截图 #2][操作 #2]...
 
Token 接近限制时:
  [系统提示][记忆注入][旧截图被移除: 替换为文本占位符]
  [截图 #5][操作 #5]...
 
关键策略:
  - 旧截图被动态剔除
  - 用占位符文本标记"这里有一张被过滤的截图"
  - 保留最近的操作记录和截图
  - 情景记忆不受影响(持久化存储)

这种管理方式确保了:

  1. 上下文窗口始终在模型限制范围内
  2. 最近的视觉信息得到保留
  3. 历史关键数据通过情景记忆持久化,不依赖活动上下文

部署说明

AWS Agentic Form Filling 的部署涉及多个 AWS 服务:

核心依赖

服务用途
Amazon Bedrock托管 Claude 模型
Bedrock AgentCore智能体编排 + 情景记忆
AWS Lambda / ECSPlaywright 执行环境
Amazon S3截图和日志存储
IAM权限管理

部署步骤(简化)

# 1. 克隆项目
git clone <repository-url>
 
# 2. 配置 AWS 凭证
aws configure
 
# 3. 部署 AgentCore
python deploy_agentcore.py \
  --memory-enabled \
  --namespace "airline-checkin"
 
# 4. 配置模型访问
# 在 Bedrock 控制台中启用 Claude 模型访问

实战场景:航空值机

系统提示:为乘客完成航空公司值机
输入:确认码 ABC123,姓氏 SMITH

第一次处理(无记忆):

1. 打开航空公司值机页面
2. aria_snapshot() 获取页面结构
3. 语义搜索:"confirmation code input" → 找到输入框
4. 填入 ABC123
5. 语义搜索:"last name input" → 找到输入框
6. 填入 SMITH
7. 语义搜索:"check in button" → 找到并点击
8. 检测到 CAPTCHA,需要人工介入
9. 记录记忆:这家航空公司的值机页面有 CAPTCHA

第二次处理(有记忆):

1. 打开同一航空公司值机页面
2. AgentCore 检索到相关记忆
3. 记忆注入提示:"上次处理时发现该页面需要 CAPTCHA 验证"
4. 智能体提前准备 CAPTCHA 处理策略
5. 填入信息 → 跳过已知的步骤
6. 效率对比:第一次 35 秒,第二次 12 秒

企业级方案与开源方案的对比

维度AWS Agentic Form FillingNanobrowser / Browyagent-browser
部署复杂度高(多 AWS 服务依赖)极低(浏览器扩展)低(CLI 安装)
记忆管理AgentCore Episodic Memorysession save/load
元素定位语义向量 + A11y 树DOM 路径A11y Ref
上下文优化ImageFiltering 滑动窗口无(A11y 快照天然精简)
规模化AWS 基础设施弹性伸缩单用户单实例
成本AWS 服务费用 + 模型调用自有 API Key自有 API Key
适合企业生产环境个人开发者开发者 / 小团队

局限性

  • AWS 锁定:深度绑定 Amazon Bedrock 和 AWS 生态
  • 配置复杂:需要理解和配置多个 AWS 服务
  • 延迟较高:AgentCore 编排 + 截图分析 + 向量搜索,端到端延迟高于轻量级方案
  • 成本不确定性:企业级托管服务 + Claude 模型的组合成本需要仔细估算

总结

AWS Agentic Form Filling 代表了一类企业级 AI 浏览器智能体的实现范式——它不追求"最快"或"最便宜",而是追求"最可靠"和"可学习"。

情景记忆让智能体不再是每次从零开始的无状态工具,而是一个能够积累经验的"数字员工"。语义元素发现消除了对脆弱 CSS 选择器的依赖。滑动窗口上下文管理确保了长时间的复杂任务不会因为 Token 限制而中断。

对于那些需要处理大量、重复、结构相似但细节不同的企业表单的场景(航空公司值机、银行开户、保险理赔),这种架构提供了目前最可靠的工程方案。

下一篇文章将对截至 2026 年中的主流 AI 浏览器智能体框架进行全面的横向对比。

需要企业代理方案?

我们可根据目标站点、并发规模与稳定性目标提供定制方案。