CONTEXT.md
3.05 KB
WeChat Viewer — 项目词典
面向 AI Agent 的领域术语定义。Agent 加载此文件以快速理解项目上下文,减少重复解释和 token 消耗。
核心概念
- wechat-viewer: Flask Web 应用,运行在 Android/Termux 上,通过 sqlcipher 直接读取微信 EnMicroMsg.db,提供消息浏览、群聊日报、文章管线、自学习闭环等功能。
- EnMicroMsg.db: 微信本地加密数据库,通过 sqlcipher + 密钥解密访问。每个微信账号一个 DB。
- sqlcipher: SQLite 加密扩展,安装在 Termux 中。连接时需 PRAGMA key + cipher_compatibility=1 + cipher_page_size=1024。
数据层
- local_db.py: 本地 SQLite 管理层(
config.LOCAL_DB),存储加工后的数据:processed_messages, chat_summaries, articles/article_shares, daily_reports, report_images, hermes_jobs, learn_queue, learning_results, reply_whitelist。 - wechat_db.py: 原始微信 DB 读取层,通过 sqlcipher 直接查询 EnMicroMsg.db。
- config.py: 账号发现、密钥管理、DB 路径配置。多账号通过
/data/data/com.tencent.mm/MicroMsg/<hash>/EnMicroMsg.db自动发现。
Hermes 集成
- spawn_hermesjob(): 统一子进程启动函数,所有 Hermes CLI 调用必须通过此函数。强制要求
-s指定 skill。返回 task_id 追踪。 - hermes_jobs 表: 追踪所有 Hermes 子进程任务(task_id, job_type, job_name, status, log_file)。
- 子进程工具集: hermes 子进程必须包含
-t terminal,web,file三个工具集。
学习管线 (6步闭环)
- learn_queue 表: 学习队列,每篇待学习文章一行。status: pending_review → pending_learn → learning → learned/failed。
- learning_results 表: 学习结果记录,含 result_type (skill/memory/reference/todo/apply_audit)、verification_result、auto_applied 标记。
- 分类器 (
/api/learn/classify): 对文章摘要评分(1-10),决定 learn_type 和路由。 - 学习执行器 (
/api/learn/execute): Cron 每30分钟触发,扫描 pending_learn,执行 6步吸收 Loop。 - _run_absorb(): Step1-4(摘要→消化→验证→报告)。
- verify_andapply(): Step5 确定性验证。
- _run_apply(): Step6 知识应用审计。
路由规则
- /api/* : JSON API
- /* : HTML 页面模板
- 关键页面:
/首页,/learn管线页,/jobs任务追踪,/reports日报,/articles文章,/chat/<talker>聊天详情,/cron定时任务
关键约束
- Jinja2 反斜杠 Bug:
<script>块中\"\\'backtick 会被 autoescape 破坏 → JS 报错。Fix: data-属性 + 事件委托 + 字符串拼接。 - Flask debug=False: 缓存模板,修改后需
su kill -9杀旧 PID 重启。 - 微信多账号: 账号切换时重新连接对应 DB。两个账号: 小火子(653cdc23) + 火星人(yibooo/ec4f423b)。
- su 权限: 部分文件操作需要 root,通过
su -c执行。
飞书集成
- 需求表/Bug表通过 feishu-todo-sync skill 管理。APP_ID=cli_a91b01debab81cd1, CHAT_ID=oc_3156253ca92a5f8649945c59769d9c52。