Talorys:基于 Cloudflare 免费层的自托管个人 AI 代理

TL;DR

Talorys 是一个开源的个人 AI 助手,你可以在自己的 Cloudflare 账户中通过一条命令启动它,并且它完全运行在 Cloudflare 的免费层服务上,无需任何外部后端。


Talorys 提供什么

  • 私有聊天界面:支持流式 Markdown 响应和工具活动指示器。
  • 持久化记忆:存储在基于 SQLite 的 Durable Object 中;每次对话仅发送最相关的事实给模型。
  • 完整的 CRUD 功能:通过 UI 或自然语言命令(例如:“添加一个明天复习项目的任务”)管理任务、笔记和项目。
  • 自动化:一次性和周期性提醒、每日摘要,以及运行在 Durable Object 闹钟上的可选 AI 驱动例程。
  • 单用户设计 – 无需注册流程,无团队功能;安装程序会创建一个存储为 Cloudflare 密钥的所有者密码。
  • 优雅降级 – 如果 Workers AI 配额耗尽,非 AI 功能(任务、笔记、提醒)仍可继续工作。

"一个人。一个 Cloudflare 账户。一条命令。一个个人 AI 代理。" – 项目 README


架构概览

Browser ──HTTPS──▶ Cloudflare Pages (React UI + /api Pages Function)
                         │  service binding (private)
                         ▼
                   Private Worker (Hono router)
                         │  getAgentByName("personal-agent")
                         ▼
                   TalorysAgent – Cloudflare Agents SDK Durable Object
                     ├─ SQLite: chats, memories, tasks, notes, automations, …
                     ├─ Workers AI: @cf/zai-org/glm-4.7-flash (streaming + tool calls)
                     └─ Alarms: scheduled reminders & recurring jobs
  • 浏览器仅与 *.pages.dev 站点通信。API 调用通过服务绑定代理到私有 Worker,因此该 Worker 没有公共 URL。
  • 身份验证和授权在 Worker 内部执行,而非前端。
  • 聊天响应使用服务器发送事件 (SSE) 流式传输到客户端。

使用的 Cloudflare 服务(均支持免费层)

服务 角色 免费层可用性
Cloudflare Pages 托管 React UI 和 API Pages Function ✅
Cloudflare Workers 私有 API Worker(无公共端点) ✅
Durable Objects (SQLite) 存储所有用户数据并运行基于闹钟的计划任务 ✅
Workers AI 提供 LLM (@cf/zai-org/glm-4.7-flash) ✅ (每日神经元配额)

Talorys 有意避免使用 R2、D1、KV、Vectorize、AI Search 或 Workflows 等付费服务。


一键部署

npx create-talorys@latest

安装程序执行以下步骤:

  1. 检查 Node 20.18+ 并使用捆绑的 Wrangler CLI。
  2. 使用 Cloudflare 进行身份验证(如有必要,打开 OAuth 页面)。
  3. 选择账户和代理名称。
  4. 提示输入所有者密码;密码在本地使用 PBKDF2-SHA256 哈希处理并存储为 Cloudflare 密钥。
  5. 生成 256 位会话密钥和唯一资源名称。
  6. 部署私有 Worker,创建 Durable Object 命名空间,存储密钥,并创建带有服务绑定的 Pages 项目。
  7. 运行健康检查(前端、身份验证端点、存储)而不调用任何 AI 推理。
  8. 打印最终的 https://<name>.pages.dev URL。

安装程序会写入一个包含 talorys.json(仅元数据)和可部署制品的 talorys/ 目录。重新运行该命令会恢复中断的安装,且永远不会删除现有数据。

非交互模式

TALORYS_OWNER_PASSWORD=... \
  npx create-talorys@latest --yes --account-id <ACCOUNT_ID>

(如果你没有通过 OAuth 流程登录,则需要 CLOUDFLARE_API_TOKEN。)


所需权限

如果你使用 API 令牌而不是 OAuth 流程,它必须具有:

  • Account › Workers Scripts › Edit
  • Account › Cloudflare Pages › Edit
  • Account › Workers AI › Read
  • Account › Account Settings › Read
  • User › User Details › Read(可选,用于显示你的电子邮件)

数据驻留与隐私

所有用户数据——对话、记忆、任务、笔记、项目、自动化和设置——都驻留在你 Cloudflare 账户内的一个基于 SQLite 的 Durable Object 中。Talorys 不发送遥测、分析或广告代码,也从不向项目维护者发送数据。

"Talorys 没有遥测、分析、跟踪或广告代码,也不会向其开发者发送任何内容。" – README

Cloudflare 仅在提供其平台服务(包括运行 LLM 推理)时处理数据。详情请查阅 Cloudflare 的隐私政策和 Workers AI 条款。


