本文最后更新于 2026-07-29,文章内容可能已经过时。

浏览器 Agent 卡在登录、验证码和动态表格?用「暂停交人—完成确认—继续执行」模板实现断点续跑

Agent 已经帮你打开商家后台、找到订单入口,结果一遇到登录就停了。

你手动输入账号密码,说了一句“好了,继续”,它却像失忆一样重新打开登录页;好不容易进入订单列表,表格还在加载,它就匆忙点击导出,最后得到一份空文件。

最让人抓狂的不是失败,而是:明明只差一步,却要从头再来。

但这未必是模型不够聪明。更常见的原因是,我们只告诉 Agent“要完成什么”,却没有设计清楚:

  • 什么时候必须停;
  • 停下后要把哪些信息交给用户;
  • 用户怎样表示操作完成;
  • Agent 凭什么判断可以继续;
  • 页面变化后,怎样从断点恢复。
人工接管不是自动化失败,而是浏览器 Agent 工作流中必须预先设计的一部分。

Agent 为什么一到登录、验证码和动态表格就“失忆”

浏览器任务中的三个高频障碍,本质上分别对应三类问题。

登录涉及身份与授权

账号、密码、短信验证码和支付信息,都不应该由 Agent 在对话中索取或保存。即使 Agent 能识别登录框,也不代表它应该代替用户处理敏感凭证。

正确方式是:Agent 打开登录页后暂停,由用户直接在网页中完成登录。

验证码就是用来阻止自动化的

图片验证码、滑块验证和二次身份验证,不是普通弹窗,而是网站设置的安全边界。

Agent 如果反复拖动滑块、尝试识别验证码,或者持续刷新页面,不仅可能失败,还可能触发更严格的验证甚至账号风控。

动态表格一直在变化

许多后台表格使用异步加载、虚拟滚动或懒加载。屏幕上看见几行数据,不代表全部内容已经准备完成。

表头可能重绘,筛选条件可能因刷新丢失,分页数量也可能晚于表格主体出现。Agent 如果沿用几秒前记录的坐标,很可能点击到另一行、另一个按钮,甚至重复提交。

因此,问题并不是简单的“卡住”,而是任务缺少一套标准的人机交接协议。

把“卡住”改造成四态任务状态机

比起让 Agent 自由发挥,更可靠的方法是把任务明确划分为四种状态。

1. RUNNING:页面状态明确,Agent 正常执行。

2. PAUSE_REQUIRED:检测到登录、验证码、敏感授权或页面异常,立即停手。

3. WAITING_CONFIRMATION:用户已经操作,但 Agent 尚未确认结果。

4. RESUMING:Agent 重新识别页面,从最近检查点继续。

这里最容易被忽略的是:用户完成操作,不等于 Agent 可以立即恢复。

例如用户说“好了”,可能意味着:

  • 已经输入账号,但还没点击登录;
  • 已完成验证码,但页面仍在跳转;
  • 已进入后台,但登录弹窗尚未消失;
  • 表格已经出现,但筛选条件被刷新清空。

所以,Agent 暂停时不能只说一句“请手动完成”。一份合格的交接信息至少要包括:

  • 当前页面;
  • 暂停原因;
  • 已完成步骤;
  • 用户需要执行的动作;
  • 操作完成的判断标准;
  • 不应触碰的区域;
  • 恢复后准备执行的下一步。

三套可以直接复制的交接模板

小白版:一段式 Prompt

执行浏览器任务时,如果遇到登录、密码、短信验证码、图片验证码、滑块验证、支付信息、权限确认、动态表格持续加载,或者提交、删除、发布、导出等重要操作,请立即停止点击。告诉我暂停原因、当前页面、已经完成的步骤、需要我做什么、什么状态算完成,以及恢复后你准备做什么。不要要求我在对话中发送密码或验证码。我说完成后,不要马上沿用旧坐标继续操作,请先重新检查网址、页面标题、登录状态、弹窗、关键按钮、筛选条件和表格加载状态;只有检查通过后,才能从最近的步骤继续。

它适合临时任务,优势是短、容易复制;不足是输出格式不够稳定。涉及多页面和长流程时,建议使用下面的状态机版本。

进阶版:状态机 Prompt

你正在执行一个浏览器任务。请遵守以下人机交接协议:

【正常执行】

  • 在页面状态明确、操作可逆且不涉及敏感授权时,继续执行任务。
  • 每完成一个关键阶段,记录当前页面、已完成事项和下一步动作。

