关于 Wippy

Wippy 是一个智能代理平台和运行时,专为需要在运行时动态变化的软件设计——自动化系统、AI 代理、插件架构等。核心只需构建一次,之后可以反复调整而无需重新构建或部署。

底层采用 Actor 模型。代码运行在隔离的进程中,通过消息进行通信,每个进程管理自己的状态。当某处发生故障时,故障被隔离在该进程内。监管树自动处理恢复,在进程崩溃时重启它们。

local worker = process.spawn("app.workers:handler", "app:processes")
process.send(worker, "task", {id = 1, data = payload})
process.monitor(worker)

配置存储在中央注册表中,变更以事件形式传播。更新配置文件后,正在运行的进程会收到变更通知。它们无需重启即可适应——新的连接、更新的行为,随你所需——而系统持续运行。

local db = registry.get("app.db:postgres")
local cache = registry.get("app.cache:redis")

对于必须在基础设施故障中存活的操作——支付流程、多步骤工作流、长时间运行的代理任务——运行时会自动持久化状态。服务器在操作中途宕机?工作流会在另一台机器上从中断处继续执行。

整个系统从单个文件运行。无需编排容器,无需协调服务。一个二进制文件,一个配置,运行时处理其余一切。

背景

Actor 模型源自 Erlang,自 1980 年代以来一直在运行电信交换机。"让它崩溃"的哲学——隔离故障、快速重启——也源于此。Go 语言证明了通道和消息传递可以使并发代码易于阅读。Temporal 证明了持久化工作流不必意味着与框架作斗争。

我们构建 Wippy 是因为 AI 代理需要能够在运行时变化的基础设施。新工具、更新的提示词、不同的模型——这些不能等待部署周期。当代理需要尝试新方法时,变更应该在几秒钟内生效,而不是等待发布。

由于代理作为具有注册表访问权限的 Actor 运行,它们可以自己进行这些更改——生成代码、注册新组件、调整自己的工作流。在足够的权限下,代理可以在无需人工干预的情况下改进自己的工作方式。系统可以自我编写。