diff --git a/lifelog-recorder/LIFEOS_ROADMAP.md b/lifelog-recorder/LIFEOS_ROADMAP.md new file mode 100644 index 0000000..7faec6c --- /dev/null +++ b/lifelog-recorder/LIFEOS_ROADMAP.md @@ -0,0 +1,225 @@ +# Lifelog → Life OS 路线图 + +> 写于 2026-06-10。基于「人生OS」设想文档与 lifelog v0.9 现状的对比分析。 + +--- + +## 一、理念校正 + +**人生OS不是一个 Agent。** Agent 只是其中一个模块。 + +真正的人生OS是: + +``` +Memory Layer 记忆层 ← 我们现在做到 80% +Knowledge Layer 知识层 ← 60% +Relationship Layer 关系层 ← 50% +Goal Layer 目标层 ← 10% +Execution Layer 执行层 ← 30% +Agent Layer 智能代理 ← 40% +``` + +核心护城河:**Personal Graph + Personal Memory + Personal Agent 三者闭环**。 + +lifelog 独有的护城河:**端上 24/7 录音 + 完全本地 + 零云端**——这是所有云端方案(Claude/GPT)永远复制不了的。 + +--- + +## 二、现状 vs 人生OS 分层对照 + +### Layer 1 — Memory OS(记忆层) + +| 能力 | 要求 | 现状 | +|---|---|---| +| 24/7 录音采集 | 自动采集语音 | ✅ 端上,独家优势 | +| 微信聊天 | 接入 | ✅ 端上 SQLCipher 解密,完全本地 | +| 朋友圈 | 接入 | ✅ 已入库 | +| 相册 | 接入 | ✅ 全相册 VL 语义索引(Tier-0/1 分层管线) | +| 邮件 / 日历 | 接入 | ❌ 完全没有 | +| Notion / 文件 / 网页 | 接入 | ❌ 没有 | +| 浏览记录 | 接入 | ❌ 没有 | +| **跨源统一 Life Timeline** | 所有事件混排 | ❌ 各模块孤立 tab,没有统一视图 | + +**最大缺口**:没有跨源统一 Life Timeline。现在录音/照片/微信各自一个 tab,用户感受不到"人生时间轴"。 + +--- + +### Layer 2 — Relationship OS(关系层) + +| 能力 | 要求 | 现状 | +|---|---|---| +| Person 实体 | 有 | ✅ 四模态融合(声纹/人脸/微信/手机) | +| 公司/组织实体 | 图节点 | ⚠️ TopicExtractor 抽取但扁平,非图节点 | +| 关系类型 | 投资人/同事/朋友等 | ❌ 只有无类型的共现权重边 | +| 关系强度随时间衰减 | 有 | ❌ 无 | +| 最近联系时间 | "3个月没联系" | ⚠️ `lastAccess` 只记录打开档案,不记录实际通信 | +| "谁能帮我X" 推理 | 核心功能 | ❌ 没有 | +| 图谱可视化 | 有 | ⚠️ CommunitiesScreen 有但很弱 | + +--- + +### Layer 3 — Knowledge OS(知识层) + +| 能力 | 要求 | 现状 | +|---|---|---| +| 录音 → 知识 | 有 | ✅ 转写 + 纪要 + RAG 对话 | +| 微信聊天 → 知识 | 有 | ✅ 可搜索 | +| 会议纪要 | 有 | ✅ SummaryWorker 自动生成 | +| PDF / 网页 | 有 | ❌ 没有 | +| 知识图谱(实体互连) | 核心 | ❌ 只有人↔人,没有人↔事件↔组织完整图 | +| 个人搜索引擎 | "我去年和X聊过什么" | ✅ 关键词+语义搜索已有 | + +--- + +### Layer 4 — Goal OS(目标层) + +| 能力 | 要求 | 现状 | +|---|---|---| +| Goal 实体 | 核心 | ❌ 完全没有 | +| 目标树形分解 | 有 | ❌ 没有 | +| 持续追踪 / 主动推进 | Agent 主动 | ❌ 没有 | +| 待跟进事项 | Followup | ✅ FollowupExtractor 从录音抽取 TODO | + +**这一层几乎空白。** 从 Memory 到 Planning 的跨越是人生OS最核心的价值跃迁。 + +--- + +### Layer 5 — Execution OS(执行层) + +| 能力 | 要求 | 现状 | +|---|---|---| +| 发微信 | 有 | ✅ A11y 服务,端上可执行 | +| 发邮件 | 有 | ❌ 没有 | +| 日程安排 | 有 | ❌ 没有 | +| 工具调用 | 有 | ✅ 15+ 工具,ReAct 循环 | +| 主动触发(非用户发起) | 有 | ❌ 所有 Agent 都是被动响应 | +| 网络搜索 | 有 | ✅ Tavily | + +--- + +## 三、当前进度评估 + +``` +V1 Memory OS ████████░░ 80% 缺跨源统一时间轴 + 邮件/日历 +V2 Relationship OS █████░░░░░ 50% 人物有了,关系图谱太弱 +V3 Goal OS █░░░░░░░░░ 10% 只有 Followup,没有 Goal 实体 +V4 Execution OS ███░░░░░░░ 30% 只能发微信,被动触发 +``` + +--- + +## 四、开发路线图(按优先级) + +### P0 — 补完 Memory OS(最快出价值) + +#### 1. 跨源统一 Life Timeline +新建一个「时间轴」主 tab(或独立 Screen),把以下事件按时间混排: +- 录音转写段(`segments` + `transcripts`) +- 微信私聊消息(`wechat_messages`) +- 朋友圈动态(`moments`) +- 相册照片(`photos`,按 `takenTs`) +- 系统事件(未来:日历/邮件) + +每条事件显示:时间、来源图标、摘要内容、关联人物。支持按人物/时间段/来源过滤。 + +**这是用户感知到"这不是另一个AI助手"的最直接产品形态。** + +#### 2. 真实"最近联系"计算 +`Person.lastAccess` 目前只记录打开档案的时间,需改为取: +- `wechat_messages` 中最近一条涉及该 wxid 的 `createTime` +- `mentions` 中最近一条 `createdAt` +- 两者取 MAX + +在 PersonProfileScreen 档案页显示「最近联系:X 天前」,并加「超过 N 天未联系」标签。 + +--- + +### P1 — 强化 Relationship OS(差异化核心) + +#### 3. 关系类型 + 强度衰减 +- `relations` 表加 `type TEXT`(朋友/同事/投资人/客户/家人) +- 加 `strength REAL`:初始值由共现次数决定,按时间衰减(每月 ×0.9) +- AI 工具加 `get_stale_contacts(days)`——返回超过 N 天没联系的重要人物 + +#### 4. Organization 升级为一等公民 +当前 `topics` 表里 `kind='org'` 的条目是组织,但: +- Person 没有 `orgId` 外键 +- 没有 Person → Organization 关系边 + +需要: +- 新建 `organizations(id, name, kind, url, notes)` 表 +- 新建 `person_orgs(personId, orgId, role, startDate, endDate)` 关系表 +- AI 工具加 `get_org_members(orgName)` + +#### 5. "谁能帮我" 推理工具 +AI 工具加 `find_relevant_persons(goal: String)`: +- 把 goal 向量化,与 Person.resume + Person.impression 做语义匹配 +- 结合 relations.strength 加权 +- 返回最相关的 Top-5 人物及理由 + +--- + +### P2 — 搭 Goal OS 地基 + +#### 6. Goal 实体 +新建 `goals` 表: +```sql +goals(id, text, status, deadline, parentGoalId, personId, createdAt, updatedAt) +``` +- `status`:active / paused / done / cancelled +- `parentGoalId`:支持树形分解(创业 → 融资 → 找 VC → 约张总) +- `personId`:与哪个人相关 + +新增 GoalScreen,显示目标树 + 进度 + 关联 Followup + 关联 Person。 + +#### 7. Followup → Goal 挂载 +`followups` 表加 `goalId`,从录音里抽出的 TODO 自动关联到进行中的目标。 + +#### 8. AI Goal 工具 +- `create_goal(text, deadline, parentGoalId)` +- `get_goals(status)` +- `link_followup_to_goal(followupId, goalId)` + +--- + +### P3 — Execution OS 增强 + +#### 9. 主动 Agent(最重要的架构转变) +现在所有 AI 都是用户问才答。需要后台定时 Worker,主动扫描并推通知: +- **关系维护提醒**:重要联系人超过 30 天未联系 → 推送「要不要给张总发条消息?」 +- **Goal 进展提醒**:活跃目标超过 7 天没有新 Followup → 推送「创业目标本周没有进展」 +- **承诺追踪**:录音里说「我去给他发消息」但 3 天后没发 → 提醒 + +这是从"被动助手"到"主动操作系统"的关键转变。 + +--- + +## 五、技术架构演进 + +### 当前数据模型缺口 + +``` +现在: +Person ──共现──> Person(无类型,无强度衰减) +Topic(org/project/event,扁平列表) + +需要: +Person ──WORKS_AT──> Organization +Person ──INVESTED_BY──> Organization +Person ──KNOWS(strength, type)──> Person +Goal ──INVOLVES──> Person +Goal ──SUBTASK──> Goal +Event ──ATTENDED_BY──> Person +Event ──RELATED_TO──> Organization +``` + +### 关键原则 +1. **全部端上**:不依赖云端,所有 Graph 计算在设备上跑 +2. **增量更新**:新录音/新聊天触发局部图更新,不全量重算 +3. **AI 可读写**:所有实体都要有对应的 LifelogTools read+write 工具 + +--- + +## 六、一句话总结 + +> lifelog 现在是一个**很强的端上 Memory OS 原型**,有别人没有的录音护城河;但距离"人生OS"最缺的不是 AI 能力,而是**三样数据结构**:统一时间轴、真正的关系图谱(含组织实体 + 关系类型 + 强度衰减)、Goal 实体。把这三样建好,Agent 才有东西推理,Life OS 才不是空壳。