01 · 项目总览与长期目标
档案版本:2026-10-27 | 证据等级见 README | 本文不含任何密钥、令牌或密码
1. 一句话
「小手机」= 猫爪聊天:一个单页、仿微信、手机优先的 AI 伴侣聊天 Web App。前端是唯一真源 index.html,后端是唯一真源 worker.js,构建时内联成单文件 cat-chat-all-in-one.js 部署到 Cloudflare Workers;另一套 Node 垫片(deploy-web/)把同一个 worker.js 跑在国内托管平台上,用 SQLite 代替 KV。数据按「角色(profile)」隔离,记忆分「长期记忆碎片 / 结构化档案 / 高光原话 / 经历 / 关联关系」五类,模型 Key 由用户在前端自填。
2. 项目起因与使用场景
- 起因:用户已有一个自写的聊天前端(上传文件
0643203b2611b966_v6.html,56,757 字节,仍在/root/uploads/),要求在不重构、不改布局的前提下,把它升级成「有真实后端、有长期记忆、能主动搭话」的 AI 伴侣。 - 使用场景:手机浏览器 / 添加到主屏幕(PWA),日常一对一聊天;用户是唯一使用者,默认角色
owner。 - 真实角色:长期目标是接入角色「沈屿」的本体(历史聊天 + 人设 + 记忆迁移),当前阶段属于测试角色验证期(任务书原文要求:测试稳定后再删测试后端与测试数据,再迁移沈屿本体)。
3. 最初的需求(2026-10-05,原文要点)
用户第一条任务书写明「绝对不准重构我的代码结构,必须保留现有布局」,并要求一次性完成五组功能:
| 组 | 要求 |
|---|---|
| 一、前端 UI | ①果冻气泡(backdrop-filter: blur(8px)、半透明白底、微高光边缘、圆角 16px、最大宽 75%)②圆形头像、必须可自定义上传,不写死默认图 ③猫爪印面板:点开先弹「颜文字 / 表情包」二级选项,颜文字点击填入输入框,表情包支持本地上传转 Base64 与粘贴 URL,右侧麦克风占位 ④长按菜单:复制 / 引用回复 / 删除单条 / 收藏,引用时输入框上方显示原文 ⑤消息状态:发送中 / 成功 / 失败可重试 ⑥动态状态胶囊:按后端 ai_status 渲染,没有就不显示(不留空白框) |
| 二、数据与请求 | ①localStorage 换 IndexedDB ②删掉 setTimeout 假回复,改真实 fetch,报错显示在气泡里 |
| 三、后端与记忆(核心) | ①外接 Cloudflare D1 或 KV,用户输入与 AI 回复原封不动入库并带时间戳 ②每次发消息检索最相关历史原话 + 人设打包给模型,预留 Worker 地址 ③请求体预留 tools: [] |
| 四、高级功能 | ①时间感知:前端带系统时间,后端注入提示词 ②主动消息:按时间间隔触发,每天 2–3 次 |
| 五、绝对禁止 | ①不准一次性给几百行代码,要拆成几步教用户在手机上替换 ②不准重构结构、不准改 UI 风格 |
当时通过提问确认的三个方案(用户已确认): 1. 后端 Worker 统一转发(Key 不进前端直连); 2. 检索先用关键词匹配(不上向量库); 3. 主动消息由页面打开时检查(不用 Cron)。
4. 长期目标(任务书 v1.0,12 项能力)
来源:
/root/uploads/1792388616892580314-文本.txt(《小手机项目|完整系统升级与安全改造任务书 v1.0》,27KB)
- 完整保存所有聊天原文
- 可靠的本地与云端同步机制
- 独立的高光原话库
- 结构化的经历记忆
- 可追溯来源的记忆时间线与关联关系
- 可搜索、可导出、可恢复的完整聊天档案
- 分层人设系统与人设版本管理
- 定期批量运行的人设成长分析
- 带证据、反例、审核、回滚的成长建议流程
- 统一的后台管理系统
- 沈屿本体的历史聊天 / 人设 / 记忆迁移
- 控制 Token 与 Cloudflare 成本
核心原则(原文):保留现有可用能力,优先修复真问题,再逐步加功能;禁止为了新功能破坏原有项目。
5. 当前三个线上入口
| 入口 | 地址 | 运行时 | 存储 | 定位 |
|---|---|---|---|---|
| v1 | https://zhai.beibbloveme.workers.dev |
Cloudflare Worker zhai |
KV chat_memory_v2 |
历史主库:真实聊天归档与记忆都在这里(用户长期使用的入口) |
| v2 | https://zhai-v2.beibbloveme.workers.dev |
Cloudflare Worker zhai-v2 |
KV chat_memory_v3 |
按用户要求全新重建的空环境(2026-10-24 深夜),不是搬迁失败 |
| 国内版 | https://a0cd1755f00a22a37.app.workbuddy.host |
Node 22 + server.js 垫片 |
/tmp/cat-chat-data/chat.db(SQLite) |
国内直连可用、无 KV 配额限制;数据是 v1+v2 合并导入 + 新聊 |
命名坑(务必记住):
chat_memory_v2是 v1 的库;chat_memory_v3才是 v2(zhai-v2)的库。用户口中的「v3 后端 = 全新的那个 = 配置里叫 v2」,指的是zhai-v2+chat_memory_v3。
6. 当前状态快照(2026-10-27 00:45)
| 维度 | 状态 |
|---|---|
| 代码 | 分支 main,HEAD 5666a72(2026-10-25 20:36),工作区无已修改文件(仅有未跟踪的文档/截图) |
| v1 | 已部署 a3ef2a33(10-25 22:54),含「KV 配额烧穿」修复;线上 bundle 与本地逐字节一致【线上核验】 |
| v2 | 已部署 8c6fe98a(10-25 20:38),同一份代码(etag 与 v1 相同)【线上核验】 |
| 国内版 | 进程 22:26 重启,已加载新代码;页面注入 cat-web-token 与 __CAT_WEB_MODE__【实测】 |
| 聊天可用性 | 国内版完全可用;v1/v2 在 10-26 08:00(北京时间)KV 配额重置前处于降级模式(能聊、提示「云端检索今日配额已用完」) |
| 数据规模 | 国内版 SQLite:652 键(消息 320 / 记忆 312 / 高光 2 / 经历 1 / 元数据 2 / 限流 14 / 主动计数 1 / 墓碑 0)【实测】 |
| 测试 | tests/ 共 10 个脚本、约 206 项断言,全部为「内存/SQLite Mock + Mock 模型」的契约测试,无生产 E2E【源码】 |
| 最大风险 | 见 07:P0 三项(前后端寻址分裂、彻底删除不清 mem:、页面公开下发令牌) |
7. 与原设计的差距(一句话版)
- 已完成:聊天、记忆检索、档案、高光/经历/关系、删除、同步/恢复、三端部署、配额防护。
- 只做了雏形:人设(仅一段自定义文本,无版本管理)、成长分析(完全没有)、后台管理(没有独立后台,只有设置面板)。
- 未开始:阶段 5 人设版本、阶段 6 成长队列、阶段 7 后台强认证、阶段 8 沈屿迁移、阶段 9 测试环境清理。
- 设计过但未采用:向量检索、R2 存图、Mem0 式四态记忆 + history 版本链(只出了调研与建议)。
详细依据见 03_任务清单与真实进度.md、05_长期记忆与收藏系统历史档案.md。