我构建了一种方法,可在 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代理。结果并非如我所料
一位开发者分享了用AI代理取代人类助理的经历,并最终构建了一个名为Orbitagents.xyz的共享记忆层工具,以解决不同AI会话间的上下文保持问题。
一次模型替换悄然破坏了代理的取消功能,因此我构建了一个用于代理行为差异比较的工具
作者描述了一次AI模型替换如何悄然破坏了代理的取消功能,促使他们创建了一个用于比较代理行为差异的工具,以检测此类变化。
构建了一个开源工具,用于检测 AI 智能体系统中缺失的验证、重试和错误处理
我们发布了 Trustabl Agent Analyzer,一款开源工具,可扫描 AI 智能体仓库,检测缺失的验证、重试和错误处理,并生成保护隐私的本地报告。
如何为你的AI代理进行版本控制和回滚?git让我失望,我感觉自己遗漏了什么。
一位开发者分享了使用git进行AI代理版本控制和回滚的困境,强调了提示词编辑导致的静默行为变化以及缺乏回归信号的问题。他们向社区寻求更好的工作流程。