• 手机后台卡死到连电源键都无响应:wechat_reply_watcher.py 死循环+
    wechat-viewer-watchdog.sh(Hermes cron 每 5 分钟跑一次)检测存活只信
    一次 su -c 'ps -A'|grep,系统过载时该探测本身会漏检,导致在卡死的旧
    实例上不断叠加新实例,6 天内滚雪球到 877 个同时存活进程,吃满内存
    +swap 拖死整机。
    
    修复:watchdog 第 5 步改为每次都先 pkill 清场再起一个(与同文件里
    Flask 重启逻辑一致的幂等单例模式),不再依赖探测结果是否可靠。已在
    设备上部署验证。
    
    顺带把 wechat_reply_watcher.py / orchestrator.py / policy.py 同步为
    设备上过去两周的最新版本(repo 里是旧的,device 端已经跑在更新版本
    上——非 root Termux su fallback、admin/member 双角色回复、去重、独
    立验证层等),此前只有 daemon.sh 和 service.d 脚本是同步的。
    
    Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
    yibo authored
     
    Browse File »

  • - text_b64 传中文(--es text 被 shell/am 弄乱→卡 status=1)
    - z2.b 只入队,发送后 HOME+LauncherUI 触发 onResume 派发(设备机制非代码 bug)
    - _send_text_verified 轮询 message.status 直到 2,超时仍 1 视为已入队不误报
    - 拆 stage 目录(watcher=_stage / orchestrator=_stage_orch)避开拷库竞态
    
    Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
    yibo authored
     
    Browse File »

  • 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 File »

  • 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 File »