CHANGELOG.md 2.91 KB

WeChat Viewer — 开发日志 2026-07-08

环境

  • 设备: Pixel 10 Pro Fold, Android 16
  • 路径: ~/wechat-viewer/
  • 访问: http://192.168.110.174:5000 (局域网 Mac)
  • 进程: python3 app.py (proc_2a6f885e1cfb)
  • 重启脚本: bash ~/wechat-viewer/restart.sh

架构原则

  • Skill 驱动: 所有智能任务通过 Hermes CLI 子进程 + skill 执行,不写死 Python 逻辑
  • 子进程模式: hermes chat -q "prompt" -s <skill> --yolo -t terminal,web,file
  • Skill 迭代优于代码迭代: 改 skill 不需要重启 Flask

今日完成的功能

1. 文章列表 (articles)

  • 导航栏「数据中心」→「文章列表」
  • 从 WeChat DB 提取所有 type=49 公众号文章
  • 去重: 用 __biz|mid|idx|sn 四元组,解决同一文章不同追踪参数导致的重复
  • 热度: 显示每个文章被几个群引用过,列出群名
  • 筛选: 按标题搜索、按群筛选
  • 排序: 时间正倒序、热度正倒序
  • 按钮: 📝摘要 🔧学习 🖼图片

2. 日报系统 (reports)

  • 三种类型标签: 群日报、文章摘要、学习记录
  • 生成日报: 从消息浏览页或聊天页触发 → Hermes CLI + wechat-group-digest skill
  • 生成图片: 每个日报→Hermes CLI + gpt-image-gen skill → 19世纪复古铜版画风格 → 存日报图片列表
  • 筛选: 全部/群日报/文章摘要/学习记录
  • 搜索 + 时间排序

3. 日报图片 (report-images)

  • 查看/删除/发送微信
  • 发送微信: 直接调 wechat_hook_send.send_image_via_hook,不走 Hermes 子进程
  • 图片弹窗预览,点击空白关闭
  • 联系人选择弹窗,按最新消息排序

4. 文章摘要 + 学习构建

  • /api/articles/summarize → Hermes CLI → 提取核心观点 → 存日报
  • /api/articles/learn → Hermes CLI + learn-and-build skill → 分类处理 → 存日报
  • /api/articles/generate-image → Hermes CLI + gpt-image-gen → 存日报图片

5. 聊天页增强

  • 文章卡片下方增加 📝摘要 🔧学习 🖼图片 按钮
  • 视频号完整解析(提取昵称/描述/封面/时长)
  • CDATA 全局清理

6. 创建的 Skill

  • learn-and-build — 学习文章 → 构建/迭代 Hermes skill
  • headroom-context-compressor — Headroom 上下文压缩集成方案

7. UI 改造

  • 所有列表页可滚动 (body overflow-y:auto)
  • 按钮移至卡片底部,大号适合移动端
  • 日报类型彩色标签

关键 bug 修复

  • 文章去重: URL 追踪参数 → 四元组 key
  • 发送图片: closeSendModal 先清空 currentImageId 导致 fetch URL 为 null → 先保存后关闭
  • 发图超时: Hermes 子进程 60s TIMEOUT → 改直调 wechat_hook_send
  • 聊天页文章卡片空白: patch 误删 HTML 主体 → 重写

技术栈

  • Flask + Jinja2 + SQLite
  • wechat_db (su sqlcipher 读微信加密数据库)
  • local_db (circle.db 存日报/图片/记录)
  • Hermes CLI 子进程调度
  • wechat_hook_send (LSPosed hook 发图)