免费层限制与成本模型

  • Cloudflare 的免费计划对请求、Durable Object 使用量以及 Workers AI 的每日 10,000 神经元配额有限制。
  • 当 AI 配额耗尽时,UI 会显示清晰的消息,并在每日重置后恢复;所有非 AI 功能保持正常运行。
  • 如果你升级到 Cloudflare 付费计划,超出免费额度的任何使用量将由 Cloudflare 收费,而非 Talorys。
  • 内置的护栏(可在 Settings → AI 下配置)允许你限制:
    • 最大输出 Token 数
    • 最大上下文 Token 数(较旧的历史记录会被总结)
    • 每次请求的最大工具调用次数
    • 每日最大 AI 请求数
    • 每日最大计划 AI 运行次数

本地开发工作流

git clone https://github.com/rociiu/talorys.git
cd talorys
npm install
npm run dev

npm run dev 启动:

  • 代理 Worker (wrangler dev 在端口 8787)
  • Pages Function 代理 (wrangler pages dev 在端口 8788)
  • Vite UI 在 http://localhost:5173

使用确定性的模拟 AI 提供程序,因此本地测试无需 Cloudflare 登录。状态保存在 .wrangler/state 中。


备份与迁移

  • 导出:Settings → Privacy → Download backup 会创建包含所有用户生成数据(对话、记忆、任务、笔记、项目、自动化、设置)的 talorys-backup.json。凭据和会话数据不包含在内。
  • 导入:UI 会验证 JSON 并以事务方式合并;多次导入同一个备份是安全的。

更新现有部署

在 talorys/ 目录下,运行:

npx create-talorys@latest update

该命令将最新的 Worker 和前端重新部署到相同的资源上。Durable Object 命名空间被保留,所有者密码和会话保持有效,模式迁移会在第一次请求时自动运行。

其他辅助命令:

  • npx create-talorys@latest status – 显示当前部署的健康状况。
  • npx create-talorys@latest doctor – 运行自动诊断。
  • npx create-talorys@latest reset-password – 替换所有者密码密钥并注销所有设备。

社区反馈与批评 (HN 评论)

  • “自托管”的定义 – 一些评论者认为,完全依赖 Cloudflare 的托管服务并不是真正的自托管。一位用户指出:“完全依赖 Cloudflare 根本谈不上自托管。”
  • 免费层的可靠性 – 一位用户报告了 Cloudflare 免费 AI 配额的问题,称他们意外地被收取了神经元使用费且未获得支持。
  • 性能担忧 – 一些用户认为 Workers AI 在交互式聊天中“非常慢”,建议它更适合后台任务。
  • 定制潜力 – 一条评论指出,将 AI 端点替换为本地模型服务器非常简单,这可以将该项目转变为更传统的自托管解决方案。
  • 对 Durable Objects 的赞赏 – 一位评论者称 Durable Objects 是他们见过的“最酷的东西”,强调了代码与数据紧密耦合的优势。
  • 安全认知 – 批评者警告说,将产品营销为“自托管”可能会误导用户,使其忽视在第三方平台上存储个人数据的安全隐患。

何时使用 Talorys

  • 你想要一个个人 AI 助手,而无需管理服务器、数据库或 Docker 容器。
  • 你乐于将数据保存在 Cloudflare 的免费层中,并接受每日 AI 神经元限制。
  • 你重视单用户隐私(无注册、无第三方遥测),并且可以接受 Cloudflare 作为底层基础设施。
  • 你更喜欢一键安装以及在桌面和移动设备上都能运行的 Web UI。

局限性与待解决问题

  • 真正的自托管:该解决方案绑定在 Cloudflare 上;将其迁移到本地硬件需要替换 Workers、Durable Objects 和 Workers AI。
  • 可扩展性:专为单用户设计;多用户场景需要重大的架构变更。
  • 评估:正如一位评论者所指出的,目前缺乏关于记忆召回准确性或任务完成率的公开基准测试。
  • 延迟:Workers AI 可能会为实时聊天带来明显的延迟,这可能会影响用户体验。

总结

Talorys 表明,只要你接受该平台的限制以及将“自托管”定义为“托管在自己的 Cloudflare 账户中”,就可以在 Cloudflare 的免费层上以零服务器管理和零成本构建并部署功能齐全的个人 AI 助手。该项目的开源性质、简单的安装程序以及对 Durable Objects 的使用,使其成为业余爱好者和注重隐私的用户的理想起点,而社区的批评也凸显了对更清晰术语和更稳健性能保证的需求。

Sources

相关

  • 项目
  • 项目
  • Dispatch
  • Dispatch
  • Dispatch