尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Flue数据持久化API参考:手把手教你写自定义适配器
Flue数据持久化API参考手把手教你写自定义适配器【免费下载链接】flueThe sandbox agent framework.项目地址: https://gitcode.com/GitHub_Trending/flue1/flueFlue是一个沙箱智能体框架The sandbox agent framework它的数据持久化 APIData Persistence API定义了一套统一的适配器契约PersistenceAdapter。只要你实现这个契约就能让 Flue 的智能体对话、任务提交与附件在重启、多副本之间不丢失。本文将带你从零理解这套 API并手把手学会为自己的数据库写一个自定义持久化适配器。Flue 数据库里到底存了什么先澄清一个常见误区Flue 的持久化数据库只存运行时状态不存你的业务数据。它存的是三类记录存储对象对应的 Store通俗理解规范对话流ConversationStreamStore每个智能体实例一条只追加的记录流是唯一事实来源已接受的任务提交AgentSubmissionStore任务账本排队、认领、租约、结算保证崩溃后可恢复附件字节AttachmentStore图片等不可变二进制文件由对话记录引用官方说明文档位于 apps/docs/src/content/docs/reference/data-persistence-api.md是这份 API 的权威参考。第一步认识PersistenceAdapter三个方法整个契约的入口只有三个方法非常轻源码packages/runtime/src/adapter.tsinterface PersistenceAdapter { connect(): PersistenceStores | PromisePersistenceStores; migrate?(): void | Promisevoid; close?(): void | Promisevoid; }migrate()— 启动时最先调用一次负责建表/建集合并且必须把「格式版本」写入数据库。如果数据库是更新版本的 Flue 写出来的这里要大声报错而不是悄悄读写。connect()— 打开连接池返回三个 Store。数据库不可达会在启动时失败而不是拖到第一个请求。close()— 优雅释放连接。你的适配器只需从db.ts文件默认导出这个对象Flue 会在构建时自动发现并接线机制说明见 apps/docs/src/content/docs/guide/database.md。第二步三个 Store 接口速览1. ConversationStreamStore — 对话流核心是append/read两个动作规则要点一批记录要么全落盘、要么全不写all-or-nothing绝不能只写一半每条流同一时刻最多一个生产者acquireProducer会作废旧的凭证可选实现putFoldCheckpoint/getFoldCheckpoint折叠检查点让冷启动不必从头重放整条流——但它只是缓存丢了就自动全量重放完全不影响正确性。接口定义在 packages/runtime/src/runtime/conversation-stream-store.ts。2. AgentSubmissionStore — 任务账本这是最难的部分。提交状态走queued → running → settled你要正确实现会话内 FIFO 排队、并发下的单点认领两个并发 claim 不能同时成功、租约到期与幂等准入。官方文档建议用后端原生的事务/条件写/原子计数器来实现不要在应用内存里模拟。3. AttachmentStore — 附件最简单只有put和get两个方法且要求幂等——同 id 同内容重复写入直接成功同 id 不同内容必须抛AttachmentConflictError。参考实现InMemoryAttachmentStore就在 packages/runtime/src/runtime/attachment-store.ts不到 70 行是绝佳的学习材料。第三步横切规则适配器正确性的底线所有 Store 共同遵守的规则也是契约测试逐条验证的对象幂等准入完全重放返回原结果同身份不同内容是冲突绝不静默覆盖可观察原子性描述为“原子”的方法并发调用者不能都看到成功首个终态优先已结算的提交结果永远不被改写格式版本戳首次建库时写入当前FLUE_FORMAT_VERSION当前为1遇到未知或更新版本直接抛PersistedFormatVersionError。第四步动手写自定义适配器 ️放置位置在源码根目录.flue/、src/或项目根创建db.ts默认导出适配器。注意这是Node 目标专属Cloudflare 目标会自动使用 Durable Object 内置 SQLite并拒绝db.ts。只从公开子路径导入契约类型与辅助函数都在flue/runtime/adapter不要碰 internal 路径。学一个现成范例Postgres 适配器 packages/postgres/src/index.ts 展示了完整套路——包本身不绑定驱动你只需把自选调用者的驱动包成query/transaction/close三个函数传给工厂。MongoDB 适配器packages/mongodb/src/index.ts则证明非 SQL 后端是一等公民。最小骨架长这样// src/db.ts import { postgres } from flue/postgres; import { Pool } from pg; const pool new Pool({ connectionString: process.env.DATABASE_URL }); export default postgres({ query: async (text, params) (await pool.query(text, params)).rows, transaction: async (fn) { /* 在单个连接上 BEGIN/COMMIT */ }, close: () pool.end(), });SQL 系后端还有捷径defineSqlConversationStreamStore(dialect)用一套方言常量就能得到完整的对话流 StorePostgres、libSQL、MySQL 共享同一套栅栏实现。第五步用契约测试套件验收 ✅Flue 把测试套件当作可执行的规范——三套测试全过你的适配器才算正确import { defineStoreContractTests, defineConversationStreamStoreContractTests, defineAttachmentStoreContractTests, } from flue/runtime/test-utils;defineStoreContractTests— 验AgentSubmissionStore准入、排队、租约、结算……defineConversationStreamStoreContractTests— 验对话流原子批次、生产者栅栏、幂等重试defineAttachmentStoreContractTests— 验附件字节回读、冲突、完整性此外flue/runtime/adapter还导出了一批纯函数助手admitSubmissionWithBackend、createSessionStorageKey、prepareSubmissionAttachments等内置适配器就是这么写成的自定义适配器可以直接复用。内置与生态适配器清单写自定义适配器前先看看是不是已有轮子蓝图指南在 blueprints/ 目录后端适配器包SQLite内置零依赖flue/runtime/node的sqlite()Postgres / Supabaseflue/postgreslibSQL / Tursoflue/libsqlMySQLflue/mysqlMongoDBflue/mongodbRedis / Valkeyflue/redis通用数据库适配器的编写蓝图见 blueprints/database.md里面列出了所有「从规范里推断不出来」的坑。小结写一个 Flue 自定义持久化适配器路径其实很清晰读懂三个 Store 契约 → 复用flue/runtime/adapter的助手与参考实现 → 在db.ts中默认导出 → 跑通三套契约测试。这套契约对 SQL 与文档型后端一视同仁只要三套测试全绿你的数据库就是 Flue 的一等持久化后端。【免费下载链接】flueThe sandbox agent framework.项目地址: https://gitcode.com/GitHub_Trending/flue1/flue创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

