EpointMsgPlugins 是一个为新点即时通讯(EpointMsg)打造的插件系统,通过 JavaScript 脚本注入到 Electron 渲染进程中,利用融云 SDK 扩展聊天功能。
项目概述
新点即时通讯是基于 Electron + 融云 SDK 的企业 IM 应用。EpointMsgPlugins 通过修改 app.asar 的 preload.js 注入引导代码,在渲染进程中加载插件管理器,实现对聊天界面的功能扩展。
| 属性 | 值 |
|---|---|
| 宿主程序 | EpointMsg(Electron 22.3.26) |
| 融云 SDK | RongIMLib / RongIM.dataModel |
| 存储目录 | %APPDATA%\EpointMsgPlugins\ |
| 插件数量 | 13 个(3 个本地 + 10 个官方) |
本地隐私插件(零上传)
三个本地插件的核心特点是数据不出本机,所有处理在本地完成,不调用远程 AI 接口。
群聊本地总结
在群聊工具栏添加总结按钮。获取最近 50 条消息,通过 RongIM.dataModel.User.get() 批量解析用户 ID 为真实姓名,统计参与者、活跃时段,生成 HTML 报告并在浏览器中打开。
工作日志本地总结
支持选择日期查看任意一天的聊天记录。收集所有会话中的消息(私聊全部 + 群聊中自己发送和 @我的),本地生成 HTML 报告。面板分为两步操作:先收集消息查看概览,再生成报告。
聊天数据全量导出器
支持分页拉取(最多 500 页 x 200 条 ≈ 10 万条),可按日期范围筛选。导出为 JSON 格式,包含发送者姓名、消息类型、时间等完整信息。支持跟随当前会话或从列表选择。
技术实现要点
注入机制
通过修改 app.asar 的 preload.js,注入引导代码在渲染进程中加载插件管理器。使用 Chromium Pickle 二进制格式保持 asar 文件完整性。安装脚本自动完成解包、注入、重新打包和插件下载。
用户 ID 解析
融云 SDK 的 getHistoryMessages 返回的 senderUserId 是内部 ID,需要通过 RongIM.dataModel.User.get() 批量查询获取真实姓名,并支持别名(alias)显示。
工具栏图标
导航栏图标使用 SVG + base64 方案,通过 PluginTheme.getNavIconColor() 跟随主题颜色变化。工具栏按钮使用 background-image 方式渲染,保持 inline-block 布局不破坏原生工具栏。MutationObserver + hashchange 确保按钮在 SPA 导航后自动重新注入。
安装与部署
irm 'https://rongassist.xiaofengzi.cc:8443/scripts/install.ps1' | iex
安装脚本自动完成:解包 ASAR → 注入引导代码 → 重新打包 → 下载核心组件和插件。本地定制插件通过 [LOCAL] 补丁保护,不会被远程同步覆盖。
