feat: 添加消息历史持久化和可视化查看功能

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

版本:v1.0.1
This commit is contained in:
2026-03-10 04:09:26 +08:00
parent 7c826af5d1
commit 0880813355
9 changed files with 1809 additions and 3 deletions

165
MESSAGE_HISTORY.md Normal file
View File

@@ -0,0 +1,165 @@
# 消息历史功能说明
## 功能概述
为企业微信 OpenClaw 客户端添加了完整的消息持久化和查看功能,所有通过客户端转发的消息都会被自动保存,方便后续查看、管理和审计。
## 主要特性
### ✅ 消息持久化
- 所有收发的消息自动保存到本地
- 支持文本、图片、文件、语音等多种消息类型
- 消息存储在 `~/.config/wecome-openclaw-client/messages/messages.json`
- 默认最多保留 10,000 条消息(可配置)
### ✅ 消息查看
- 实时查看历史消息记录
- 按会话分组浏览
- 支持搜索消息内容
- 支持按方向(接收/发送和来源WeCom/OpenClaw过滤
- 分页浏览,每页 50 条
### ✅ 统计信息
- 总消息数统计
- 接收/发送消息数量
- 会话数量统计
- 今日/昨日消息数量
### ✅ 数据管理
- 导出消息为 JSON 文件
- 清空消息历史
- 按会话查看和管理
## 使用方法
### 1. 打开消息历史
启动客户端后,点击右上角的 **💬 消息历史** 按钮。
### 2. 查看消息
- **左侧面板**:显示所有会话列表,点击可筛选特定会话的消息
- **右侧面板**:显示消息详情,包括:
- 消息来源WeCom/OpenClaw
- 消息方向(接收/发送)
- 发送者信息
- 消息内容
- 时间戳
- 附件信息
### 3. 搜索消息
在搜索框中输入关键词,点击 **🔍 搜索** 按钮:
- 支持搜索消息内容
- 支持搜索发送者名称
- 支持搜索会话 ID
### 4. 过滤消息
使用下拉菜单过滤消息:
- **方向过滤**:只看接收消息或发送消息
- **来源过滤**:只看企业微信消息或 OpenClaw 消息
### 5. 导出数据
点击 **📥 导出 JSON** 按钮,将所有消息导出为 JSON 文件,便于:
- 备份
- 数据分析
- 审计合规
### 6. 清空历史
点击 **🗑️ 清空历史** 按钮可删除所有消息记录(需谨慎操作!)
## 技术实现
### 文件结构
```
wecome-openclaw-client/
├── electron/
│ ├── messageStore.js # 消息存储模块(新增)
│ ├── main.js # 主进程(已修改)
│ └── preload.js # 预加载脚本(已修改)
├── renderer/
│ └── src/
│ └── App.js # UI 组件(已修改)
└── MESSAGE_HISTORY.md # 本文档
```
### 存储位置
- **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`
### 消息数据结构
```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": {
"wecomMsgId": "msgid_123456",
"chatType": "direct"
},
"delivered": true,
"read": false
}
```
### IPC API
客户端提供了以下 IPC API 用于消息管理:
- `getMessages(options)` - 获取消息列表
- `getSessions()` - 获取会话列表
- `searchMessages(query, options)` - 搜索消息
- `getMessageStats()` - 获取统计数据
- `markMessagesRead(messageIds)` - 标记消息为已读
- `exportMessages(options)` - 导出消息
- `clearMessages(options)` - 清空消息
## 配置选项
`electron/messageStore.js` 中可以修改以下配置:
```javascript
this.maxMessages = 10000; // 最多保留的消息数量
```
## 性能优化
- 消息持久化采用异步写入,不阻塞主线程
- 使用临时文件 + 重命名确保写入安全
- 分页加载避免一次性加载大量数据
- 自动清理超出限制的历史消息
## 注意事项
1. **隐私安全**:消息包含敏感信息,请妥善保管导出的数据
2. **存储空间**:大量媒体消息可能占用较多磁盘空间
3. **备份建议**:定期导出重要消息进行备份
4. **性能考虑**:消息数量过多时建议使用搜索和过滤功能
## 更新日志
### v1.0.1 (2026-03-10)
- ✨ 新增消息持久化功能
- ✨ 新增消息历史查看界面
- ✨ 新增搜索和过滤功能
- ✨ 新增统计数据展示
- ✨ 支持导出和清空消息
## 技术支持
如有问题请联系sales@toncent.com.cn