隐私与资料处理说明(请先阅读)
本功能使用你自己部署的 Cloudflare Worker。按本版本代码,后台消息不会发送到 UwU 项目维护者运营的统一后台;但资料会离开你的设备,并由你配置的服务处理:
• 聊天上下文/提示词、生成的回复、AI API 地址与密钥、模型名称,以及用户和聊天标识会发送到你的 Worker,并保存在 Cloudflare Durable Object。已同步任务会在 UwU 保存回复后删除;未确认的旧任务会在创建新任务时清理(超过 7 天或超出最近 100 条)。AI 设置和聊天资料目前没有定期清除机制。
• Worker 会将提示词和 AI API 密钥用于调用你配置的 AI 服务商。对方如何处理或保留资料,取决于该服务商自己的隐私政策和设置。
• 系统通知会包含角色名称与回复内容,并通过 Web Push 送到设备;若锁定画面显示通知预览,旁人可能看到通知内容。
• 因此,部署 Worker 的 Cloudflare 帐号持有人、Cloudflare,以及你选用的 AI 服务商会参与处理相关资料。请只连接自己信任的服务,不要提交你不愿交给这些服务处理的敏感内容,并妥善保管 Worker Token、VAPID 私钥和 AI API 密钥。
本功能不会向 UwU 维护者集中收集上述资料,但不能据此承诺“零隐私风险”。本说明只涵盖后台消息功能,不是法律意见。
先看这里:这个功能是做什么的?
「后台消息服务」是给需要“关闭网页或离开 UwU 后,仍然希望后台继续执行任务并收到系统通知”的用户使用的。它和上面的「持续运行增强」不是同一种东西:后台消息服务依靠你自己部署的 Cloudflare Worker;持续运行增强依靠设备端的音频保活。两者可以分别开关,不会因为开启后台消息服务就强制播放音频。
最重要的原则
你不是把自己的 Cloudflare 帐号交给 UwU,也不是使用别人共用的后台。每个人都应该部署自己的 Worker。下面的教程会从“完全不会 Cloudflare”开始,一步一步告诉你点哪里。
① 准备一个 Cloudflare 帐号
如果你还没有 Cloudflare 帐号,先注册并登录自己的 Cloudflare。进入 Cloudflare 后,在左侧找到 Workers & Pages。
你只需要使用自己的 Cloudflare 帐号,不需要把 Cloudflare 密码、API Token 或其他登录信息发给任何人。
② 先创建 Cloudflare Queue
在 Cloudflare 控制台打开 Queues,点击 Create Queue,名称填写 uwu-ai-jobs 并创建。名称必须完全一致。Queue 不是网址,不用填进 UwU。创建完成后再进行下一步部署 Worker。
③ 用项目提供的一键部署链接创建 Worker打开项目提供的 Cloudflare 部署链接,然后按照 Cloudflare 页面提示登录 GitHub 并授权。
点击这里开始一键部署看到 Cloudflare 的「Set up your application」页面后,建议按以下方式填写:
• Git repository:选择
YUEYUE0426/background-message-backend• Project name:可以保持
background-message-backend• Build command:留空
• Deploy command:填写
npm run deploy• Preview command:填写
npx wrangler preview• Preview builds:不需要开启
• Cloudflare Access:不需要开启
Queue 已在步骤②创建。现在回到部署页面点部署。Worker 的 GitHub 项目已含 Producer 和 Consumer 绑定;部署成功后,在 Worker 的 Bindings 或 Queue 的 Consumers 页面确认
AI_QUEUE 已连到
uwu-ai-jobs。如果 Worker 之前已部署,先建立 Queue,再重新部署最新 GitHub 版本。
④ 找到你自己的 Worker 地址
部署成功后,Cloudflare 会给你的 Worker 一个地址,通常类似:
https://background-message-backend.你的Cloudflare账号.workers.dev
这个地址就是之后要填进 UwU 的「Cloudflare Worker 地址」。请复制你自己 Cloudflare 页面显示的真实地址,不要照抄教程里的示例。
⑤ 打开 /setup,生成 VAPID 密钥
把刚才的 Worker 地址后面加上 /setup 打开,例如:
https://你的Worker地址/setup
打开后会看到「生成 VAPID 密钥」。点击一次即可生成 VAPID_PUBLIC_KEY 和 VAPID_PRIVATE_KEY。
这里不需要填写邮箱,也不要在生成之后重新生成另一组密钥。如果你已经生成并准备使用这一组,就一直使用这一组。
⑥ 回到 Cloudflare,打开 Variables and Secrets
进入:
Workers & Pages → background-message-backend → Settings → Variables and Secrets
然后依次添加下面 3 个项目。
第 1 个:VAPID_PUBLIC_KEY
Key 填:VAPID_PUBLIC_KEY
Value 填:刚才 /setup 页面生成的公钥
Secret:不要开启
Environment:选择 Production
第 2 个:VAPID_PRIVATE_KEY
Key 填:VAPID_PRIVATE_KEY
Value 填:刚才 /setup 页面生成的私钥
Secret:必须开启
Environment:选择 Production
第 3 个:VAPID_SUBJECT
Key 填:VAPID_SUBJECT
Value 自己填写一个邮箱,例如:mailto:your-email@example.com
Secret:不要开启
Environment:选择 Production
特别注意:VAPID_SUBJECT 不参与密钥生成,所以 /setup 页面没有让你填写邮箱。它是在生成密钥以后,单独在 Cloudflare 这里填写的。
⚠️ 私钥一定要保护好
VAPID_PRIVATE_KEY 属于敏感信息。不要发到聊天群、GitHub、截图或公开网页里。Cloudflare 里请使用 Secret 保存它。AI API Key 也同样不要公开。
⑦ 回到 UwU,填写 Worker 地址
进入 设置 → API → 后台消息服务,打开开关。
在「Cloudflare Worker 地址」中粘贴你自己的 Worker 地址,例如:
https://background-message-backend.你的账号.workers.dev
如果你没有设置 BACKEND_TOKEN,下面的「后台访问 Token」可以保持空白。教程不建议新手一开始设置 Token,等整个功能确认正常以后再考虑是否需要额外保护。
⑧ 先点「测试后台」
填写 Worker 地址后,先不要急着测试通知,先点击 「测试后台」。如果显示连接成功,说明 UwU 已经能够访问你的 Worker。
如果这里失败,优先检查 3 件事:
1. Worker 地址有没有复制错;
2. 地址后面有没有误加 /setup;
3. Cloudflare Worker 是否已经成功部署并处于 Active 状态。
⑨ 注册后台通知
测试后台连接成功以后,再点击 「注册后台通知」。第一次使用时,系统可能会询问通知权限,请选择允许。
iPhone 用户特别注意:iOS Web Push 需要把 UwU 添加到主屏幕,然后从主屏幕的 UwU 图标打开,而不是只在 Safari 标签页里使用。添加到主屏幕后,再进入 UwU 完成通知授权和「注册后台通知」。
⑩ AI API 还是在 UwU 里管理,不需要搬到 Cloudflare
这一点非常重要。你的 AI API 地址、API Key、模型等设置,继续在 UwU 的 API 设置里管理。
以后如果你经常换 API,可以直接在 UwU 里使用「快速 API 设置」或普通 API 设置修改。后台服务会把当前配置同步到你自己的 Worker,不需要每换一次 API 就重新编辑 Cloudflare 项目。
也就是说:Cloudflare 负责后台执行和通知;UwU 负责管理你正在使用的 AI API 配置。
⑪ 第一次测试建议这样做
完成上面的设置后,确认 Queue 已建立、Worker 部署成功,并在 UwU 完成通知注册。先点 「发送测试通知」:如果 iPhone 收到系统通知,Push 通道正常。再发送一条普通聊天消息,等出现「后台已接收回复任务」提示后切到后台。AI 完成后应收到系统通知;回到 UwU 时会同步回复。
如果测试通知能收到、但 AI 回复通知收不到,检查 Cloudflare Worker Logs 中的 Queue 与推送错误。
⑫ 「持续运行增强」和「后台消息服务」到底有什么区别?
持续运行增强:设备端音频保活方案,主要目的是尽量让网页在后台继续保持运行;它可能会带来额外的耗电。
后台消息服务:把后台任务交给你自己的 Cloudflare Worker,并通过 Web Push 把消息通知发送回设备;它不需要为了后台功能一直播放音频。
两者是独立开关。开启后台消息服务不会强制开启持续运行增强。
⑬ 如果以后想重新部署怎么办?
不要重新生成一组 VAPID 密钥后随便覆盖旧值。只要你继续使用同一个 Worker 和原来的 VAPID 配置,就继续使用原来的密钥。只有在你明确需要更换整套推送身份时,才重新生成并同步替换相关配置。
⑭ 常见问题
「/setup」打不开:确认 Worker 已经成功部署,并且访问的是你自己的 Worker 地址加 /setup。
「测试后台」失败:先检查 Worker 地址、部署状态和是否误把 /setup 填进了 UwU 的 Worker 地址栏。
能连接 Worker,但收不到通知:先点「发送测试通知」。如果失败,查看 Worker Logs 的推送错误;若提示尚未注册,重新点「注册后台通知」。测试通知成功但 AI 回覆无通知时,确认 Queue 的消费者已连接,并查看 Worker Logs。最后确认 iPhone 允许通知、UwU 从主屏幕打开且专注模式没有过滤通知。
换了 AI API 后后台还在用旧配置:先回到 UwU,确认新的 API 设置已经保存,再让后台服务同步一次。不要去修改 Cloudflare 里的 AI API Key,因为 AI API 配置本来就是由 UwU 管理的。
担心 AI Key 安全:后台任务需要在 Worker 端调用 AI,因此当前 AI 配置会同步保存到你自己控制的 Worker。请只连接自己部署的 Worker,不要把 API Key 同步到陌生服务。
最后给新手宝宝的最短流程:
① Cloudflare 创建 uwu-ai-jobs Queue → ② 部署 GitHub Worker 并确认 Queue 绑定 → ③ 打开 Worker /setup 生成 VAPID 密钥 → ④ Cloudflare 填 3 个 Variables/Secrets → ⑤ 回 UwU 填 Worker 地址并测试 → ⑥ 注册后台通知并发送测试通知 → ⑦ iPhone 从主屏幕使用 UwU → ⑧ 正常聊天并切到后台等待回复。