我构建了一种方法,可在 AI 智能体任务中途失败时自动撤销混乱

Reddit r/ArtificialInteligence 工具

摘要

一位开发者构建了 agent-undo,这是一个 TypeScript 库,可为 AI 代理的工具调用添加撤销/回滚处理器,使得如果任务中途某一步骤失败,之前已完成的步骤会自动撤销。

如果你构建过连续调用多个工具的 agent,你应该早就体会过这种感觉。一切都很顺利,第 1 步成功,第 2 步成功,然后第 3 步抛出一个错误,整个流程就停了。但问题在于,它并不是干净利落地停止,而是让你的数据库、Stripe 账户或其他东西被改动了一半,最后只能由你手动去清理。我已经厌倦了每次都写同样的“如果这一步失败,就手动撤销之前三步”的逻辑,所以我为这个问题写了一个小库。 `agent-undo` 用撤销处理器包装你的工具。如果链条中的某一步失败,所有已经成功的步骤都会自动按逆序回滚,就像事务一样。 ```ts const chargeCustomer = defineTool({ name: 'charge_customer', execute: async ({ customerId, amount }) => stripe.charges.create({ customerId, amount }), undo: async (charge) => stripe.refunds.create({ chargeId: charge.id }), }); ``` 第 3 步失败时,`charge_customer` 的 `undo` 会自动触发。无需手动清理,也不会凌晨 2 点被叫醒。 包含内容: - 核心 saga 引擎,支持 LIFO 回滚 - 适用于 Vercel AI SDK 和 Mastra 的适配器 - 一个 MCP 服务器,让 Claude Code 或任何 MCP 客户端都可以通过普通工具调用来运行和回滚 saga - TypeScript 编写,68 个测试全部通过 目前还不支持: - 没有持久化。如果进程本身在 saga 中途崩溃(而不是仅某一步失败),你会丢失回滚栈。这是下一步要做的事。 - 还没有仪表盘,目前你需要直接读取 `saga.status` 和 `saga.steps`。 - 它还处于很早期,v0.1。 如果你之前也遇到过这个问题,我很想知道你是怎么处理的;如果你试用了这个库,请告诉我在哪里会出问题。 ```bash npm install u/ramcharan_2020/agent-undo ```
查看原文

相似文章