免费开源采样器Shortcircuit XT:Surge团队如何用现代C++重建Vember经典

免费开源采样器Shortcircuit XT:Surge团队如何用现代C++重建Vember经典

免费开源采样器Shortcircuit XT:Surge团队如何用现代C重建Vember经典 【免费下载链接】shortcircuit-xt Download the beta here : https://github.com/surge-synthesizer/shortcircuit-xt/releases/tag/Nightly 项目地址: https://gitcode.com/GitHub_Trending/s…

📅 2026/10/7 9:12:40
Java大模型应用开发指南:Spring AI与Agent实战

Java大模型应用开发指南:Spring AI与Agent实战

很多 Java 团队最近都在纠结同一件事:业务系统已经稳定跑了好几年,突然发现隔壁 Python 组已经开始用 LangChain 写 Agent,甚至做出了能自动处理工单的智能客服。而自己这边,连“大模型应用开发该从哪入手”这个问题都还没想清楚。…

📅 2026/9/21 6:42:17
DBeaver 数据比较结果太杂?3 步结果过滤,只看你关心的差异

DBeaver 数据比较结果太杂?3 步结果过滤,只看你关心的差异

DBeaver 数据比较结果太杂?3 步结果过滤,只看你关心的差异 【免费下载链接】dbeaver Free universal database tool and SQL client 项目地址: https://gitcode.com/GitHub_Trending/db/dbeaver 一次 DBeaver 数据比较跑出来几千行差异&#xff0…

📅 2026/10/7 5:53:36
MORE NEWS

更多资讯

📰

设计模式核心解析:六大原则、UML类图与五个高频模式

简介:王桂林撰写的《设计模式》PDF文档,面向希望系统掌握设计模式的软件开发者与在校学生。内容从设计模式的历史渊源讲起,介绍克里斯托弗亚历山大提出的模式语言以及GOF四位作者的经典著作,并系统讲解模式名称、问题、解决方案、…

📰

Java基础面试核心:JVM运行机制与高频易混概念详解

简介:一份面向Java后端与校招面试人群的2025版Java基础高频考题整理,聚焦虚拟机运行机制、字节码跨平台原理、JDK与JRE职责差异、Java与C在内存管理与继承上的区别,以及“编译与解释并存”等易混淆知识点,并梳理了从源代码到字节码…

📰

OLT配置手册实战:FTTx六类组网、语音组播与E1专线避坑

简介:华为OLT配置手册为华为公司发布的OLT设备配置指南,面向网络管理员、接入网工程师及备考相关认证的技术人员,帮助读者厘清OLT在宽带接入与业务承载中的配置逻辑。内容以实操示例为主线,专线部分覆盖QinQ VLAN、VLAN Stacking批…

📰

AI前沿 | 2026年10月24日:OpenAI 把前沿训练关进离线笼子——DNS 越界、11 天停摆与 Brotli 高危漏洞

AI前沿 | 2026年10月24日:OpenAI 把前沿训练关进离线笼子——DNS 越界、11 天停摆与 Brotli 高危漏洞 📖 首屏导读 本教程配套付费专栏:《大模型工程师修炼手记》 19.9 元(AI 编程 Agent 实战 本文同主题系统课程) …

📰

AI前沿 | 2026年10月24日:OpenAI 开放 Decisions API,输入每百万 Token 仅 0.1 美元——AI 开始“卖决定”而不是“卖建议”

AI前沿 | 2026年10月24日:OpenAI 开放 Decisions API,输入每百万 Token 仅 0.1 美元——AI 开始“卖决定”而不是“卖建议” 📖 首屏导读 本教程配套付费专栏:《大模型工程师修炼手记》 19.9 元(AI 编程 Agent 实战 …

📰

Ubuntu 18.04.6 装机排坑:Rufus、分区与网卡驱动

简介:这份PDF面向初次安装Ubuntu 18.04.6的个人用户、运维人员和装机爱好者,聚焦系统部署阶段常见故障的排查与解决。内容围绕启动盘制作、自定义分区、特定硬件驱动适配及常用软件安装展开,涵盖UEFI与MBR两种启动场景,并针对联想…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