-
把微信联系人头像建成人脸锚点,照片处理时自动认出"这是谁",标注时直接带名字。 - data:Person 加 faceEmbedding 锚点字段 + 迁移 v4→v5(ALTER 加 BLOB 列, DDL 对过 Room;真机迁移零数据损失);PersonDao anchors/getByContactRef - FaceMatcher:gallery 统一 = 人物锚点(头像) + 已标注脸样本;match() 共享余弦匹配; PhotoProcessor 改用统一 gallery - WeChatEnrollWorker:读 filesDir/wx_enroll/(enroll.json + 头像) → 对每张头像跑 **端上 FaceEngine**(必须同引擎才能跟照片人脸比),恰 1 脸就建 Person(name, contactRef=wechat:wxid, avatarPath, faceEmbedding)。幂等、单轮预算 8min、retry 续 - UI:人物页「从微信导入联系人」按钮;人物卡片标注「微信/声纹」来源 - server/services/wechat/extract-wechat-avatars.py:Mac 侧提取脚本 (sqlcipher 解密 EnMicroMsg.db → rcontact⨝img_flag 筛真人 → 下载头像) 实测:4338 真人联系人,头像有脸覆盖率 41%(1796/4337),端上 90s 建 284 锚点(继续后台跑)。 头像/姓名属敏感 PII,存 _wx_enroll/ 已 gitignore。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
-
- 首页 tab 改名「录音」,新增「对话」tab(ChatGPT 式:抽屉历史 / 气泡 / 流式 / 输入框) - chat/ChatConfig:聊天对象 = OpenAI 兼容端点 + model;本地 2B/4B 共用一个 llama-server 端口按 model 热切换,Hermes 走 gateway 8642;本地 baseUrl/model 名 app 内 ⚙ 可改 - chat/ChatClient:SSE 流式逐 token,端点不支持流式时自动降级整段解析 - 持久化到 Room:chat_conversations / chat_messages 两表,切换对象记到会话 targetId - data:AppDatabase 加 MIGRATION_2_3(纯增量加表),修复 fallbackToDestructiveMigration 在 24/7 RecorderService 重装时静默清库的风险 Co-Authored-By: Claude Opus 4.8 <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>
-
.gitignore 早就有这两条规则但文件已被跟踪,对已 tracked 文件无效。 git rm --cached 把 121 个 build artifacts 从 index 移除(保留磁盘文件)。 同时 ignore: - lsposed-wechat-sendmsg/local.properties (Android SDK 本地路径,包含个人机器信息) - lsposed-wechat-sendmsg/*.keystore (签名密钥,不应入库) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
-
- auto-reply.js 接入 hermes-agent OpenAI-compatible API (:8642) - 新增 android-wechat-tracker-sqlcipher.js 替代 LSPosed 日志 tail - 新增 android-wechat-sender-frida.js 替代 am broadcast 发送 - 更新 keepalive.sh、README、HermesWeChatModule.java - 添加 .gitignore SQLite 变体规则 - 新增 docs: 息屏发送尝试记录与屏幕自动唤醒方案 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
-
- auto-reply.js: connect to hermes /api/master/chat for AI reply generation - SSE response parsing, session isolation per talker - notification watcher (termux-notification-list) for screen-off fallback - wechat foreground check + wake before send - hermes_wechat_daemon.py: prefer hermes API, fallback to direct LLM API - config.json: add hermes host/port for local API connection - keepalive.sh: termux-wake-lock + process guardian for hermes + auto-reply - Move docs into local-testkit/docs/ directory - .gitignore: exclude server/db/ Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
-
Mac side (lemonPCRM): - Express server with /api/master/chat SSE endpoint - MasterSession multi-round orchestration - AgentManager + ToolRegistry - ClaudeCliProtocol ACP implementation Pixel side (wechat_plain/scripts/): - hermes_wechat_daemon.py: standalone daemon - SQLCipher DB decryption with WAL checkpoint fix - Direct LLM API calls (Kimi/Anthropic/OpenAI) - am broadcast to trigger LSPosed send - Auto wake WeChat to foreground before poll/send - lsposed-wechat-sendmsg: LSPosed module - sendTextMessageDirect via WeChat internal API - u01.r1.a -> builder -> m1.a() full chain - Background thread NetScene submission Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
-
包含 ACP 协议层、Agent 运行时、Express API 服务端、 编排引擎及进程管理等完整实现。 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>