【必须暂停的情况】

出现以下任一情况时,立即停止点击和输入:

1. 需要输入账号、密码、短信验证码、支付信息;

2. 出现图片验证码、滑块验证或二次身份验证;

3. 页面提示登录失效、权限不足或存在安全风险;

4. 动态表格持续加载、行列错位、筛选结果不稳定;

5. 即将执行提交、删除、支付、发布等不可逆操作。

【暂停时的输出格式】

状态:PAUSE_REQUIRED

暂停原因:

当前页面:

已完成步骤:

请用户完成:

完成标准:

请勿操作:

恢复后下一步:

【用户确认规则】

不要仅根据“好了”“继续”等模糊回复直接操作。

先检查:

  • 当前网址或页面标题是否符合预期;
  • 登录、验证码或弹窗是否已经消失;
  • 页面关键元素是否可见;
  • 原有筛选条件和任务上下文是否仍然保留。

检查通过后输出:

状态:RESUMING

识别到的页面状态:

准备执行的下一步:

需要再次确认的风险:

若检查不通过,保持暂停,并明确告诉用户还缺少什么。

这套模板包含四个关键模块:暂停触发器、人工操作清单、完成确认口令和恢复前页面复核。

推荐不要只回复“好了”,而是使用更明确的确认口令,例如:

已完成登录,请重新检查当前页面,确认进入订单后台后再继续。

开发者版:JSON 交接对象

复杂任务最好记录 task_id、当前步骤、页面指纹、恢复条件和下一动作。

{

"task_id": "export-orders-2025-01",

"status": "PAUSE_REQUIRED",

"reason": "LOGIN_REQUIRED",

"checkpoint": {

"step": 3,

"page_title": "商家后台登录",

"url_pattern": "/login",

"completed_steps": [

"打开商家后台",

"进入订单管理入口"

]

},

"user_action": {

"instruction": "请在当前页面自行完成登录,不要在对话中发送密码或验证码。",

"completion_criteria": "页面进入订单管理后台,且登录弹窗消失。"

},

"resume_plan": {

"verify": [

"检查页面标题",

"确认登录状态",

"确认订单菜单可见"

],

"next_action": "进入订单列表并设置日期筛选条件"

}

}

控制逻辑可以简化为:

if requires_human(page):

checkpoint = save_checkpoint(page, task)

return pause_required(checkpoint)

if user_confirmed():

current_page = inspect_page()

if resume_conditions_met(current_page, checkpoint):

return resume_from_checkpoint()

else:

return keep_waiting_and_explain()

复制模板后,建议先用不涉及真实账号和敏感数据的测试任务跑一遍。你可以前往 api.884819.xyz,根据站点当前提供的模型或 API 环境进行测试,重点观察模型能否稳定输出 PAUSE_REQUIRED、保存检查点,并在确认后重新识别页面。

一条完整任务,怎样经历两次暂停并继续

以“导出商家后台订单”为例,完整流程不是几个孤立技巧,而是一条可以断点恢复的链路。

第一次暂停:登录交给用户

Agent 打开后台并进入登录页,此时输出:

状态:PAUSE_REQUIRED

暂停原因:当前页面需要输入账号和密码

当前页面:商家后台登录页

已完成步骤:已打开后台并定位到登录入口

请用户完成:请直接在网页中自行登录

完成标准:登录页消失,页面进入商家后台

请勿操作:不要关闭当前标签页,不要在对话中发送密码

恢复后下一步:检查订单管理菜单并进入订单列表

用户完成登录后,Agent不能马上点击之前记录的坐标,而要重新检查页面标题、网址和订单菜单。确认通过后进入 RESUMING

第二阶段:设置日期范围

Agent 进入订单列表,设置日期范围。完成后记录检查点:

  • 日期条件已经生效;
  • 当前筛选标签仍然可见;
  • 下一步是等待表格加载并核对结果;
  • 尚未点击导出。

这样即使页面刷新,也不必重新登录或重复设置所有条件。

第二次暂停:动态表格状态不稳定

此时表格主体可能已经出现,但加载图标仍在旋转,总记录数和分页尚未更新。

Agent 应暂停处理并重新读取:

  • 表头是否完整;
  • 加载提示是否消失;
  • 日期筛选标签是否保留;
  • 总记录数和分页是否出现;
  • 当前表格是否存在虚拟滚动或懒加载。

