交接档案

03 · 任务清单与真实进度

状态定义:✅ 已完成(有代码+证据)|🟡 部分完成(链路未闭环)|⬜ 未开始|⏸ 待验证|❌ 已取消/被取代 证据等级:【代码】 源码可见 |【测试】 本地测试跑过 |【部署】 线上版本已确认 |【实测】 我亲自执行并得到结果 |【未验证】 无证据 重要:tests/ 里全部是「Mock KV / Mock 模型」的契约测试,能证明逻辑分支,不能证明生产端到端可用。凡是只有【测试】没有【实测/部署】的,都不算「线上已验证」。


一、任务总表(按主题)

A. 项目奠基与前端 UI

# 任务 状态 证据 未完成/说明
A1 基于用户源码(v6.html)产出改造版 index.html(7 个片段) ✅ 提交 afa0aa4 基线;文件在 /workspace/chat/index.html【代码】 —
A2 果冻/液态玻璃气泡、头像自定义、猫爪面板、长按菜单、消息状态、动态状态胶囊 ✅ 同上【代码】 手绘装饰版曾上线后乱码 → 回滚
A3 IndexedDB 替换 localStorage + 真实 fetch ✅ readMessages/saveMessages/idbSet【代码】 —
A4 收藏(本地 fav_list + AI [[fav:]] 回传) ✅ parseFavorites、addFavorite【代码】 收藏历史只在本机(后加云端高光)
A5 全屏按钮 / PWA / 图片灯箱 / showToast ✅ 提交 08815a9 等【代码】 国内版 PWA 图标受 sharecode 影响(见 07 P2-10)
A6 外观定制(气泡颜色/透明度/磨砂、自定义皮肤九宫格、顶底栏调色、恢复默认) ✅ applyAppearance、applySkinClass【代码】 深色模式入口已按用户要求删除
A7 iOS 全屏与键盘适配(6 轮返工) ✅ 提交 43ec8d7…f02cc07;线上 51ac31d3【部署】 过程见 07 事件 03
A8 输入框 16px 防聚焦缩放 + --bar-h 动态高度 ✅ 提交 9ed08a6;线上 0114d69f【部署】 —
A9 「仅本机删除」与「彻底删除(含云端)」两条路径拆分 ✅ 提交 d7ada29、6a09007;test_ui_delete_scope.mjs【测试】 历史消息无 mid 时只能本地删(旧数据限制)

B. 后端与安全

# 任务 状态 证据 未完成/说明
B1 Worker 后端:KV 记忆、关键词检索、时间注入、主动消息、tools 预留 ✅ worker.js【代码】 主动消息最多 3 次/天、间隔 ≥3h
B2 安全 v2:令牌/同源/限流/SSRF/体积/脱敏/提示词边界 ✅ 提交链 + 46 项断言【测试】 令牌随页面下发未解决(P0-3)
B3 多服务商代理(OpenAI/DeepSeek/通义/自定义) ✅ callModel + validateApiUrl【代码】 v1/v2 ALLOW_CUSTOM_API=0 → 自定义域名会被 403(P2-4)
B4 页面令牌按部署注入(修 v1 401) ✅ 提交 32aa8a5;v1 a3ef2a33 线上拉取验证【线上核验】 v1 无 AUTH_TOKEN → 用代码默认值(弱)
B5 模型 Key 服务端兜底 ❌ v1 secret 叫 DEEPSEEK_API_KEY,代码只读 env.API_KEY【线上核验】 死配置;目前全靠前端自填 Key

C. 任务书阶段 0–4

# 任务 状态 证据 未完成/说明
C1 阶段 0 只读审计 ✅ 审计报告-阶段0.md、小手机-审计草案/【代码/文档】 —
C2 阶段 1 备份与基础可靠性(含 B1 误清空修复) ✅ 提交 08815a9【代码】 —
C3 阶段 2 统一标识(profile / mid / conversation / sync_status) ✅ 提交 e6c9661【代码】 —
C4 阶段 3 完整档案与同步(云端 msg: + 同步/恢复按钮) ✅ 提交 e6c9661【代码】 同步为全量上传,O(n) 写(P1-7)
C5 阶段 4 高光 / 经历 / 关系 + 记忆库面板 ✅ 提交 ca44bb8【代码】 关系不进模型上下文(设计如此)
C6 P0-1 记忆按 profile 隔离 ✅ 提交 9505597;test_p0_memory_isolation 15/15【测试】 旧 mem_* 仅 owner 只读
C7 P0-2 稳定 mid 与引用完整性 ✅ 提交 513f24b;21/21【测试】 —
C8 P0-3 删除接口与防复活 🟡 提交 d4aa34e(软删)→ 83bc573(硬删+墓碑);36/36【测试】 硬删不清 mem:(P0-2)
C9 P0-4 全量导出/导入 ✅ 提交 2460f9a;27/27【测试】 前端 UI 只在「国内版」放开(P1-4)
C10 P1 记忆闭环 + 档案搜索 ✅ 提交 5bfe8c8;13/13 + 14/14【测试】 搜索无前端面板

D. 托管、迁移与部署

