我构建了一个无 `while(true)` 循环的事件驱动代理——其架构如下

Reddit r/AI_Agents 工具

摘要

这篇文章介绍了 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。欢迎反馈和问题——特别是其他正在实验事件溯源或日志优先代理架构的人。
查看原文

相似文章