Commit c7ab17fda6c55c5b7bfc240e45cf7d264812f43d

Authored by yibo
1 parent 4bd120bc

docs: 同步 lifelog 章节到 v0.7(4-tab UI + photolog CRM + 设置页)

- UI 从 5-tab 改为底部 4-tab(人物/录音/对话/设置)+录音内 4 子 tab
- 新增 photolog 人脉 CRM 层说明(两人物池/vision 人脸/微信头像锚点)
- 设置页从 TODO 移到已完成;保留未建的存储 TTL/用量/暂停时段

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Showing 1 changed file with 8 additions and 5 deletions
CLAUDE.md
... ... @@ -186,9 +186,11 @@ Foreground Service (foregroundServiceType=microphone, WAKE_LOCK partial)
186 186 └ DiarizationEngine: pyannote 分割 + campplus + 聚类 → turns[start,end,speaker]
187 187 └ 每 turn: paraformer 转写 + campplus 干净嵌入 + SpeakerClusterer.assign 全局认人
188 188 └ Room SQLite (turn = 时间轴一行: Segment/Transcript/Summary/SpeakerProfile/Chat*)
189   - └ Compose 5-tab UI (录音 / 对话 / 时间轴 / 声纹 / 纪要)
  189 + └ Compose 底部 4-tab (人物 / 录音 / 对话 / 设置);「录音」内含 4 顶部子 tab (录音 / 时间轴 / 声纹 / 纪要)
190 190 ├ SummaryWorker:按时间间隔切「会话」→ 本地 llama-swap(8080) Qwen3.5-2B 出纪要
191   - └ ChatScreen:本地 2B/4B(llama-swap 8080) + Hermes(8642→Kimi) 多端点对话
  191 + ├ ChatScreen:本地 2B/4B(llama-swap 8080) + Hermes(8642→Kimi) 多端点对话
  192 + └ photolog/CRM 层 (PhotologScreen/PersonProfileScreen/PhotologViewModel + vision/)
  193 + 人物 tab = 「我管理的人物」;微信通讯录是池子(勾选纳入);相册人脸标注/绑声纹自动入库
192 194 ```
193 195  
194 196 **声纹纠偏 L1+L2**(`SpeakerClusterer`):L1 = reclusterAll 和 assign 都**冻结人工命名 anchor 不漂移**(止住「秦子琛吸宜博→质心漂→吞更多」雪球);L2 = 重命名/合并时 `rebuildAnchor` 用该人**全部段均值**重建质心(多 anchor,取代单段注册)。用户流程:听一段 → 命名/合并 → 「重新聚类」。阈值默认 0.45(设置页 0.35–0.65)。CAMPPlus 在短中文段上区分度有天花板,详见 memory `lifelog-block-diarization-pipeline.md`。
... ... @@ -197,6 +199,8 @@ Foreground Service (foregroundServiceType=microphone, WAKE_LOCK partial)
197 199  
198 200 **本地 LLM 栈(v0.6,零云端)**:Termux 自编 llama.cpp HEAD + llama-swap v223 监听 `127.0.0.1:8080`,按 model 名(`2b`/`4b`)热切换 Qwen3.5-{2B,4B}-Q4_K_M。纪要 worker + App 对话都打 8080;Magisk `service.d` 开机自启。完整部署/坑见 memory `pixel-local-llm-stack.md` + HANDOFF.md。
199 201  
  202 +**photolog / 人脉 CRM 层(v0.7 新增)**:在录音之外把 lifelog 长成端上 mini-CRM。`PhotologScreen`(人物 tab + 相册 tab)、`PersonProfileScreen`(联系人档案:tab 式 + 记录搜索 + 微信聊天/朋友圈/AI 印象 + 「🎤 录一段绑定 TA」当场录声纹)、`PhotologViewModel` 统管。**两个人物池分离**:「我管理的人物」(CRM 关心的人,人物 tab 显示)vs「微信通讯录全部联系人」(池子,选人页里勾选纳入)。`vision/`(`FaceEngine`/`FaceMatcher`/`PhotoProcessor`/`PhotoScheduler`/`PhotoWorker`/`WeChatEnrollWorker`/`VisionClient`)做相册扫描 + 人脸聚类 + 微信头像锚点入库;微信头像配方与「锚点 embedding 必须端上算」见 memory `wechat-avatar-face-enrollment.md`。声纹绑人 ↔ 人脸标注 ↔ 微信联系人三者打通到同一 `Person`。
  203 +
200 204 技术栈:Kotlin 2.1 + Compose BOM 2024.12.01 + Room 2.6.1 + WorkManager 2.10 + OkHttp 4.12,AGP 8.7.3,minSdk 30 / targetSdk 35(Android 14 强制 `foregroundServiceType` 起步),arm64-v8a 单 ABI。
201 205  
202 206 ### 接口
... ... @@ -262,11 +266,10 @@ Foreground Service (foregroundServiceType=microphone, WAKE_LOCK partial)
262 266  
263 267 完整待办、估时、技术路线见 `lifelog-recorder/HANDOFF.md` §五。
264 268  
265   -✅ **v0.2–v0.7 已完成**:Opus 编码 / BOOT 自启 + 电池白名单 / FTS4 中文搜索 / 段播放 / **声纹在线聚类** / **会话级纪要(按时间间隔切会话)** / **5-tab UI** / **App 内对话(本地 2B/4B + Hermes)** / **本地 LLM 栈(llama-swap)** / **Room 迁移(去 destructive)** / **block-based diarization-first 录音管线(v0.7,攒块→整块分轮→逐 turn 转写)** / **声纹纠偏 L1 冻结 anchor + L2 多 anchor 重建**。
  269 +✅ **v0.2–v0.7 已完成**:Opus 编码 / BOOT 自启 + 电池白名单 / FTS4 中文搜索 / 段播放 / **声纹在线聚类** / **会话级纪要(按时间间隔切会话)** / **底部 4-tab + 子 tab UI** / **App 内对话(本地 2B/4B + Hermes)** / **本地 LLM 栈(llama-swap)** / **Room 迁移(去 destructive)** / **block-based diarization-first 录音管线(v0.7,攒块→整块分轮→逐 turn 转写)** / **声纹纠偏 L1 冻结 anchor + L2 多 anchor 重建** / **设置页(`SettingsScreen`:纪要模型后端 / 聚类阈值 / llama-swap 端点 / 电池豁免)** / **photolog 人脉 CRM 层(人物档案 + 相册人脸 + 微信通讯录/朋友圈/AI 印象)**。
266 270  
267 271 剩余摘要:
268   -- ⭐ **存储 TTL**(删超 N 天 .opus,文字永留)
269   -- ⭐ **设置页**(存储用量 / 模型切换 / 暂停时段)
  272 +- ⭐ **存储 TTL**(删超 N 天 .opus,文字永留)——设置页尚无「存储用量 / 暂停时段」
270 273 - ⭐ **多 anchor 平均**(连选多段标同一人提高匹配率)
271 274 - ⭐ **回链 lemonPCRM**(Transcript 实体 → GraphStore `MENTIONED_IN`,v2)
272 275  
... ...