-
微信聊天本地化——EnMicroMsg.db 是 SQLCipher 加密的,过去靠 Mac 解密推 wx_enroll,现在端上直接读: - key 纯端上可推导(真机验证,无需 Frida):MD5("1234567890ABCDEF" + uin)[:7] imei 用微信默认值(现代 Android 读不到真 IMEI 的回退,稳定);uin 从 shared_prefs last_login_uin 读 - WeChatChatImporter:su --mount-master 拷 EnMicroMsg.db + 读 uin → 算 key → SQLCipher 打开 (cipher_compatibility=1, cipher_page_size=1024) → 读 message 表 type=1 文本,按 talker 取目标 wxid - 依赖:net.zetetic:android-database-sqlcipher:4.5.4 - 接线:单人「⬇下载图片」顺带解密该人聊天;「🔄更新」一次性解密整库读所有 wxid(避免逐人重复解密) 聊天写 wechat_messages(按 talker 先清再灌,幂等);档案页「聊天」tab 直接显示 - 真机验证:读到与某联系人的聊天记录 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
-
以「人」为中心融合身份的相册基础(声纹那套的人脸版): - data:persons/photos/faces 三表 + 增量迁移 v3→v4(DDL 对过 Room,真机零数据损失) - vision/FaceEngine:ML Kit 检测+5点 → 相似变换对齐 → TFLite MobileFaceNet 512维 embedding(同人 0.976/异人 0.127,embed 44ms)。**不用 onnxruntime-android**—— 它和 sherpa 自带 libonnxruntime.so(自定义符号版本)无法共存,会弄坏音频 - vision/VisionClient:经 llama-swap 8080 的 vl 端点(Qwen2.5-VL-3B)出场景描述,只描场景不报人名 - vision/PhotoProcessor:人脸+embedding+VL+EXIF → 更新 photos 行 + 写 faces + 匹配 Person - vision/PhotoWorker + PhotoScheduler:导入只瞬时登记,重活交后台 worker 定时/闲时处理 (15min periodic + 导入触发 runNow,单轮 7min 预算,防并发),不阻塞导入 - vision/FaceMatcher:标注一张脸 → 回填其它照片同一人(同声纹回填) - ImageUtil:EXIF 时间/GPS、按方向解码、降 512px 喂 VL、embedding 打包 - 模型 w600k_mbf.tflite(6.5MB) 进 assets(实测还原 onnx cos=1.0) 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>
-
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>