# 任务 状态 证据 未完成/说明
D1 Git 仓库接入(GitHub 私有) ✅ github.com/beibbloveme-crypto/yuai;git remote -v【代码】 远端实时状态【未验证】(沙箱 403)
D2 Pages 静态托管适配 🟡 提交 1ad73ae;Pages 项目 chat-ui-beib 实为 10-03 的另一原型【实测】 当前三端都不用 Pages
D3 全新后端重建(zhai-v2 + chat_memory_v3) ✅ 提交 867faee;小手机-全新后端环境说明.md【文档】 空库是设计,不是失败
D4 国内直连测试版(WorkBuddy) ✅ 提交 0b01ef6;线上可访问【实测】 初版无落库,后改 SQLite
D5 C 方案第 1 批:server.js 垫片化 + SqliteKV ✅ 提交 4a8bdb1、e20c937【代码】 —
D6 C 方案第 2 批:测试套件换真 SQLite ✅ 提交 ef6f725;188 项断言【测试】 仍是契约测试,非 E2E
D7 C 方案第 3 批:双快照三层防护 + 导出补全 ✅ 提交 a32fe2e;13/13【测试】 快照与库同在 /tmp(P1-3)
D8 C 方案第 4 批:v2 → 国内版全量搬迁 606 条 ✅ 提交 5f61f81;国内版 counts 与逐条导入报告【实测】 实际构成:307 消息 + 299 记忆;其中 217 条 mid 为 local_(来自本机历史同步)
D9 国内版三连修复(WORKER_URL 污染 / sharecode 403 / 人设丢失) ✅ 提交 c007087、be64807、bd6a5af【代码】 —
D10 国内版 403 根治(可信公网基准) ✅ 提交 0f1007c【代码】 域名一变仍会 403(P1-3)
D11 三端部署同一份修复版 ✅ v1 a3ef2a33、v2 8c6fe98a、国内版进程 22:26【线上核验/实测】 v1/v2 受 KV 配额限制,10-26 08:00 前降级

E. 删除语义与配额

# 任务 状态 证据 未完成/说明
E1 「彻底删除」改物理删除 + 墓碑(v2 先行) ✅ 提交 83bc573;v2 65bf6ef0【部署】 历史 279 条软删未清理
E2 墓碑防复活(导入四类记录前查墓碑) ✅ test_p0_delete_sync 第 7/8 节【测试】 墓碑不参与导出 → 换库恢复会丢墓碑
E3 修复 KV 每日 list 配额烧穿(缓存+降级+干净 503) ✅ 提交 5666a72;test_p0_kv_quota 17/17【测试】;v1/v2 部署【部署】 写配额仍紧(P2-3);检索 1000 键截断(P1-2)

F. 记忆系统升级(任务书 5–9)

# 任务 状态 证据 说明
F1 阶段 5 人设版本管理 ⬜ 无代码 当前人设 = localStorage 一段文本
F2 阶段 6 批量成长分析 ⬜ 无代码 无任务队列、无证据/反例、无审核
F3 阶段 7 后台管理 + 强认证 ⬜ 无代码(只有设置面板) 任务书要求「不得只靠隐藏按钮保护」
F4 阶段 8 沈屿本体迁移 ⬜ 无代码 当前测试角色 owner
F5 阶段 9 测试环境清理 ⬜ 无代码 测试数据仍在(见 04 数据面)
F6 记忆框架升级(Mem0 四态 / Graphiti 双时间戳 / Letta 预算) ⬜ /workspace/小手机项目-全项目代码基线审查报告.md 第七部分(调研+5 条建议)【文档】 只出建议,未实施

G. 文档与交接

# 任务 状态 证据 说明
G1 完整交付文档(源码/功能/进程/测试/交接) ✅ 小手机-完整交付文档.md(10-22,605 行)【文档】 已过期(不含 10-23 之后)
G2 模块索引(按区域改代码) ✅ 模块索引.md【文档】 行号已漂移,选择器名仍有效
G3 安全说明 / 审计报告 / 修复记录 / 迁移方案 ✅ 4 份 md【文档】 均截至各自日期
G4 交接档案(本次 10 个文件) ✅ 本目录【文档】 截至 2026-10-27
G5 交接文档更新到当前基线 🟡 本档案即更新版 旧文档未删改(保留历史)

二、用户明确下达但尚未完成的事

# 事 现状 建议
1 历史 279 条软删记录「真的删掉」 记录仍物理存在(v1 KV + 国内版 SQLite),仅带 deleted_at 分批硬删+墓碑(≤200 条/批,跨天,注意写配额)
2 v1 与国内版数据统一 两份独立副本,互不同步 先定「哪个是主」,再做单向同步
3 图片备份 图只在本机 IndexedDB 决策:接受 / 上 R2 / 只备份缩略图
4 沈屿本体迁移(阶段 8) 未开始 先补人设版本(阶段 5),否则迁移无载体
5 后台管理(阶段 7) 未开始 与 P0-3 访问控制一起做最省事

三、被取消 / 被取代的任务

任务 原因
手绘气泡装饰 上线后乱码,回滚
深色模式 用户 10-17 要求删除入口
默认人设「小喵」 用户 10-19 要求取消,只用自定义人设
deploy.sh 手工改 cat-chat-all-in-one.js 后端 被 build.js 整体重生成取代
软的「云端删除」 被硬删+墓碑取代(10-25)
单一 Worker 架构 被 v1 / v2 / 国内版三端取代
阿里云 ECS 方案 用户选 C(WorkBuddy + SQLite)

四、如何自行复核本表

cd /workspace/chat
git log --oneline --all          # 全部提交
git status                       # 工作区状态
node build.js                    # 重建产物(会重写 cat-chat-all-in-one.js)
for f in tests/*.mjs; do node "$f"; done   # 契约测试

线上版本核对(只读): - Cloudflare API:/accounts/{acc}/workers/scripts/{name} 拉取线上 bundle; - 国内版:curl http://127.0.0.1:3000/health(沙箱内)。

提醒:node build.js 会重写 cat-chat-all-in-one.js,属于「修改文件」。接手后若要跑,请先 git status 确认无未提交改动,或先建分支。

本页由交接包内的 Markdown 原样转换;内容未改动。源码与完整包请回目录页下载。