一个基于 MCP 实现聊天记录总结和查询的开源工具Chatlog
文章目录
各位老师好, 我是007
今天是 2025年6月3日,每天定投15分钟 实现百万梦想的第四天
获利方式:布道师,对开源软件安装部署和二次定制 今天主要任务 :了解chatlog 设计 开始日期 2025 年 6 月 3 日, 结束日期????
这个图的背后是迭代思维。
不要想着一次成功,持续迭代才能日臻完美
第一步:寻找灵感,并找用户做调研
1.1 灵感来源:
- https://github.com/ruanyf/weekly/issues/6653 使用用户:
- https://x.com/leon_yuan2001 收益:
- 群友每天用Chatlog生成各 AI 产品微信群(付费)话题。 产品:
- https://czkzyp3cp1.feishu.cn/share/base/view/shrcnoweVpP2vDaWtAEFspjqRNf (飞书)
chatlog 是一个帮助你利用本地聊天记录的工具, 我想尝试解决了一个常见问题: 我们的聊天记录中包含大量有价值的信息,但这些数据通常很难被有效利用
chatlog 是什么
chatlog 是一个开源工具,它可以:
- 解密本地微信数据库文件
- 提供 HTTP API 接口访问聊天记录
- 支持与 AI 助手集成,让聊天记录变得可查询、可分析
它支持 Windows 和 macOS 系统,兼容微信 3.x 和 4.0 版本,并且完全在本地运行,不会上传任何数据。
主要功能
- 简洁直观的 Terminal UI 界面:即使不熟悉命令行的用户也能轻松操作,降低使用门槛
- 完整的 API:支持查询聊天记录、联系人、群聊、最近会话等信息,为开发者提供灵活的数据访问方式
- 多媒体支持:可以解密图片、语音等多媒体消息,让你的历史数据更加完整
- 自动解密:实时获取最新的聊天数据,确保信息始终保持更新
- 多账号管理:支持在不同账号间切换,满足多账号用户的需求
- MCP 协议支持:可与支持 MCP 的 AI 助手无缝集成,释放聊天记录的数据价值
1. 2 用户调研
- https://gemini.google.com/deepresearch
- https://manus.im/app
- https://watchpoint.chandao.net/ –项目立项
- https://www.tapd.cn/my_dashboard
1.3 用户故事
你是 PM 负责人,请调查 下面产品的 需求,输出用户故事卡片,符合 3c 原则
普通微信用户故事卡片
用户角色:李明,35岁,销售经理,微信是他主要的工作沟通工具
背景与痛点:李明每天通过微信与数十位客户保持联系,经常需要回顾之前的沟通内容。然而,随着时间推移,微信中积累了大量聊天记录,使用微信自带的搜索功能查找特定信息变得非常困难。他经常需要花费大量时间滚动查看历史记录,有时甚至无法找到关键信息,这严重影响了他的工作效率。
目标:李明希望能够快速、精确地检索历史聊天记录中的关键信息,包括文字、图片和文件,而不必担心隐私泄露问题。
用户故事:作为一名依赖微信进行工作沟通的销售经理,我希望能够使用一个简单直观的工具,在本地快速搜索和查看我的微信聊天历史,这样我就能轻松找到与客户讨论过的产品细节、价格协商和交付时间等关键信息,从而提高工作效率并改善客户服务质量。当我需要查找三个月前与某客户讨论的具体产品型号时,我可以打开ChatLog,输入客户名称和相关关键词,立即获得完整的对话上下文,包括当时分享的产品图片,而不必担心我的聊天数据被上传到任何第三方服务器。
预期价值:
•节省每天至少30分钟用于查找历史信息的时间
•提高客户沟通的准确性和连贯性
•保障敏感商业信息的安全性
•减轻记忆负担,专注于当前工作
数据备份与迁移用户故事卡片
用户角色:林小华,25岁,研究生,频繁更换设备的数码爱好者
背景与痛点:林小华是一名科技爱好者,经常更换手机和电脑设备。每次更换设备时,她都面临微信聊天记录迁移的问题。微信官方的备份恢复功能受到各种限制,如必须同一操作系统、依赖稳定的网络连接等。有时她需要从iOS迁移到Android,或者反之,这使得数据迁移变得极其困难。此外,她还担心在迁移过程中可能丢失重要的聊天记录和媒体文件,尤其是一些包含学习资料和研究讨论的重要群聊内容。
目标:林小华希望能够安全、完整地备份她的微信聊天记录,并在不同设备和操作系统之间无缝迁移这些数据,而不必担心数据丢失或格式不兼容的问题。
用户故事:作为一名经常更换设备的数码爱好者,我需要一个可靠的工具来备份和迁移我的微信聊天记录,这样我就能在更换设备时保留所有重要的对话和媒体文件。当我准备从旧iPhone换到新的Android手机时,我可以使用ChatLog在旧设备上完整备份我的微信数据,包括所有文字记录、图片、语音和文件。这个备份过程完全在本地进行,不依赖云服务,因此即使在网络不稳定的情况下也能顺利完成。备份完成后,我可以将数据文件转移到新设备,然后使用ChatLog导入这些数据,使我能够在新设备上查看和搜索所有历史聊天记录。整个过程保持数据的完整性和隐私安全,让我不必担心重要信息的丢失或泄露。特别是那些包含学术讨论和研究资料的群聊内容,对我的学习和研究工作至关重要,现在我可以确保它们在设备更换过程中得到完整保留。
预期价值:
•消除跨设备和跨平台迁移的技术障碍
•保障重要聊天记录和媒体文件的完整性
•减少设备更换带来的数据丢失风险
•提供不依赖网络条件的本地备份方案
•增强用户对个人数据的控制权
第二步:需求分析 和原型设计
第三步骤:技术选型
第四步骤:迭代开发
4.1 安装步骤
平台:macOS 源码安装方式
go 版本源码安装:
选择对应版本:https://go.dev/dl/#go1.24.0 https://go.dev/dl/go1.24.3.darwin-amd64.tar.gz
Archive | macOS | x86-64 |
或者:
|
|
|
|
相关术语:
- makefile makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率
参考:https://liaoxuefeng.com/books/makefile/pattern-rules/index.html
all: clean lint tidy test build –这个是makefile 什么语法规则
知识点:.PHONY:
.PHONY: clean
clean: rm -rf bin/
- 即使存在名为 clean 的文件,make clean 也会执行删除操作
- 伪造的目标文件意味着执行规则命令并不会生成这个目标文件,所以它的命令在每次make该目标时都会执行,并不会去考虑该目标文件是否存在。
- Makefile中clean目标也没有相关的依赖,make机制判断clean目标已经是最新的,后面的命令永远不会被执行。
项目经验:产品发版时候,make 执行代码编译,结果有时候编译失效,执行 make clean 在重新编译,make 不编译 不修改代码。因此第一次慢,第二次快。
编译报错:
|
|
真实项目经验:编译器 链接时候 多个共享库出现符号重复定义。 使用弱符号(Weak Symbols), RTLD_DEEPBIND static
启动成功: 2025 年 6 月 3 日 15:00
自己编译代码 耗时太长,不如官方提供的安装包:
4.2 运行
https://github.com/AiZeroToOne/chatlog
- 最简单的使用方式是通过 Terminal UI 界面操作:
Terminal UI 模式
最简单的使用方式是通过 Terminal UI 界面操作:
|
|
操作方法:
- 使用
↑
↓
键选择菜单项 - 按
Enter
确认选择 - 按
Esc
返回上级菜单 - 按
Ctrl+C
退出程序
命令行模式
对于熟悉命令行的用户,可以直接使用以下命令:
|
|
- 安装 Chatlog:下载预编译版本 或 使用 Go 安装
- 运行程序:执行
chatlog
启动 Terminal UI 界面 - 解密数据:选择
解密数据
菜单项 - 开启 HTTP 服务:选择
开启 HTTP 服务
菜单项 - 访问数据:通过 HTTP API 或 MCP 集成 访问聊天记录
运行成功:http://127.0.0.1:5030/
4.3 从手机迁移聊天记录
如果电脑端微信聊天记录不全,可以从手机端迁移数据:
- 打开手机微信,进入
我 - 设置 - 通用 - 聊天记录迁移与备份
- 选择
迁移 - 迁移到电脑
,按照提示操作 - 完成迁移后,重新运行
chatlog
获取密钥并解密数据
此操作不会影响手机上的聊天记录,只是将数据复制到电脑端
4.4 聊天记录查询
|
|
参数说明:
-
time
: 时间范围,格式为YYYY-MM-DD
或YYYY-MM-DD~YYYY-MM-DD
-
talker
: 聊天对象标识(支持 wxid、群聊 ID、备注名、昵称等) -
limit
: 返回记录数量 -
offset
: 分页偏移量 -
format
: 输出格式,支持json
、csv
或纯文本 -
联系人列表:
GET /api/v1/contact
ok -
群聊列表:
GET /api/v1/chatroom
-
会话列表:
GET /api/v1/session
4.5 Prompt 指南
https://github.com/sjzar/chatlog/blob/main/docs/prompt.md
4.6 什么是MCP
参考:https://docs.cursor.ac.cn/context/model-context-protocol#google_vignette
- 是一个开放协议,用于标准化应用程序如何向 LLM 提供上下文和工具。
- 可以将 MCP 视为 Cursor 的插件系统 - 它允许您通过标准化接口将 Agent 连接到各种数据源和工具,从而扩展 Agent 的功能。 https://docs.cursor.ac.cn/context/model-context-protocol#google_vignette
Cursor 实现了一个 MCP 客户端。这就是为什么我们可以在Cursor中通过配置MCP服务端来调用工具。
Cursor 可支持任意数量的 MCP 服务器。它支持标准输入输出流(stdio)和服务器发送事件(sse)传输
|
|
打开 mcp.json 文件,把下面这段复制进去
|
|
3、查询总结群的精华
4.5 Prompt 指南
https://github.com/sjzar/chatlog/blob/main/docs/prompt.md 提示词:
|
|
4. 4 避坑
问题描述:案例三 chatlog +mcp macOS 环境下 获取数据密钥失败: SIP is
macOS 用户在获取密钥前需要临时关闭 SIP
- SIP 全称为「System Integrity Protection」, 中文名「系统完整性保护」,是macos系统的一项安全技术,SIP 将一些文件目录和系统应用保护了起来。
但这会影响我们一些使用或设置,比如:更改系统应用图标、终端操作系统目录文件提示「Operation not permitted」、Finder 无法编辑系统目录里的文件。
- csrutil命令需要进入安全模式才能进行变更性操作。 不然会出现 csrutil: This tool needs to be executed from Recovery OS.
-
关闭 SIP:
1 2 3 4 5 6 7 8 9 10 11 12 13
参考:https://github.com/AiZeroToOne/chatlog # 进入恢复模式 # Intel Mac: 重启时按住 Command + R // # Apple Silicon: 重启时长按电源键 # 在恢复模式中打开终端并执行 csrutil disable # 重启系统 #SIP 当前状态** #在正常系统打开「终端」,输入「csrutil status」后回车 参考:https://cloud.tencent.com/developer/article/2168658
-
安装必要工具:
1 2
# 安装 Xcode Command Line Tools xcode-select --install
-
获取密钥后:可以重新启用 SIP(
csrutil enable
),不影响后续使用
Apple Silicon 用户注意:确保微信、chatlog 和终端都不在 Rosetta 模式下运行
macos + 微信Version. 3.8.10 (28632)
问题描述:
解决过程:
阅读:https://github.com/sjzar/chatlog/issues/46
2025-06-09T19:24:47+08:00 DBG Key found key=259cbecab3b54224afab544123b1a3015f54fe6f7d80428f9694742d8e54af9a offset=24 pattern=72747265655f693332
https://github.com/sjzar/chatlog/issues/5]
- https://github.com/sjzar/chatlog/issues/134 # 微信不小心升级到4.0.5,取不到KEY了
- Mac 最后一个可用版本是
v4.0.3.80
- windows 最后一个可用版本是 v4.0.3.36
- 微信历史版本:https://github.com/zsbai/wechat-versions/releases/tag/v4.0.3.80
有效方式:
- root 权限执行
Cursor报错
Your request has been blocked due to suspicious network activity associated with your IP address, likely related to a VPN or proxy service…
解决方案
- 关闭Cursor
- 以下方法任选其一
- 使用Cursor Free VIP重置机器码(推荐)
- 切换VPN IP地址
- 重新注册新账号
过一段时间重新打开Cursor,恢复正常
相关资料
- 微信历史版本:https://github.com/zsbai/wechat-versions/releases/tag/v4.0.3.80
- https://github.com/0xlane/wechat-dump-rs 该工具用于导出正在运行中的微信进程的 key 并自动解密所有微信数据库文件以及导出 key 后数据库文件离线解密。
我是谁
抬头看天:走暗路、耕瘦田、进窄门、见微光,
- 我要通过技术拿到百万年薪P7职务,别人投入时间完成任务,别人采取措施解决问题了,不要不贪别人功劳,
- 但是不要给自己这样假设:别人完成就等着自己完成了,大家一个集团,一个公司,分工不同,不,这个懒惰表现,这个逃避问题表现,
- 别人不这么假设,至少kpi上不会写成自己的,至少晋升不是你,裁员淘汰是,你的整个公司ceo,整个部门总裁,整个领导不帮助一下的,他们不这么想 ,你什么没做,战略是别人10年一点带你研究的多难,项目拆分别人10年完成多少问题,项目实现10年安排组织一点点完成多少bug,多少代码,是不要给自己这样假设:你等了看了观察10年什么做 ,0 贡献,
- 但是不要给自己这样假设,别人全部市场,别人全部市场,别人占据全部客户,一切重要无比,你太差,太才,思考不行,沟通不行,认知不行,去tmd,给别人丢脸。这个方面我无法控制,在这方面经历任何问题应该的。
- 我控制 的事情是 我必须亲自了解行业遇到难题,了解有什么需求,行业解决方案,我可以从三万英尺看问题,像周围人学习,像免费公开英文资料学习,从模仿开始。然后免费公开。我要通过技术拿到百万年薪P7职务,我必须糊涂混沌中走出来
- 目标:拿百万年 想进入一线大厂,但在C++学习和应用上存在瓶颈,渴望跨越最后一道坎。
- 现状:缺乏实战,渴望提升动手能力公司的项目不会重构,没有重新设计的机会,导致难以深入理解需求。
- 成为优秀完成任务,成为团队、公司都认可的核心骨干。优秀地完成任务= 高效能 + 高质量 + 可持续 + 可度量
低头走路:
- 一次专注做好一个小事。
- 不扫一屋 何以扫天下,让自己早睡,早起,锻炼身体,刷牙保持个人卫生,多喝水 ,表达清楚 基本事情做好。
- 我控制 的事情是 我通过写自己代码拿到百万收益。代码就是杠杆,我必须创造可以运行在2c2g云主机小而美产品出来(服务普通人),而不是运行构建至少10台64cpu 300g内存物理机大而全项目(领航者,超越其他产品,出货全球N1,这个还是有停留有限斗争游戏,为top 10人企业服务)我必须糊涂混沌中走出来
我是一个15年c++开发经验工程师, 我果断舍去大而全项目, 我选择了“小而美”的产品,让我的服务运行在2核2G一年100元的云主机。 我必须舍去过去电信,电商,存储经验开发经验 重新用户需求,重新设计项目。
我设定了一个切实可行的目标: 让别人愿意毫无负担地拿出100元,而你也能全力以赴将这100元完成 刚刚好。
刚刚好,是最难得的美好,
是一种胸怀,
是一种境界,有智慧、有诗意、有余地,
更有“百尺竿头更进一步”的广阔空间、 “百舸争流千帆竞”的奔涌姿态