-
wechat_reply_orchestrator.py:消费 watcher incoming.jsonl(cursor增量+单实例锁+ 首跑基线)→ 候选事件(私聊/@我/引用我)→ env2 查上下文(rcontact身份+历史,一次拷库 全批复用)→ env3 hermes -z 生成 → env4 policy.decide(白名单读 circle.db)→ env5 落地(auto:send_text_via_hook+auto_sent / review:pending 进 /approvals)。生成失败 即静默不发,绝不误发。watcher._trigger_orchestrator 读到新消息后 fire-and-forget 拉起 drain(独立进程不阻塞采集)。真机验证:接线自动触发、真实猎头上下文生成火星人 口吻草稿并正确进审核队列。auto_send 默认关=全审核(保守起步)。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
-
wechat_reply_policy.py:确定性安全闸 decide()→skip|auto|review,default-deny +敏感词硬override(钱/承诺/约时间白名单也拉回),demo 8/8 过。配置与审批 UI 落在 手机端 ~/wechat-viewer(Flask):新表 reply_whitelist/reply_queue、/whitelist 白名单页、/approvals 审批页(可编辑草稿+发送/取消),发送复用 send_text_via_hook。 真机验证白名单增删查、发送到 filehelper(sent)、取消(cancelled) 全通。viewer 改 动全文见 wechat-viewer-changes.md + viewer_templates/(不复制用户整个 app)。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
-
环节3 不写代码,Hermes 本身生成(deepseek-v4-pro/gateway),走 hermes -z 一次性 调用(裸端点 8642 需鉴权,401,不用)。SOUL.md 从默认 Hermes 人设改为「火星人的 手机助手」(替他回微信用其口吻+涉钱/承诺/约时间交本人确认;设备原文已备份)。 真机验证质量:陌生猎头→「暂不考虑,谢谢」、熟人约饭→「可以啊,几点?在哪吃」, 均在口吻上。观察:人设的安全约束是软的(约饭仍主动接话),硬门要落到环节4。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
-
环节2 无需新代码:Hermes 是有 shell+SQL 的 agent,给 wechat-db-decrypt skill 补「读会话上下文」一节即可——一次拷库查齐发送者身份(rcontact,显示名优先级 conRemark>nickname>alias)、最近 N 条历史(剥群 wxid: 前缀/type→占位符/只喂 文本)、refermsg 引用解析 + 群名,并给出喂环节3 的上下文骨架。真机验证配方 产出干净上下文。仓库留档 skill/wechat-db-decrypt-SKILL.md。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
-
wechat_reply_daemon.sh:root 监督器,带 Termux 环境、单实例锁、等微信登录 就绪(selftest)、看门狗崩溃重启(退避 10s)。 service.d__wechat-reply-watcher.sh:Magisk service.d 开机钩子(装到 /data/adb/service.d/wechat-reply-watcher.sh)拉起监督器。 真机验证:纯 root(boot 上下文)selftest 通过、单实例防重、杀 watcher 自动 重启、setsid 脱离后挂 init 常驻。已在设备 7×24 运行。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
-
wechat_reply_watcher.py:纯 ctypes inotify 监听当前账号 EnMicroMsg.db 目录 (SELinux 放行、零轮询),失败退回 stat mtime;解密增量读 message(isSend=0 & msgId>last)→ 分类(私聊/群@我/群引用我/群其它)→ 写 incoming.jsonl 队列。 账号运行时按 MD5("mm"+uin) 自适应,首跑建基线不重放历史。真机验证 inotify 触发读取、多账号切换自适应、解密/分类均通过。含 --selftest/--once/--tail。 配套需求文档 md/wechat-auto-reply-requirements.md 标注环节1 完成。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
-
- HERMES_WECHAT_ARCHITECTURE.md: v2.0 → v3.0, rewrite for Node.js plugin - README.md: update architecture diagram, file list, API endpoint, env vars - server/services/wechat/README.md: add sqlcipher tracker + frida sender - SKILL.md: add Frida daemon and SQLCipher tracker usage - wechat-auto-reply-status.md: mark SQLCipher + Frida as verified, update plans 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>