Files
wecome-openclaw-client/CHANGELOG_MESSAGE_HISTORY.md
徐总 0880813355 feat: 添加消息历史持久化和可视化查看功能
- 新增 messageStore.js 消息存储模块,支持自动保存所有收发消息
- 修改 main.js,在消息转发时自动记录到本地存储
- 修改 preload.js,暴露消息管理 IPC API
- 修改 App.js,添加消息历史查看界面
  - 统计信息面板(总数/接收/发送/会话数)
  - 会话列表和消息详情
  - 搜索、过滤、分页功能
  - 导出 JSON 和清空历史
- 新增完整文档(MESSAGE_HISTORY.md 等)
- 新增测试脚本 test-message-history.js

版本:v1.0.1
2026-03-10 04:09:26 +08:00

5.8 KiB
Raw Blame History

消息历史功能 - 更新说明

更新日期

2026-03-10

版本

v1.0.1 (消息历史功能)

更新内容

新增文件

  1. electron/messageStore.js (新增)

    • 消息持久化存储核心模块
    • 支持消息的增删改查
    • 自动管理消息数量(默认最多 10,000 条)
    • 支持搜索、过滤、导出功能
  2. MESSAGE_HISTORY.md (新增)

    • 完整的功能使用说明文档
    • 包含技术实现细节
    • API 参考和配置说明
  3. test-message-history.js (新增)

    • 自动化测试脚本
    • 验证所有组件是否正确集成

修改文件

  1. electron/main.js

    • 引入 messageStore 模块
    • forwardMessageToOpenClaw() 中添加消息记录WeCom → OpenClaw
    • forwardMessageToWeCom() 中添加消息记录OpenClaw → WeCom
    • 新增 IPC 处理器:
      • get-messages - 获取消息列表
      • get-sessions - 获取会话列表
      • search-messages - 搜索消息
      • get-message-stats - 获取统计数据
      • mark-messages-read - 标记已读
      • export-messages - 导出消息
      • clear-messages - 清空消息
  2. electron/preload.js

    • 暴露消息管理 API 给渲染进程:
      • getMessages()
      • getSessions()
      • searchMessages()
      • getMessageStats()
      • markMessagesRead()
      • exportMessages()
      • clearMessages()
  3. renderer/src/App.js

    • 新增状态管理:
      • showMessageHistory - 控制消息历史模态框显示
      • messages - 消息列表
      • sessions - 会话列表
      • messageStats - 统计数据
      • searchQuery - 搜索关键词
      • messageFilter - 过滤条件
      • messagePage - 分页信息
    • 新增功能函数:
      • loadMessages() - 加载消息
      • loadSessions() - 加载会话
      • loadMessageStats() - 加载统计
      • handleSearchMessages() - 搜索消息
    • UI 更新:
      • 头部新增"💬 消息历史"按钮
      • 新增消息历史模态框(包含会话列表、消息列表、搜索过滤、分页等)
      • 新增统计信息展示面板
    • 事件监听:
      • 收到新消息时自动刷新消息历史(如果已打开)

功能特性

自动保存

  • 所有从企业微信收到的消息自动保存
  • 所有发送到企业微信的回复自动保存
  • 支持文本、图片、文件、语音等消息类型

实时查看

  • 点击"💬 消息历史"按钮即可查看
  • 左侧显示会话列表
  • 右侧显示消息详情
  • 新消息自动刷新

搜索过滤

  • 全文搜索消息内容
  • 按方向过滤(接收/发送)
  • 按来源过滤WeCom/OpenClaw
  • 按会话筛选

数据统计

  • 总消息数
  • 接收/发送消息数
  • 会话数量
  • 今日/昨日消息数

数据管理

  • 导出为 JSON 文件
  • 清空历史记录
  • 分页浏览

使用方法

启动应用

cd ~/.openclaw/workspace/wecome-openclaw-client

# 如果还没安装依赖
npm install
cd renderer && npm install && cd ..

# 启动应用
npm start

查看消息历史

  1. 启动客户端应用
  2. 点击右上角的 💬 消息历史 按钮
  3. 查看消息列表和统计信息
  4. 使用搜索和过滤功能查找特定消息
  5. 可导出 JSON 备份或清空历史

数据存储

存储位置

  • Linux: ~/.config/wecome-openclaw-client/messages/messages.json
  • Windows: %APPDATA%\wecome-openclaw-client\messages\messages.json
  • macOS: ~/Library/Application Support/wecome-openclaw-client/messages/messages.json

数据格式

{
  "id": "msg_1710057600000_abc123",
  "timestamp": "2026-03-10T12:00:00.000Z",
  "direction": "inbound",
  "source": "wecom",
  "sessionId": "bot123:chat456",
  "chatId": "chat456",
  "senderId": "zhangsan",
  "senderName": "张三",
  "messageType": "text",
  "content": "消息内容",
  "attachments": [],
  "metadata": {},
  "delivered": true,
  "read": false
}

兼容性

  • 向后兼容:不影响现有功能
  • 无需迁移:新消息自动开始保存
  • 可选功能:不使用不影响其他功能

性能影响

  • 存储性能: 异步写入,不阻塞主线程
  • 内存占用: 每次加载最多 50 条消息(分页)
  • 磁盘空间: 纯文本消息约 1KB/条,含附件会更大
  • 自动清理: 超过 10,000 条自动删除最旧消息

测试验证

运行测试脚本验证安装:

node test-message-history.js

预期输出:

============================================================
消息存储功能测试
============================================================
✓ 测试 1: 检查 messageStore.js
  ✅ messageStore.js 存在
✓ 测试 2: 检查 main.js 是否引入 messageStore
  ✅ main.js 已引入 messageStore
...
============================================================
✅ 所有测试通过!
============================================================

注意事项

  1. 首次使用: 首次打开消息历史时,如果没有消息会显示"暂无消息"
  2. 媒体文件: 附件路径保存在消息记录中,删除媒体文件会导致附件无法查看
  3. 隐私安全: 导出的 JSON 包含所有消息内容,请妥善保管
  4. 清空操作: 清空历史不可恢复,请谨慎操作

后续优化计划

  • 支持按时间范围筛选
  • 支持消息详情查看(点击查看完整元数据)
  • 支持媒体文件预览
  • 支持消息标记(星标、标签等)
  • 支持批量操作(批量删除、批量导出)
  • 支持数据库存储SQLite替代 JSON 文件
  • 支持消息同步(多设备)

技术支持

如有问题或建议,请联系:


更新完成! 🎉