上下文对AI代理至关重要,但我认为共享状态是下一个问题
Ablo是一个类型安全的同步引擎,用于管理人类、服务器代码和AI代理共同编辑的共享应用状态。它提供实时更新、防止静默覆盖、支持代理协调(如claim机制),并集成React。本文详细介绍了Ablo的核心功能、快速入门、读写操作、代理工作协调、React集成、身份同步组以及HTTP写入和数据库连接等。
Ablo是一个面向共享应用状态的类型安全同步引擎,专为人类、服务器代码和AI代理同时编辑的场景设计。它确保所有编辑实时可见,不会静默覆盖,并能追踪谁在编辑什么。
为什么选择Ablo
- 实时默认:每个创建/更新/删除操作都会向所有订阅者(包括人类和代理)广播确认的增量,无需额外开启“多人模式”。
- 无静默覆盖:写入操作受到陈旧读取保护,并通过claim机制在慢速读取到LLM写入的间隙保持行锁定,使并发编辑排队而非覆盖。
- 为代理而生:可以查看谁正在编辑(claimState/queue),协调公平排队,并提供llms.txt以便编码代理从真实API集成。
- 端到端类型安全:Zod schema产生类型化的模型代理(如ablo..update),乐观本地读取和响应式React hooks。
- 自带认证和数据库:Ablo将实时数据限定到你现有身份定义的同步组,并可通过数据源保留数据库作为真相源。
快速入门
安装@abloatai/ablo后,定义schema并创建Ablo实例。示例展示了天气报告的创建和更新,所有操作均类型安全并实时同步。
读写操作
- 读取:
retrieve从本地缓存同步返回单行;list过滤和排序已同步数据;load在需要时从服务器获取。 - 写入:
create和update乐观应用并解析。提供wait和idempotencyKey选项。
协调长代理工作
代理读取一行,思考30秒再写回,期间可能覆盖他人更改。claim机制保持行锁定,确保代理操作基于最新状态。支持查询claim状态和队列深度。
React集成
通过AbloProvider包裹应用,使用useAblo hook读取和写入。读取响应式更新,写入乐观广播。
身份与同步组
Ablo不处理认证,但支持从现有认证系统(如Clerk、Auth0)获取用户ID和团队ID,将其映射到同步组,实现数据隔离。
多人协作
没有单独的多人模式。当人类UI、服务器操作和代理工作者共享同一schema并通过Ablo写入时,所有更改实时相互可见。
HTTP写入和数据库连接
对于非JavaScript环境,提供HTTP端点进行写入。同时支持将现有数据库作为数据源,Ablo发送签名提交请求,你的应用自行写入数据库。
配置和错误处理
Ablo接受schema、apiKey、baseURL等配置。所有SDK错误继承自AbloError,携带requestId以便调试。
总之,Ablo为多参与者共享状态提供了一个强大且类型安全的解决方案,特别适合AI代理工作流和实时协作应用。