Commit 2b2b01e0275294968b759b0a94ea3d51d0dcf938
1 parent
e5316555
docs(phoneuse): 记录 Hermes Agent 手机端运行时现状 + 防止设备备份入库
用户从 Pixel 上的 ~/.hermes/ 拷了一份一次性备份到 Mac 核对内容,读完发现 几条对以后开发有用的事实,补进 CLAUDE.md: - phoneuse/android_mcp.py 的真实消费方是第三方框架 Hermes Agent (Nous Research,非本项目自研),驱动模型是 Kimi;memory_graph.db 确认 在线持续增长(1020 person/1255 message/518 vector,对比 TASKS.md 2026-06-16 审计时的 522/1205/510+)。 - Hermes 在 phoneuse 之外长出的 wechat-image-sender skill(2026-06-23 验证通过)已经解决了 wechat_send.py 没做的"发图片"能力(ACTION_SEND Intent + OCR 找联系人,1344x2992 屏幕坐标全程验证),该 skill 早期笔记 里提过想用 Frida bridge 但因为不在 Termux 里跑而放弃——正是这次新增 的 frida_inspect_tools.py 解决的链路,以后可以接上看看。 - wechat-group-digest 绑的两个 cron job 截至备份时都因 hermes-agent 自身的 `env_float` 缺失 bug 报错失败,不是 phoneuse 代码 问题,但别假设它们在正常工作。 - 备份的 manifest.json 声称有 5 个 skill,实际只备份了 3 个,不是完整镜像。 备份目录本身含真实 API key(.env)和真实微信消息/联系人原文 (memory_graph.db、persona.yaml),加进根 .gitignore 的 /hermes_backup_*/ 规则,确保不会被任何后续 git add -A 带进仓库。 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Showing
2 changed files
with
18 additions
and
0 deletions
.gitignore
CLAUDE.md
| ... | ... | @@ -73,6 +73,21 @@ Pixel 上微信发送/跟踪的落地,纯设备内运行(不依赖 Mac): |
| 73 | 73 | - 真机连续性差:开发时常掉 USB,涉及真机的验证要先确认 `adb devices` 能看到设备。 |
| 74 | 74 | - 微信相关的 Frida/A11y 经验跟 `wechat_plain` 是分开积累的——`wechat_plain` 已验证过 Frida daemon 注入微信大 bundle 会触发反调试崩溃(见上文 §wechat_plain);`phoneuse` 走的是 USB attach 而非常驻 daemon,崩溃模式不一定一样,但动手前先看那段记录,别重新踩同一个坑。 |
| 75 | 75 | |
| 76 | +### Hermes Agent 运行时现状(手机 `~/.hermes/`,据 2026-06-24 一次性设备备份) | |
| 77 | + | |
| 78 | +> 备份本身**不进 git**(含真实 API key + 真实微信消息原文,已加进根 `.gitignore` 的 `/hermes_backup_*/`),看完建议删掉或挪出仓库。这里只摘录"对以后开发有用"的事实,原始内容不再保留引用路径。 | |
| 79 | + | |
| 80 | +`phoneuse/android_mcp.py` 的真实消费方是**第三方框架 Hermes Agent**(Nous Research 出品,非本项目自研),跑在手机 Termux 里,靠 `~/.hermes/config.yaml` 的 `mcp_servers.android-phone` 一条配置连过来;驱动模型是 Kimi(`model.default: kimi-for-coding`,`base_url: api.kimi.com/coding`)。Hermes 自己又在 phoneuse 之外长出了一套 skills/plugins/cron,**会直接调用 phoneuse 的 MCP 工具**,值得记下来: | |
| 81 | + | |
| 82 | +- **`memory_graph.db` 确认在线增长**:备份快照里 1020 person / 1255 message / 518 vector,对比 `TASKS.md` 2026-06-16 审计时的 522/1205/510+——证明 `ingest_wechat_to_memory`/`embed_memory_messages` 这条链路在真实持续跑,不是一次性验证。 | |
| 83 | +- **`wechat-image-sender` skill(2026-06-23 验证通过)补上了 phoneuse 自己没做的能力**:`send_wechat_message`/`mcp_android_phone_send_wechat_message` 只能发文字,发图片靠这个 skill 的 `am start -a android.intent.action.SEND -t image/png` 唤出微信"选择聊天"→OCR 找联系人(拼音兜底)→固定坐标 `(899, 2627)` 点发送,针对 1344×2992 屏幕全程验证可用。**以后要给 `wechat_send.py` 加发图能力,这条路子是现成验证过的,不用重新摸索**。该 skill 更早的笔记(`image_sending_limitations.md`)里提过想用 Frida bridge 做但因为"不在 Termux 里跑"放弃——这正是这次新增的 `frida_inspect_tools.py`/`start_frida_bridge.sh` 解决的那条链路,以后两边可以接上看看。 | |
| 84 | +- **`wechat-group-digest` skill**:查 `EnMicroMsg.db` 群消息→提取公众号文章/讨论→Kimi 摘要→Pillow/GPT-Image-2 生成报纸风格信息图→调 `mcp_android_phone_send_wechat_message` 发文字摘要。绑了两个 cron job(每天 00:00 / 12:00),**截至备份时两个都报错失败**:`cannot import name 'env_float' from 'utils'`——hermes-agent 自身 Python 包版本问题,不是 phoneuse 代码的锅,升级 hermes-agent 应该能解,但别假设这两个 cron 在正常工作。 | |
| 85 | +- **`feishu-lark` skill + `hermes-feishu` 插件**:飞书机器人通道(身份 "pixel phone agent"),跟微信是两条独立的消息平台,互不影响。 | |
| 86 | +- **`VisualAgent` cron daemon**(每 5 分钟轮询 `/sdcard/VisualAgent/commands/` 执行 screenshot/tap/swipe/input/start_app):跟 phoneuse 自己的 `ui_control_tools.py` 是两套独立的 UI 自动化通道,目前没有合并,谁先谁后没有约定。 | |
| 87 | + | |
| 88 | +> [!NOTE] 备份不完整 | |
| 89 | +> 备份自带的 `manifest.json` 列了 5 个 skill(含 `screen-wake`、`android-visual-automation`),但备份目录里实际只有 3 个(`wechat-group-digest`/`wechat-image-sender`/`feishu-lark`)——别假设这份备份是手机上 `~/.hermes/` 的完整镜像。 | |
| 90 | + | |
| 76 | 91 | ## lifelog-recorder(Pixel 8 Pro 24/7 录音 + 本地中文 ASR + 本地 LLM,v0.8) |
| 77 | 92 | |
| 78 | 93 | > 完整接手地图、踩坑清单、命令速查见 `lifelog-recorder/HANDOFF.md`。本节只勒住整个项目的**架构骨架 + 关键决策来源**,不重复细节。 | ... | ... |