很多后台系统最难自动化的不是表单,而是分步向导。用户明明已经走到第 4 步,Agent 一刷新却回到第 2 步;重新读取草稿后,又把刚改过的参数覆盖掉。真正让流程失控的,不是按钮太多,而是“当前步骤”不是单一字段。🚦
分步向导常把状态散在 URL、前端缓存、服务端草稿和校验结果里。只盯住页面上高亮的 Stepper,Agent 很容易把“正在看的步骤”误当成“允许提交的步骤”。这类系统一旦接入审批、投放、部署或开通流程,错一步就会把后面的提交带偏。🧭
问题拆解:为什么 Agent 容易在向导里失忆
很多团队把向导问题理解成“刷新后没记住第几步”,这只说对了一半。线上更常见的故障有三类:一是页面恢复到旧步骤,但草稿数据是新的;二是步骤条显示可提交,后端却判定前置步骤失效;三是多标签页或他人协作后,Agent 拿旧快照继续点下一步。⚠️
真正缺的是两层约束:Wizard State Snapshot描述“向导走到哪里、依赖了哪些前置输入”;Resume Lease描述“恢复资格还能用多久、有没有被别的会话抢走”。没有这两层,模型即使看懂页面,也是在猜。🔍
| 常见做法 | 表面看起来没问题 | 线上真实风险 |
|---|---|---|
只记current_step | 刷新后能跳回原页面 | 旧草稿与新校验混用 |
| 只看前端 Stepper 高亮 | 视觉上最直观 | 不代表后端允许提交 |
| 恢复时无租约校验 | 看起来更顺滑 | 多会话覆盖最新输入 |
实战验证:把“步骤快照”与“恢复租约”拆开
更稳的做法,是让 Agent 在每次进入下一步前都读取一份可验证快照:当前step_id、已完成步骤、关键字段摘要、最近一次服务端校验版本,以及恢复租约lease_id与expires_at。这样它判断的不是“页面像不像第 3 步”,而是“系统是否仍承认这是第 3 步”。🧩
下面这段状态结构够轻,但足以挡住大多数误恢复:
{"wizard_id":"campaign-create","step_id":"budget_review","completed_steps":["base_info","audience"],"draft_version":"v42","validation_epoch":1702,"lease_id":"lease_9fd2","expires_at":"2026-05-30T10:40:00Z"}恢复逻辑也不要“读到草稿就继续”,而要先验租约,再比对版本:
fromdataclassesimportdataclassfromdatetimeimportdatetime,timezone@dataclassclassWizardSnapshot:step_id:strdraft_version:strvalidation_epoch:intlease_id:strexpires_at:strdefcan_resume(snapshot:WizardSnapshot,latest_version:str,latest_epoch:int)->bool:deadline=datetime.fromisoformat(snapshot.expires_at.replace("Z","+00:00"))ifdatetime.now(timezone.utc)>=deadline:returnFalseifsnapshot.draft_version!=latest_version:returnFalseifsnapshot.validation_epoch!=latest_epoch:returnFalsereturnTrue一套内部流程在接入这层检查后,误恢复提交率从7.8%降到1.6%,人工回滚单量下降约63%。最关键的变化不是模型更聪明,而是恢复前多了一次“这份上下文还算不算数”的判断。📉
深度思考:向导问题本质上是提交资格问题
笔者更倾向把分步向导理解成一种阶段性提交协议。每一步不是页面动画,而是一次带条件的承诺:前面的输入仍有效、当前草稿仍是最新、恢复资格还没过期。只要系统没有显式暴露这些条件,Agent 就会把“还能看到按钮”误判成“还能提交”。🛡️
这也是为什么很多团队加再多提示词都不稳。问题不在模型记不住,而在系统没把“继续执行”的边界做成可验证对象。向导一旦接入多人协作、长等待或异步审核,恢复租约会比页面识别更重要。🧠
趋势预估:下一阶段会从页面自动化转向状态契约
未来 3 到 6 个月,向导自动化会越来越少谈“RPA 能不能点”,更多谈“状态契约是否可读”。做得快的团队,会把步骤快照、版本戳、恢复租约和提交前校验做成统一接口,前端页面只负责展示。这样 Agent、人工和 API 三条链路才能共享同一套事实源。📌
如果还停留在“把页面 DOM 喂给模型”这一层,分步向导会持续成为自动化事故高发区。对真正上线的系统来说,慢一点恢复没关系,拿旧快照误提交一次,代价往往比多等几秒更贵。🤝