基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
  • 知识卡片碎片时间过考点
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
    • AI 热点每日 AI 资讯与动向
AI 工作台
简历
旧版
AIHT
内容
精选全部 AI 动态热点榜AI 日报收藏
分类
模型行业编程产品技术观点开源
更多
Agent 接入
返回首页开发者导航
AIHT
精选 / 资讯详情
8.0
热点
AI SCORE
技术实践2026-11-04 11:31

业务写入后超时,Agent 应先查明结果

dev.to · AI#Agent#事务处理#故障恢复
Editor brief · 编辑速览

文章指出接收端可能已提交业务变更,响应超时后直接重试会造成重复操作,并介绍保留未决结果的执行控制思路。作者报告九项本地测试通过,同时明确 SAP BTP 映射尚需在授权租户验证。

文章思维导图
Knowledge map
拖拽缩放
AI deep read

AI 深度解读

ERP 写入超时后,AI agent 应该重试,还是先查结果?作者给出的答案是:先保留「结果未知」,再向接收系统核实。超时只能证明调用方没拿到响应,不能证明业务操作失败;直接重试,可能把一次采购或财务操作变成两次。

这篇文章的价值,在于把这类故障拆成了可执行的控制流程,并用本地测试验证了一部分行为。不过,测试通过不代表 SAP 生产环境已经验证通过,文中的 SAP BTP 方案仍待租户实测。

超时之后,为什么不能直接重试

最危险的故障发生在两个动作之间:接收系统已经提交业务变更,调用方却没收到回执。此时,界面显示失败,后台可能已经成功。

作者要求把执行结果分成三种:

  • 已确认:拿到了权威业务引用,并核验了实际状态。
  • 明确拒绝:有证据表明接收系统拒绝了操作。
  • 结果未知:接收系统可能执行过,但调用方还无法证明结果。

「结果未知」必须成为独立状态,不能被归入「失败后重试」。

作者团队在 2026 年 11 月 3 日使用本地参考夹具,运行了 9 个已有测试。其中 7 个使用临时控制文件适配器和确定性 worker,2 个使用临时 SQLite 存储。进程防护阻止网络和子进程操作,记录到的尝试次数为 0。全部测试在 0.339 秒内通过。

关键用例先完成一次模拟写入,再在返回回执前抛出异常。控制器保留未知状态;下一轮调度时,写入次数仍为 1。随后,只读核对找回回执,验证后才进入已接受状态。另一个取消用例也确认,写入后恢复执行不会重复写入。

这些结果支持的是本地控制器的状态管理行为。真实 ERP 的提交机制、网络故障和业务过账规则,都还没有被这组测试覆盖。

防重复,要在发出请求之前准备什么

作者提出了一份小型动作契约:执行前记录目标环境、业务对象、操作、已批准的输入修订版,以及稳定的请求标识;同时保存谁授权了这个具体动作,以及授权有效期。

这份记录需要持久保存在模型之外。聊天中的一句「已经批准」或「刚才失败了」,不足以作为下一次执行的依据。

真正执行时,还要重新核对目标和授权。关键输入变了,就要针对变更后的请求重新取得决策,不能沿用旧批准。

本地测试覆盖了这条边界:相同动作复用已有意图;动作或载荷发生变化时拒绝复用;不同目标环境拥有不同意图。其他用例还检查了缺失授权、证据未被接受、worker 提案变化、目标不匹配,以及依赖步骤是否已被接受。成功路径写入了两条有依赖关系的本地记录,并分别读回验证。

请求发出后,如果结果未知,就通过稳定业务引用或接收系统支持的关联机制查询。查不清时,把原请求、最后已知状态和调查证据交给操作人员。

补偿操作也不能悄悄覆盖原记录。它应有自己的身份和授权,原始结果则继续保留,方便追溯。

SAP BTP 能接上流程,但不能替后台证明成功

作者建议先选择适用于具体业务操作和 SAP 版本的 released API,确认接收 API 如何处理重复请求、能否查询执行结果,再设计重试逻辑。

SAP Cloud Integration 提供 Idempotent Process Call 步骤,但文章指出,其文档也说明了接收应用未确认处理时的超时局限。中间件检查过重复,不等于已经确定后台业务写入是否提交。

因此,方案仍然需要持久动作记录,以及来自权威系统的读回验证。

SAP Build Process Automation action 可以通过配置好的 destination 暴露选定 API 操作。作者建议把范围限制到工作流所需操作,并检查认证、应用路由和适用的 CSRF 处理。destination 解决部分连接问题,业务权限仍需 SAP 后端执行。

Joule 的接入也有前提:租户必须支持所需的 skill 或 agent extension,还要确认 edition、entitlement 和集成支持情况。接入后,网页与对话入口应调用同一个受限业务动作,遵守相同的审批、恢复和核对规则。

这里描述的是待验证设计,没有给出真实租户上的成功运行结果。

我的判断

这套思路最有用的地方,是把「调用是否返回」和「业务是否发生」分开了。对会产生业务副作用的 AI 工具调用,这比让模型根据报错自行决定重试更容易审计。

不过,稳定请求标识不是万能钥匙。接收系统是否支持去重,能否按关联信息查询,以及查询结果是否足以确认业务状态,决定了恢复流程能走多远。原文没有给出具体 SAP API、字段或查询示例,落地时仍需逐项核实。

相较于只在中间件去重,这个方案多了业务结果核对;相较于单纯重试,多了持久状态和人工接管入口。代价是实现与运维工作增加。作者没有提供这些方案之间的对照数据,不能据此宣称效率或可靠性提升了多少。

0.339 秒也只是本地测试耗时,不是 ERP 性能指标。下一步真正有说服力的验证,是在授权测试环境中制造「接收方提交成功、响应丢失」,然后核对真实业务单据。

能拿来做什么

  • 给调用业务写入接口的 Node 服务保留「结果未知」状态,并持久记录请求标识、目标、批准输入和授权有效期,让后续调度能继续核对。
  • 在前端审批或操作页面展示原请求、最后已知状态和核对证据;遇到未知结果时,提供调查入口,避免用户只能反复点击提交。
  • 把「提交成功后丢响应」加入验收,同时测试重放请求、修改载荷、发出后取消和受限角色调用,分别检查允许完成与安全拒绝。
  • 除了完成耗时,还记录重复业务效果和未知结果的持续时间,并保存批准请求、技术响应、权威单据与核对决策,让下一次超时有据可查。
Original source

本文由 AI 通读原文后重新编写,观点部分为站内判断,细节以原文为准,来源 dev.to · AI,原文版权归原作者所有。

阅读原文
上一篇
预约 Agent 如何避免并发重复订位
下一篇
用 Whisper 与 Pyannote 构建多人转写

资讯速览

dev.to · AI · 2026-11-04 11:31

AI 评分 8.0 / 10

相关标签

#Agent#事务处理#故障恢复

继续阅读

  • 运维智能体如何逐步获得生产操作权限
  • 预约 Agent 如何避免并发重复订位
  • 用 Whisper 与 Pyannote 构建多人转写
  • 让数据库代理先理解业务口径
  • 无人值守流水线应限制提示词自改