如果虚拟滚动导致数据不完整,应优先寻找分页、官方导出按钮或更稳定的数据入口,而不是根据屏幕上暂时出现的几行内容下结论。

导出前再次确认

导出通常会生成文件,部分后台还可能消耗导出额度或创建异步任务。因此在点击前,Agent应展示当前参数:

状态:PAUSE_REQUIRED

暂停原因:即将执行订单导出

当前筛选条件:已识别到页面中的日期范围和订单状态

完成标准:用户明确确认按当前条件导出

恢复后下一步:点击导出,并检查是否出现成功提示或下载任务

用户确认后,Agent再次检查筛选条件没有变化,再执行导出。

这条链路的关键不是“永远不暂停”,而是每次暂停都保存现场,每次继续都重新验明现场。

最常见的错误与正确做法

| 场景 | 错误做法 | 正确做法 | | 登录 | 让用户把密码发到对话里 | 用户在网页中自行输入 | | 验证码 | Agent反复点击或尝试绕过 | 暂停并交由用户本人完成 | | 用户说“好了” | 立即沿用旧坐标操作 | 重新识别网址、标题和关键元素 | | 动态表格 | 看见几行数据就开始处理 | 检查加载状态、总条数、分页和筛选条件 | | 导出或提交 | 不确认便点击 | 展示参数并请求最终确认 | | 页面刷新 | 从头执行全部动作 | 根据检查点判断已完成步骤 | | 表单恢复 | 再次填写并提交 | 先检查是否已成功,避免重复提交 |
安全提示

>

- 不要把密码、短信验证码、支付密码发送给 Agent。
- 不要尝试让 Agent 绕过验证码或平台安全机制。
- 登录、付款、删除、发布等动作应由用户明确授权。
- 恢复执行前必须重新读取页面,不能默认页面状态未变化。
- 自动化操作需遵守目标网站的服务条款、权限和数据使用要求。

从单次 Prompt 升级为可复用任务清单

小白用户不必一开始就搭建复杂系统,只要记住下面六步:

先停手 → 说清原因 → 保存现场 → 用户处理 → 检查结果 → 从断点继续。

进阶任务则建议至少保存以下字段:

  • task_id:任务标识;
  • status:当前状态;
  • step:正在执行的步骤;
  • completed_steps:已经完成的步骤;
  • page_fingerprint:网址、标题和关键元素;
  • resume_conditions:恢复必须满足的条件;
  • next_action:检查通过后的下一动作;
  • risk_level:是否涉及提交、删除、支付或发布。

如果要为文章或团队文档准备截图,建议保留以下 5 张,并对账号、订单号和手机号打码:

1. 登录页上的 PAUSE_REQUIRED

2. 用户登录后,Agent复核页面状态;

3. 滑块或图片验证码出现时的暂停提示;

4. 动态表格“加载中”与“加载完成”的对比;

5. 导出、提交等操作前的二次确认。

截图标注不要只圈出按钮,而要突出三件事:为什么暂停、用户要做什么、什么状态算完成。

可靠的 Agent,首先要学会停手

真正可靠的浏览器 Agent,不是遇到任何页面都硬着头皮操作,而是清楚哪些事情可以自己做、哪些必须交给人,以及用户处理后如何从正确的位置继续。

不要一上来就测试完整后台流程。可以先打开 api.884819.xyz,把本文模板交给你正在使用的模型,从“打开页面—遇到登录—暂停交人—确认后继续”这条最短链路开始验证。跑通后,再逐步加入验证码、动态表格和导出确认。

8848AI 平台使用用户名和密码即可注册,无需邮箱验证;平台内置 AI 对话功能,没有月租和订阅,采用按量付费方式,Deepseek、千问等国产模型可免费使用。

新用户注册即送体验token。

暂停和恢复解决了“Agent 卡住怎么办”,但还没有解决一个更危险的问题:用户说“继续”以后,Agent怎么判断当前页面还是不是原来的页面?

下一篇将拆解浏览器 Agent 的“页面指纹与恢复校验”模板:如何利用网址、页面标题、关键按钮、表头、筛选标签和记录数量,避免页面刷新后点错位置、读取旧数据或重复提交。

本文由8848AI原创,转载请注明出处。关注8848AI,带你从零开始学AI。

#浏览器Agent #AI教程 #Prompt技巧 #人工智能 #工作流自动化 #HumanInTheLoop #8848AI