在博客站的更新正式进入 NAS 之前,我觉得这个小工具也值得被记录记录。

自从 AI 和各种工具出现后,我对于自动化写周报有一种莫名的执念,这本来只是周五(或周六)下班前 15 分钟稍稍敲敲键盘就能搞定的事情。

但是拥抱 AI 嘛,我觉得这玩意儿就应该 AI 来写,人有的时候总会选择性地忽略一些事情,但是 AI 并不会,该是什么就是什么。

那么,对于平常沟通主要集中在微信的现代人来说,如何访问微信数据库中的聊天信息就是第一道门槛。

我该怎么拿到聊天记录?

早在 2024 年,我就在 B 站上看到了这样一个视频:

B 站上把两年微信聊天记录做成年度报告的视频

不觉得很酷吗朋友们,作为一个理工男我觉得太酷了,很符合我对未来生活的想象,我当场就是一个认真学习。

大备份时代

那会访问数据库还不像现在这样从内存里找密钥,得先用手机备份聊天记录到电脑,再对备份文件进行解密,好处就是几乎没有封号的风险,当然缺点也很明显,就是很麻烦。

第一次做的聊天记录分析已经完全找不到了(得益于微信优异的文件管理机制),依稀记得是一些什么高频词(词云分析),然后聊天热力图,什么时候发言最多之类的分析,而且那会儿正好也有数据可视化方面的课程,算是边学边做,寓学于乐。

然后 GitHub 上很快就有很多傻瓜式的软件,比较出名的就是“留痕”,从手机备份过去之后一直点继续就能获得一份很好看的报告,后面也玩过不少次,什么群聊分析啊,主题拆解啊之类的,当编程嘉豪装逼的时候很好用。

MCP 与 CLI 时代

尽管后续推出了增量备份(每次只备份新增的数据),但是每隔一段时间都要重新备份一下微信聊天数据,这是否有点太麻烦了。在大佬的不断探索下,第二代全新微信聊天记录获取器,堂堂登场!

因为微信数据库的密钥就直接放在进程内存里,获取了这个密钥之后就可以直接访问实时数据库,加之 MCP 工具在那时候也发展得比较成熟了,所以配置好密钥和 MCP 之后,只需要微信在登录,无须任何操作就可以实时和 AI 就微信聊天内容进行沟通。比较出名的项目就是 chatlog,第一次跑出来的效果惊为天人,推开了新世界的大门。

后续的 CLI 工具进一步简化了流程(比如说 wx-cli),把配置 MCP 这个过程都免掉了,一键获取密钥,长时间有效,可以说是折腾 AI 必装小插件之一。震撼程度不亚于摄影小白第一次购买了大光圈定焦镜头。

MAN!What can I say!

坠机是无法避免的事情。

首先工具泛滥之后,很容易接到腾讯的警告:

微信团队的“安全考试”:想解封账号,先答题

微信安全考试优秀通过者,曾多次通过过微信的安全考试😎

那么多搞诈骗的不封,过来警告我一个看我自己聊天记录的。

其次上述提到的所有库基本上都收到过腾子的警告和投诉,删库的删库,跑路的跑路;加上微信后续也对数据库和密钥进行了处理,不留在内存里面了,获取密钥从简单的内存扫描变成一个需要逆向工程的事情。

虽然经过小小的折腾依然能够获取,但是可以看见的是难度会越来越高。

要是完全看不到了,我的周报怎么办呢🤔

KBD

好消息是写周报其实不用太关注别人说了什么,按照现有的工作模式,我对别人说了什么基本上能够 cover 掉我所有的工作内容。

所以为什么不从输入端出发呢?比如说大家每天都会用的东西——输入法。

GitHub 上已经有很多能够追踪输入的工具,不过大部分都是用来统计按键的,今天在哪个窗口待的最久,输入的内容最多,还能够检测哪个键被敲的最多,判断打字习惯好不好等等。

但是搜了一圈发现其实没有记录输入内容的,或者说,没有记录中文输入内容的。

同时输入法也有了非常成熟的生态:Squirrel,味大的鼠须管输入法,超高的定制化程度。

鼠须管(Squirrel)输入法的 Logo

将上面两个稍微结合一下就可以了,识别一下当前输入的窗口,然后把鼠须管输入法的输入内容记录到数据库里面,设置一些简单的指令查询:

keytrack 的命令行查询效果

效果不赖。

稍微结合一下 AI 的数据可视化能力:

keytrack 统计出的每日输入量与打字时段分布

(每天都在认真工作,没有摸鱼)

如此一来写周报就很简单了,让 AI 去数据库里调取一下输入记录,稍微整理整理即可。并且记录进程是绑定输入法的,如果输入的内容不希望被记录,切换成其他输入法就好了。

最后推广一下,有兴趣自取,记得点个 star 哦:impoorvme50/keytrack