# 消息历史功能 - 更新说明 ## 更新日期 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 文件 - 清空历史记录 - 分页浏览 ## 使用方法 ### 启动应用 ```bash 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` ### 数据格式 ```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 条自动删除最旧消息 ## 测试验证 运行测试脚本验证安装: ```bash node test-message-history.js ``` 预期输出: ``` ============================================================ 消息存储功能测试 ============================================================ ✓ 测试 1: 检查 messageStore.js ✅ messageStore.js 存在 ✓ 测试 2: 检查 main.js 是否引入 messageStore ✅ main.js 已引入 messageStore ... ============================================================ ✅ 所有测试通过! ============================================================ ``` ## 注意事项 1. **首次使用**: 首次打开消息历史时,如果没有消息会显示"暂无消息" 2. **媒体文件**: 附件路径保存在消息记录中,删除媒体文件会导致附件无法查看 3. **隐私安全**: 导出的 JSON 包含所有消息内容,请妥善保管 4. **清空操作**: 清空历史不可恢复,请谨慎操作 ## 后续优化计划 - [ ] 支持按时间范围筛选 - [ ] 支持消息详情查看(点击查看完整元数据) - [ ] 支持媒体文件预览 - [ ] 支持消息标记(星标、标签等) - [ ] 支持批量操作(批量删除、批量导出) - [ ] 支持数据库存储(SQLite)替代 JSON 文件 - [ ] 支持消息同步(多设备) ## 技术支持 如有问题或建议,请联系: - 邮箱:sales@toncent.com.cn - 项目地址:http://192.168.1.191:23000/toncent/wecome-openclaw-client.git --- **更新完成!** 🎉