-
- app 名称:Lifelog → Life OS(strings.xml + AndroidManifest 硬编码修正) - 图标:红色关系网络 → 深紫渐变轨道设计(人物居中 + 双同心环 + 卫星节点) - 新增 TimelineScreen:录音/微信/朋友圈/照片四源按时间混排,日期分隔头,来源过滤 chip - 底部导航加「时间轴」tab(第三位:对话/人物/时间轴/录音/相册/设置) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
-
Adaptive Icon:ic_launcher_background(#1A0A3C→#7C3AED 135° 渐变) + ic_launcher_foreground(白色麦克风胶囊体 + 3条声波纹路 + 弧形支架 + 右上角红色录制圆点)。minSdk=30 只需 mipmap-anydpi-v26,无需 PNG。 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
-
把整个手机相册自动跑成可搜索内容(v0.8)。本地 VL ~30-40s/张, 全量是按天计的长任务 → 分层:快的全量先铺,慢的 VL 排队慢慢补。 - GalleryScanner:MediaStore 游标扫全量,content:// uri 原地登记不拷文件, mediaId 去重增量;photos 加 source/mediaId/scanState/captionEmbedding(Room v14) - Tier-0 PhotoFaceWorker:扫描 + ML Kit 人脸 + 512d emb + GPS,秒级全量铺, battery-not-low;Tier-1 PhotoVlWorker:VL 场景描述 + caption 语义向量, 优先级队列(有人脸>近期),充电时跑,尊重暂停标志 - 搜图:关键词(caption+人名 LIKE) + 语义(caption 向量余弦,EmbedClient 打 llama-swap embed 模型;未配置优雅降级) - VL 控制(PhotoVlState):运行中「暂停/停止」、空闲「立即理解/继续」切换, 正在处理的格子转圈,格子角标 待索引/待理解/已描述 - 修 ImageUtil.decodeUri:bounds 预解码 decodeStream 在 inJustDecodeBounds 下按设计返回 null,原 `?:` 误判致每张提前 return(人脸全跑空) 迁移 13→14 纯增量:老的已处理照片直接标 scanState=2 不重跑。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
-
- Person 加 realName/resume,档案页可编辑(PersonProfileScreen);DB 迁移 12→13 - 通讯录池新增手机系统通讯录来源(READ_CONTACTS / ContactsContract,contactRef phone:<id>), 按手机号/姓名跨源自动合并去重(PersonDao getByPhone/getByExactName/setPhone/updatePhoneInfo/updateProfile) - PhotologScreen/PhotologViewModel 支持两源池子 - AndroidManifest 加 READ_CONTACTS 权限;同步 CLAUDE.md Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
-
- LifelogRetriever:「lifelog 模式」开关下,发送前本地检索纪要 + 转写拼成 system context 注入(本地 2B/4B 和 Hermes 通用,不落库)。中文用 bigram + 重叠打分召回(FTS4 unicode61 对中文短语不命中),命中多者优先、抑制单 bigram 噪声 - Daos:加 timelineList / searchTextLike / summaries.recentList 三个 suspend 检索方法 - ChatViewModel:会话状态搬进 VM(随 Activity 存活)。修复切 tab 回来: 流式请求被取消(viewModelScope 不取消) / 变成新会话 / lifelog 开关重置—— currentConvId / selectedTargetId / lifelogMode 均持久化到 prefs,重启也记住 - 键盘 inset:Activity setDecorFitsSystemWindows(false) + manifest adjustResize + Scaffold imePadding,键盘弹出时整个界面(含底部 tab)抬到键盘上方、可见 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
-
设备侧 hermes api_server platform 配置(HANDOFF §五新增详细步骤): - ~/.hermes/.env 加 API_SERVER_ENABLED + HOST + PORT + KEY + MODEL_NAME - pip install anthropic(kimi-for-coding 走 Anthropic-compat 协议层) - setsid + disown 启动避免 adb shell 退出时 SIGTERM 杀掉 gateway App 侧: - BuildConfig 增加 HERMES_API_URL / HERMES_API_KEY / HERMES_MODEL - keys.properties.example 同步样本 - HermesClient.kt: minimal OkHttp 客户端,POST /v1/chat/completions + Bearer auth;JSONObject 拼请求 / 解 choices[0].message.content - SummaryWorker.kt (CoroutineWorker): - 滑动 1h 时间窗;speech < 60s 直接 skip - 拉 Transcript + speaker name 拼用户提示 - system prompt 要求 markdown 出「主题概括 / 关键要点 / 人物 / 地点 / 待办」 - 写 Summary 表(windowStartTs, windowEndTs, markdown, model) - SummaryScheduler.kt: enqueueUniquePeriodicWork 每小时(KEEP)+ OneTimeWorkRequest(按钮触发) - LifelogApp.onCreate 启动时 schedulePeriodic - MainActivity: 新「纪要」section + 「现在跑一次」按钮 + SummaryCard 列表 - AndroidManifest android:networkSecurityConfig 开 127.0.0.1 + localhost cleartext 豁免(OkHttp 默认禁 HTTP,loopback 也禁) 实测:60min 窗 / 172 段 / 709s 语音 / Kimi 14.3k prompt token / 649 completion → 一份 markdown 纪要正确分辨出「电影解说 + 修仙网文」两段 内容,按要求列出主题/要点/人物/地点/待办 5 个 section。 HANDOFF.md §五 LLM 纪要 worker 移到「已完成」;下一档是存储 TTL / 设置页 / 多 anchor 平均 / lemonPCRM 回链 / hermes 自启。 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
-
让 v1 真能脱离开发环境 24/7 跑的最后三公里: - SegmentWriter 改 Opus(MediaCodec audio/opus encoder + MediaMuxer OGG) ~17× 压缩,~2 KB/s 实测(vs WAV 32 KB/s) 存储预算:8h 语音/天 → ~57 MB/天,~1.7 GB/月(vs WAV 51 GB/月) ffprobe 验证 codec_name=opus, channels=1, OggS magic OK - BootReceiver 监听 BOOT_COMPLETED / LOCKED_BOOT_COMPLETED / QUICKBOOT_POWERON,try-catch 兜底 Android 14+ FG service 限制 - MainActivity 加电池豁免行:dumpsys deviceidle whitelist 实时检测, 未豁免时给「申请豁免」按钮,触发系统 RequestIgnoreBatteryOptimizations 对话框;ON_RESUME 生命周期观察让从设置页回来 UI 自动刷新 - AndroidManifest: + REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 权限 + BootReceiver 注册(含 3 个 boot 相关 action) HANDOFF.md §五 更新待办(v0.2 三项移到「已完成」),加存储预算 + Android 14 BOOT_COMPLETED caveat 段落(Pixel 8 Pro 实测能自动续上, 前提 app 至少开过一次 + RECORD_AUDIO 已授)。 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
-
Pixel 8 Pro 上的本地 lifelog 应用,v1 核心闭环: - 前台服务 (foregroundServiceType=microphone) + AudioRecord 16k mono PCM - Silero VAD on-device 切段(500ms 静音切、300ms 最短、30s 强切) - sherpa-onnx + paraformer-zh int8 本地 ASR Tensor G3 实测 ~25× realtime,<200ms 处理 1-10s 段 whisper-small 0.6× 跑不动,paraformer 是甜点选型 - Room (Segment + Transcript + Summary) + Compose 时间轴 LazyColumn UI - 232 MB 模型首次启动从 hf-mirror.com 下载到 app filesDir - 讯飞 中文识别大模型 WebSocket 客户端备用(云复核 fallback) 依赖: - sherpa-onnx v1.13.2 Android jniLibs (arm64-v8a, ~34 MB) - Silero VAD ONNX (~629 KB),sample.wav (3 MB) 内嵌资源 - AGP 8.7.3 / Kotlin 2.1 / Compose BOM 2024.12.01 / Room 2.6.1 后续待办(按用户语音里提到的优先级):声纹识别 / Opus 编码 / FTS5 中文搜索 / hermes-Kimi 纪要 worker。 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>