
Loop Library架构内幕Cloudflare Worker加SQLite Durable Object构建智能体循环目录【免费下载链接】loop-libraryA library of practical AI-agent loops and an installable skill for finding, adapting, and designing repeatable agent workflows.项目地址: https://gitcode.com/gh_mirrors/lo/loop-libraryLoop Library 是一个收集实用 AI 智能体循环Agent Loop的开源目录项目它的后端只用一个 Cloudflare Worker 和 SQLite Durable Object就完成了目录存储、版本控制、备份恢复、防滥用表单与投票系统的全部功能。本文带你拆解这套架构的设计思路看看它如何用极少的基础设施撑起一个完整的智能体循环目录站点。一、整体架构一个 Worker三个 Durable Object整个后端位于 loop-library/worker/ 目录入口是 src/index.js。它在 wrangler.jsonc 中注册了三个 Durable Object 绑定各司其职Durable Object类职责LOOP_CATALOGLoopCatalog循环目录的核心数据库存所有 loop 记录和修订历史FORM_GUARDFormGuard表单限流、去重、幂等控制VOTE_STOREVoteStore每个 loop 的点赞/点踩投票数据这个设计的关键点数据不是放在外部数据库里而是直接以 SQLite 的形式嵌入 Durable Object 内部。Cloudflare 会为每个命名对象保证单实例串行处理天然避免了并发写冲突也不需要维护任何独立的数据库服务。二、SQLite Durable Object目录存储是怎么设计的打开 src/catalog-store.js 可以看到LoopCatalog在构造函数里直接用state.storage.sql建了三张表loops当前每个 loop 的最新状态slug作主键状态只能是draft、published、archived之一loop_revisions追加式修订日志每次发布、改稿、归档都留一条完整快照catalog_settings存放开关类配置比如公开目录是否已激活一个 loop 的完整文档以 JSON 整块存入document_json字段而结构校验由 src/loop-schema.js 负责。worker/examples/loop.json 给了一份完整示例编号、slug、标题、prompt、验证标准、步骤、关键词、相关 loop……这些字段正好对应循环详情页、目录、搜索和面向智能体的各种输出格式所需的全部内容。用修订号做乐观并发控制写入时upsert方法有一个精巧的细节调用方必须带上读取时拿到的expectedRevision服务端发现实际修订号不一致就返回 409 冲突。这就是教科书式的乐观锁——两个管理员同时编辑同一个 loop 时后写的人会被明确拒绝而不是静默覆盖。三、备份与恢复带摘要校验的安全恢复流目录数据可以完整导出/export恢复过程则分三步走/restore/start开始、/restore/chunk分块上传修订记录、/restore/finalize收尾。这套流程值得新手学习的地方有三点只能恢复到空的目录库——避免覆盖线上数据分块上传必须按修订 ID 严格升序每块都做一次 SHA-256 链式摘要chainRevisionDigest任何乱序或篡改都会立刻报 409收尾时逐条核对每个 loop 的最新修订与当前文档一致并回算created_at/updated_atAGENTS.md 中明确要求首次激活必须携带人工审核过的 bootstrap 目录摘要BOOTSTRAP_CATALOG_DIGEST数据库才能对外激活。宁可麻烦也不让未经审查的内容直接上线。四、请求路由从 Worker 到 HTML 页面loop-routes.js 是这个 Worker 的前台。一个请求进来后它先判断路径类型/api/loops返回 JSON API供站点前端和第三方调用/loops/slug动态渲染出完整的循环详情页 HTML/catalog.json、/catalog.md、/llms.txt、/sitemap.xml、/feed.xml同一份数据渲染成多种格式其中 llms.txt 专门服务 AI 智能体让没有安装 Loopy 技能的智能体也能直接读取目录/admin/loops/*管理端点用 Bearer Token 鉴权比对时先做 SHA-256 哈希再恒时比较防止时序攻击也就是说首页、详情页、目录、RSS、sitemap 全部来自同一次数据库读取。发布一个 loop 后所有出口同时更新不存在页面更新了但 sitemap 没更新的一致性问题。所有公开响应统一带Cache-Control: no-store保证发布即时可见。五、防滥用与投票另外两个 Durable Object 在做什么表单提交提交 loop 建议、订阅周报是公开端点天然会被恶意刷。Worker 里为此设计了一条完整的防线Honeypot 陷阱字段机器人填写则静默返回成功Turnstile 人机校验校验 action、hostname 是否匹配幂等键同一表单会话重放请求不会重复入库内容冲突返回 409IP 维度限流建议表单每小时 3 次、每天 10 次由FormGuard用 SQLite 存储事件窗口并靠 alarm 自动清理过期数据投票系统vote-store.js则简单得多一张loop_votes表主键是(loop_slug, voter_key)一个 GitHub 账号对每个 loop 最多一票可随时改票或撤票聚合统计直接用 SQL 的SUM(CASE WHEN ...)一次算出。六、这套架构给新手的启示 Loop Library 后端不到千行核心代码却完整演示了一套现代 Serverless 数据应用的做法SQLite Durable Object 代替外部数据库——小团队项目的目录、配置、投票完全够用零运维追加式修订日志 乐观并发控制——免费获得完整的版本历史且天然支持精确恢复一次写入多格式渲染——JSON、Markdown、llms.txt、sitemap 同源输出人读智能体也读摘要校验贯穿恢复流程——数据完整性不靠信任靠密码学证明想继续深入可以从 worker/test/ 的测试用例入手再对照 README.md 中Notes for maintainers一节了解发布命令与部署细节。这套架构对任何想自建小型内容目录文章库、提示词库、模板库的项目都是一份很值得参考的蓝图。【免费下载链接】loop-libraryA library of practical AI-agent loops and an installable skill for finding, adapting, and designing repeatable agent workflows.项目地址: https://gitcode.com/gh_mirrors/lo/loop-library创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考