• 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>
    yibo authored
     
    Browse Dir »
  • 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>
    yibo authored
     
    Browse Dir »

  • 环节3 不写代码,Hermes 本身生成(deepseek-v4-pro/gateway),走 hermes -z 一次性
    调用(裸端点 8642 需鉴权,401,不用)。SOUL.md 从默认 Hermes 人设改为「火星人的
    手机助手」(替他回微信用其口吻+涉钱/承诺/约时间交本人确认;设备原文已备份)。
    真机验证质量:陌生猎头→「暂不考虑,谢谢」、熟人约饭→「可以啊,几点?在哪吃」,
    均在口吻上。观察:人设的安全约束是软的(约饭仍主动接话),硬门要落到环节4。
    
    Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
    yibo authored
     
    Browse Dir »
  • 环节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>
    yibo authored
     
    Browse Dir »
  • 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>
    yibo authored
     
    Browse Dir »
  • 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>
    yibo authored
     
    Browse Dir »

  • - 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>
    yibo authored
     
    Browse Dir »
  • 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>
    yibo authored
     
    Browse Dir »