我构建了一个无 `while(true)` 循环的事件驱动代理——其架构如下
摘要
这篇文章介绍了 Pizza,一个开源事件驱动 AI 代理,它使用事件溯源和状态机来构建健壮且可审计的代理架构,具有诸如对话分叉和自优化等功能。
我在空闲时间构建了 Pizza —— 一个个人事件驱动 AI 代理。核心理念是代理的执行循环不应是一个脆弱的 while(true),而应是基于不可变事件日志的状态机。
实际意味着:每个动作都是一个事件。消息、工具调用、工具结果和文件编辑都写入本地 SQLite EventStore。TUI、LLM 上下文和会话树只是该日志的实时投影。
没有 while(true) 循环。每一轮都由事件处理表驱动,因此中断、重试、并行工具调用和轮中失败是一等公民,而不是特例处理。
为模型提供一个 CLI 工具。模型不再获得长长的 JSON 工具列表,而是获得一个单一的 CLI 工具,并组合 _read、_write、_edit 和 shell 命令。实践证明它更加健壮。
类似 Git 的会话树。从任何先前事件分叉、回退、分支、比较、继续——对话是一个不可变的树。
到处相同的运行时。TUI、JSON-RPC 服务器、桌面应用和一次性 CLI 都消费相同的 SessionFacade 事件流。
代理可以跨工作区相互通信。一个代理可以将工作委派给另一个工作区的代理,而不泄露项目上下文。
(可选)自优化技能。它可以挖掘自己的事件日志、重现错误、编写测试,并向 tomsun28/pizza 开放一个 PR。
到目前为止我学到的:事件溯源使调试和审计会话变得容易得多;当状态是不可变树时,分叉对话是自然的;给模型一个单一 CLI 工具减少了 schema 幻觉和工具调用损坏。
它是开源的(MIT),当前版本 0.2.7。欢迎反馈和问题——特别是其他正在实验事件溯源或日志优先代理架构的人。
相似文章
@jasonzhou1993: https://x.com/jasonzhou1993/status/2075179471951614381
作者分享了运行AI代理循环一个月后的实际经验,强调了循环契约、状态和日志的重要性,以使代理实现自主和可靠。
如何让代理运行数小时,以及哪些架构真正对代理友好?#深度探讨 #氛围程序员问题
作者探讨了AI编码代理的两个关键挑战:确保长时间自主执行(数小时)以及为本地应用设计对代理友好的架构。他们提出在规划和执行之前,增加一个显式的知识组织阶段来管理混乱的上下文。
给AI编码智能体一个确定性的“架构检查器”,使其不再假装“完成”
本文描述了给AI编码智能体一个确定性的架构检查器,该检查器检查事件风暴图中的机械性缺口和未决问题,确保智能体不会假装完成。
@ishaansehgal: https://x.com/ishaansehgal/status/2065129901427130678
文章认为,AI代理由持久事件日志定义,而非运行时或模型,从而支持容错恢复并简化对代理状态的推理。
@pauliusztin_: AI编程的未来不是一个超级智能体,而是智能体循环。一个智能体不应该:计划、编码、测试、评审、监控CI…
文章认为AI编程应该使用在循环中具有有限重试和人工审批的专门智能体,而不是单一的超级智能体,强调工作流工程重于智能体智能。