我构建了一种方法,可在 AI 智能体任务中途失败时自动撤销混乱
摘要
一位开发者构建了 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
```
相似文章
我为你的AI编码代理破坏仓库时建了一个撤销按钮
一位开发者创建了一个撤销按钮功能,允许用户撤销AI编码代理对仓库所做的更改,为AI辅助开发提供了安全网。
AI 代理能否安全地撤销其对自身的更改?
本文介绍了 EvoUndo,一个将可恢复性作为约束强加于自进化 AI 代理的框架,强调了状态固定和恢复语言表达性等瓶颈。
我的智能体操作是否需要可逆层?
本文探讨了在生产环境中,AI 智能体是否需要专门的可逆层来处理和撤销错误,并强调了当前恢复过程中所需的手动工作量。
我们给智能体加过最好的东西不是一项能力,而是一个撤销按钮
作者认为,添加撤销按钮——而非新功能——才真正解锁了对AI智能体的实验,并指出智能体设计的核心其实是降低回退变更的成本。
厌倦了只展示理想情况的AI智能体演示,所以我们搭建了一个让它们失败的地方
一位开发者构建了 Battle Agents,一个用于在可控失败场景中测试 AI 智能体的平台,以检查其决策、工具调用和恢复能力,并正在寻求社区反馈。