- 新增 messageStore.js 消息存储模块,支持自动保存所有收发消息 - 修改 main.js,在消息转发时自动记录到本地存储 - 修改 preload.js,暴露消息管理 IPC API - 修改 App.js,添加消息历史查看界面 - 统计信息面板(总数/接收/发送/会话数) - 会话列表和消息详情 - 搜索、过滤、分页功能 - 导出 JSON 和清空历史 - 新增完整文档(MESSAGE_HISTORY.md 等) - 新增测试脚本 test-message-history.js 版本:v1.0.1
5.8 KiB
5.8 KiB
消息历史功能 - 更新说明
更新日期
2026-03-10
版本
v1.0.1 (消息历史功能)
更新内容
新增文件
-
electron/messageStore.js (新增)
- 消息持久化存储核心模块
- 支持消息的增删改查
- 自动管理消息数量(默认最多 10,000 条)
- 支持搜索、过滤、导出功能
-
MESSAGE_HISTORY.md (新增)
- 完整的功能使用说明文档
- 包含技术实现细节
- API 参考和配置说明
-
test-message-history.js (新增)
- 自动化测试脚本
- 验证所有组件是否正确集成
修改文件
-
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- 清空消息
-
electron/preload.js
- 暴露消息管理 API 给渲染进程:
getMessages()getSessions()searchMessages()getMessageStats()markMessagesRead()exportMessages()clearMessages()
- 暴露消息管理 API 给渲染进程:
-
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
查看消息历史
- 启动客户端应用
- 点击右上角的 💬 消息历史 按钮
- 查看消息列表和统计信息
- 使用搜索和过滤功能查找特定消息
- 可导出 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
...
============================================================
✅ 所有测试通过!
============================================================
注意事项
- 首次使用: 首次打开消息历史时,如果没有消息会显示"暂无消息"
- 媒体文件: 附件路径保存在消息记录中,删除媒体文件会导致附件无法查看
- 隐私安全: 导出的 JSON 包含所有消息内容,请妥善保管
- 清空操作: 清空历史不可恢复,请谨慎操作
后续优化计划
- 支持按时间范围筛选
- 支持消息详情查看(点击查看完整元数据)
- 支持媒体文件预览
- 支持消息标记(星标、标签等)
- 支持批量操作(批量删除、批量导出)
- 支持数据库存储(SQLite)替代 JSON 文件
- 支持消息同步(多设备)
技术支持
如有问题或建议,请联系:
更新完成! 🎉