Dan Farrelly | Inngest.com (@djfarrelly) · 2026-03-03

AI代理需要的是挽具而非框架

摘要

文章主张AI代理开发应借鉴工程领域的挽具概念,采用持久化、事件驱动的基础设施来连接LLM、工具和内存等组件,而非从头构建专用框架。作者介绍了Utah项目,展示如何利用Inngest实现可重试、可观测、解耦的代理架构。

内容框架与概述

文章首先阐述了挽具在不同工程领域的共同作用:连接、保护和协调各个组件,而非亲自完成工作。作者指出当前AI代理框架都在重复构建重试逻辑、状态持久化、作业队列和事件路由等基础设施功能,而这些正是持久化事件驱动基础设施已经解决的问题。

接着介绍了Utah项目——通用触发代理挽具。该项目采用事件驱动架构,将编排与代理循环解耦,利用Inngest Cloud连接公共Webhook和本地工作进程。核心架构由六个独立函数组成,通过事件相互通信,每个函数都有自己的重试策略和并发控制。

文章进一步说明了代理循环的实现方式:每个LLM调用和工具执行都成为Inngest的一个步骤,实现了步骤级别的独立重试和持久化。作者还介绍了子代理委托功能,通过step.invoke()启动独立的代理函数运行,避免上下文窗口溢出问题,展示了事件驱动架构在复杂任务编排中的优势。

核心概念及解读

挽具(Harness):连接、保护和协调各个组件的中间层,不直接完成工作本身,负责组件间的信号路由、故障捕获和状态管理。

持久化执行(Durable Execution):将每个LLM调用和工具执行作为独立步骤,即使进程失败也能保留已完成步骤的状态,实现细粒度的重试和恢复。

事件驱动架构(Event-driven Architecture):通过事件在函数之间传递消息和触发动作,实现编排与执行的解耦,支持多渠道触发和分布式代理协作。

步骤索引(Step Indexing):Inngest自动为循环中的重复步骤ID添加索引标记,如think:0、think:1,无需手动管理唯一标识符。

子代理委托(Sub-agent Delegation):当任务超出上下文窗口时,通过step.invoke()启动独立的代理函数运行,使用分离的会话上下文完成任务后返回结果摘要。


原文信息

字段内容
原文Your Agent Needs a Harness, Not a Framework
作者Dan Farrelly
发表日期2026-03-03

此摘要卡片由 AI 自动生成