Talorys 个人 AI 助手
一条命令把只属于你一个人的 AI 助手部署进自己的 Cloudflare 账户,聊天、记忆、任务与定时提醒全在自己名下。
- Star 数
- ★ 949
- 最近更新
- 今天
- License
- MIT
- 主语言
- TypeScript
- FA 评分
- 63/100 · 存在缺口
30 秒速览
- 可在哪里用
- 平台专用
- 开始前需要
- 典型场景
- 个人开发者想在不订阅任何 SaaS 的前提下,用免费额度给自己的 Cloudflare 账户装一个只服务自己的助手。
- 主要局限
- 强 Cloudflare 绑定:运行完全依赖 Cloudflare Pages、Workers、Durable Objects(SQLite)与 Workers AI,无法迁移到其他云或本地运行产品形态。
- 源码审查
- 63/100 · 存在缺口
这个 Agent 能做什么,适合哪些场景?
Talorys 是一个开源的单用户个人 AI 助手,整套系统运行在你自己拥有的 Cloudflare 账户里,Talorys 开发者不运营任何服务器、数据库或账号。它的前端是部署在 Cloudflare Pages 上的 React 应用,/api/* 请求由一个 Pages Function 通过 service binding 转发给一个私有 Worker(Hono 路由),该 Worker 不开放公网地址(workers_dev: false、preview_urls: false)。核心逻辑位于 Cloudflare Agents SDK 的 Durable Object「TalorysAgent」中,所有会话、记忆、任务、笔记、项目、自动化、会话凭据与设置都存在这个 SQLite 支持的持久化对象里,提醒与周期任务通过 Durable Object alarm 触发,因此无需常驻在线。模型调用走 Workers AI 的 @cf/zai-org/glm-4.7-flash,支持流式输出与工具调用;当 AI 不可用或每日配额用尽时,任务、笔记、记忆和提醒仍然照常工作。认证与授权在 Worker 内完成,安装脚本在本地用 PBKDF2-SHA256 哈希密码并只以 Cloudflare secret 形式保存,仓库声明不含任何遥测、分析或广告代码。
Talorys 把「聊天 + 记忆 + 待办 + 笔记 + 定时任务」合并成一个可自托管的服务:前端 React 应用(Cloudflare Pages)通过 functions/api/[[path]].ts 把请求转发到私有 Worker,Worker 用 Hono 路由并在 Worker 内做鉴权,再通过 getAgentByName("personal-agent") 调用 Durable Object TalorysAgent。TalorysAgent 内使用 SQLite 存储 conversations、memories、tasks、notes、projects、automations、sessions、settings、usage 等表;对话时调用 Workers AI 的 @cf/zai-org/glm-4.7-flash 进行流式生成和工具调用(加任务、写笔记、查记忆等),并以 Server-Sent Events 全程流式返回。提醒与每日任务摘要由 Durable Object alarm 调度,结果写入应用内通知中心;可选的语义记忆检索(Semantic memory recall)默认关闭,可在 Settings → AI 中开启或安装时加 --semantic。记忆历史会区分「当前事实」与「过去事实」,冲突未明时等待用户确认。Settings → Privacy 支持导出 talorys-backup.json 及导入合并,导入被当作不可信输入处理(新自动化默认暂停)。CLI 侧提供 create-talorys 的安装、update、status、doctor、reset-password 等子命令。
- 个人开发者想在不订阅任何 SaaS 的前提下,用免费额度给自己的 Cloudflare 账户装一个只服务自己的助手。
- 经常需要「明天提醒我复习项目」这类一次性或周期性提醒,但不希望为此常驻一台服务器或打开电脑。
- 希望把一个项目相关的笔记、任务和长期偏好集中在一个固定位置,并且能随时导出备份、换机不丢数据。
- 对隐私敏感、不接受第三方托管对话记录的用户,把数据边界限定在自己 Cloudflare 账户的 Durable Object 中。
- 已在使用 Cloudflare Workers/Pages 的开发者,想直接复用现有账号、Wrangler 与免费额度来托管个人助手。
- 多人共享设备但只需要一个所有者密码的个人用户,在手机和电脑上用同一个 owner 身份登录使用。
如何安装或部署这个 Agent?
前置条件:Node.js 22+、一个 Cloudflare 账户、能编辑 Workers 与 Pages 的权限。官方推荐的安装方式是一条命令(安装器会自带 Wrangler CLI):
npx create-talorys@latest非交互式安装(需要提前设置 CLOUDFLARE_API_TOKEN):
TALORYS_OWNER_PASSWORD=... npx create-talorys@latest --yes --account-id <id>如果改用 API Token 而不是浏览器 OAuth 登录,Token 需要以下权限:Account › Workers Scripts › Edit、Account › Cloudflare Pages › Edit、Account › Workers AI › Read、Account › Account Settings › Read、User › User Details › Read(可选)。
安装完成后会在当前目录生成 talorys/ 目录,内含 talorys.json(安装 ID、账户 ID、资源名、URL,不含密钥)与可部署产物,请保留以便后续 update。中断后可在同一位置重跑同一条命令继续,不会重复创建资源,也不会删除已有数据。
本地开发方式:
git clone https://github.com/rociiu/talorys.git
cd talorys
npm install
npm run dev如何使用这个 Agent?
安装器会打印真实的 https://….pages.dev 地址,用浏览器打开后输入安装时设置的 owner 密码即可开始使用。
忘记密码时,在 talorys/ 目录执行(会替换密码 secret 并登出所有设备):
npx create-talorys@latest reset-password升级与诊断:
npx create-talorys@latest update
npx create-talorys@latest status
npx create-talorys@latest doctor本地开发时 npm run dev 会同时启动 agent Worker(wrangler dev,端口 8787)、带 service binding 的 Pages Function 代理(wrangler pages dev,端口 8788)和 Vite UI(http://localhost:5173),并自动生成 apps/agent/.dev.vars,使用确定性 mock AI provider,无需登录 Cloudflare:
npm run build
npm test
npm run test:e2e
npm run test:pack
npm run typecheck
npm run lint数据备份与恢复在应用内完成:Settings → Privacy → Download backup 导出 talorys-backup.json,Import 会校验文件并在单个事务内合并。
这个 Agent 有哪些优点和局限?
- 数据边界清晰:所有会话、记忆、任务都存入你自己 Cloudflare 账户里的单个 SQLite Durable Object,仓库声明无遥测、无分析、无广告代码。
- 装上就能用:一条 npx create-talorys@latest 完成 Worker、Pages、secret 与 service binding 的创建与部署,并自动做健康检查,不需要自备数据库或对象存储。
- 降级设计明确:AI 额度用尽或 Workers AI 不可用时,任务、笔记、记忆和提醒仍可运行,纯提醒与每日摘要不消耗 AI。
- 可更新、可回滚语义清晰:TalorysAgent 提供 TalorysAgent → checkpoint 与 update 流程,迁移为追加式,升级不会重建 Durable Object、不重置密码。
- 备份体系完善:Settings 内的 JSON 全量备份/恢复覆盖对话、记忆、任务、笔记、项目、自动化与设置,并支持 export/import 到新部署。
- 安装器按声明会自动完成 account 选择、密码哈希、资源命名与部署后校验,并输出真实 pages.dev 地址。
- 强 Cloudflare 绑定:运行完全依赖 Cloudflare Pages、Workers、Durable Objects(SQLite)与 Workers AI,无法迁移到其他云或本地运行产品形态。
- 对话模型固定为 Workers AI 的 @cf/zai-org/glm-4.7-flash,仓库未提供切换到 OpenAI / Anthropic 等其他模型供应商的适配层。
- 需要用户自行持有并授权 Cloudflare 账户;使用 API Token 时须授予 Workers Scripts / Pages 编辑等较宽权限。
- 免费额度存在账户级上限(请求、Durable Objects 用量、每日 Workers AI Neuron 配额),配额由 Cloudflare 设定且可能变化,超出后需自行评估付费计划。
- 单用户、无注册与团队体系的定位,意味着多用户共享、权限分级、协作审计等需求无法在现版本内满足。
- 安装器的健康检查与 doctor 诊断覆盖部署链路,但真实云资源创建(Durable Objects、Pages 项目)仍受 Cloudflare 侧状态影响,新 pages.dev 站点有时需数分钟才能通过检查。
这个 Agent 与同类方案有什么区别?
与相关度最高的同类 agent 并排比较关键指标。
| Agent | 源码审查 | 形态 / 费用 | Star | 最近更新 | 主语言 | 完整支持的平台 |
|---|---|---|---|---|---|---|
| Talorys 个人 AI 助手 当前 | 63 · 存在缺口 | — | ★ 949 | 今天 | TypeScript | — |
| GAIA 个人 AI 助手 | 73 · 存在缺口 | 云服务 / SaaS免费版 + 付费版 | ★ 309 | 今天 | Python | — |
| Kody 个人助理平台 | 70 · 存在缺口 | 命令行工具免费 + 模型费 | ★ 784 | 今天 | TypeScript | — |
| Eclaire | 47 · 缺口较多 | 自托管服务免费 | ★ 924 | 5 个月前 | TypeScript | OpenAI API |
FollowAgents 如何评估这个 Agent?
查看各维度的扣分理由
最小权限:Worker 以 workers_dev:false、preview_urls:false 部署且无公开 URL,浏览器仅经 Pages Function 的 service binding 访问,权限清单明确列出所需 Cloudflare 权限,但未提供实际 wrangler 配置或绑定文件佐证,故扣至 2。用户确认:破坏性工具只生成待批准提案,测试覆盖批准/拒绝/过期/重复批准、CSRF 头与匿名拒绝,证据充分,给 3。数据流透明:README 说明数据存于自有账户、无遥测、Workers AI 会处理消息与记忆,但缺少逐字段数据流清单,给 2。敏感数据:密码 PBKDF2-SHA256 本地哈希、会话密钥 256 位、导出排除会话与凭据,但未见密钥轮换或静态加密细节,给 2。依赖安全:仅见 overrides 固定 esbuild,无 lockfile 审计、无 Dependabot/SCA 证据,给 1。外部影响:安装器不启用付费服务、导入的自动化默认暂停、不删除数据,但真实账户副作用仅由可选 smoke 测试覆盖,给 2。回滚:迁移事务化且失败回滚、更新不重建 DO 命名空间、导入幂等,但无显式卸载/回退流程,给 2。来源归属:README 列出贡献者与 MIT 版权,但发布者身份未经验证、无签名或来源证明,给 1。
自一致性:README 架构、服务清单与测试断言(迁移、预算、审批)相互吻合,但未提供实际 wrangler/绑定文件核对,给 2。依赖可用性:engines 要求 Node>=22,依赖使用 ^ 范围且无 lockfile 证据,无法确认可复现安装,给 1。失败信息:AI 配额/容量错误映射为友好代码、取消标记为 cancelled、校验返回类型化错误,但未展示完整错误目录,给 2。
受众与场景:面向单用户个人助理,覆盖聊天、记忆、任务、笔记、提醒,场景清晰但未覆盖多用户或团队,给 2。能力边界:明确单用户、无注册、无团队、免费额度限制、AI 不可用时降级,边界陈述充分,给 2。触发精度:自动化支持一次性/每日/每周/间隔,拒绝过去时间与非法日期,DST 逻辑在 shared 包,但未展示完整触发规则文档,给 2。环境适配:面向 Cloudflare 免费计划、Node 22+、本地 mock 开发,环境假设明确,但未覆盖其他部署目标,给 2。
信息架构:README 分节清晰、仓库布局列出,但缺少 AGENTS.md 或机器可读清单,给 2。安装说明:一条命令安装、非交互模式、权限清单、故障排查表,说明充分,给 3。命名稳定性:资源名 talorys-<id>-* 与包名稳定,但版本 0.1.0 且无命名兼容承诺,给 2。示例与 FAQ:有截图、命令示例与故障排查表,但无独立 FAQ 或更多用例,给 2。已知限制:说明免费额度、AI 不可用降级、单用户限制,但未集中列出全部限制,给 2。许可证:MIT 全文存在且 README 标注,给 3。版本与变更日志:仅 package.json 版本 0.1.0,无 CHANGELOG 或发布记录,给 1。维护责任:SECURITY.md 给出响应时限与更新路径,但发布者未验证、无治理或支持承诺,给 1。
输出可用性:SSE 流式、Markdown、工具活动指示、通知中心,输出形态可用,但未展示实际输出样例,给 2。边际价值:在自有 Cloudflare 账户内提供私有个人助理,相对通用聊天有差异化,但功能与常见个人助理重叠,给 2。成本效益:免费计划友好、无遥测、AI 配额用尽后非 AI 功能继续,成本控制明确,但配额与计费依赖 Cloudflare 且未量化,给 2。
主张可追溯:README 主张多与测试对应,但无逐条主张到文件/行的映射,给 1。跨源印证:README、SECURITY.md、测试与 CI 工作流相互印证关键行为,给 2。事实与推断分离:文档区分设计意图与测试断言,但部分安全主张(如无遥测)仅靠声明,给 2。
- 发布者身份未经验证,安装前应自行核对包来源与签名。
- 依赖使用 ^ 范围且未见 lockfile,安装结果可能不可复现,建议锁定版本并审计依赖。
- 无 CHANGELOG 与发布记录,版本仅 0.1.0,升级前应确认变更内容。
- 真实账户副作用仅由可选 smoke 测试覆盖,生产部署前应在测试账户验证。
- 安全主张(如无遥测、无公开 URL)主要来自文档声明,缺少配置文件佐证。