各位老师好, 我是007

今天是 2025年6月3日,每天定投15分钟 实现百万梦想的第四天

获利方式:布道师,对开源软件安装部署和二次定制 今天主要任务 :了解chatlog 设计 开始日期 2025 年 6 月 3 日, 结束日期????

这个图的背后是迭代思维。

不要想着一次成功,持续迭代才能日臻完美

第一步:寻找灵感,并找用户做调研

1.1 灵感来源:

chatlog 是一个帮助你利用本地聊天记录的工具, 我想尝试解决了一个常见问题: 我们的聊天记录中包含大量有价值的信息,但这些数据通常很难被有效利用

chatlog 是什么

chatlog 是一个开源工具,它可以:

  1. 解密本地微信数据库文件
  2. 提供 HTTP API 接口访问聊天记录
  3. 支持与 AI 助手集成,让聊天记录变得可查询、可分析

它支持 Windows 和 macOS 系统,兼容微信 3.x 和 4.0 版本,并且完全在本地运行,不会上传任何数据。

主要功能

  • 简洁直观的 Terminal UI 界面:即使不熟悉命令行的用户也能轻松操作,降低使用门槛
  • 完整的 API:支持查询聊天记录、联系人、群聊、最近会话等信息,为开发者提供灵活的数据访问方式
  • 多媒体支持:可以解密图片、语音等多媒体消息,让你的历史数据更加完整
  • 自动解密:实时获取最新的聊天数据,确保信息始终保持更新
  • 多账号管理:支持在不同账号间切换,满足多账号用户的需求
  • MCP 协议支持:可与支持 MCP 的 AI 助手无缝集成,释放聊天记录的数据价值

1. 2 用户调研

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

或者:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
which go

//历史版本问题:
/Users/wangchuanyi/local/go/bin/go

wangchuanyi@wangchuanyideMacBook-Pro local %



which go
/usr/local/bin/go

go version
go version go1.24.3 darwin/amd64

看起来你的系统中存在多个 Go 安装:

1. Homebrew 安装的 Go(在 /usr/local/bin/go)

1. 手动安装的 Go(在 /Users/wangchuanyi/local/go)


1. Homebrew 安装的 Go 是 1.24.3 版本

1. 手动安装的 Go 是 1.20.3 版本

1. 由于 GOROOT 指向了旧版本(1.20.3),导致编译时使用了旧版本


## golang开发环境设置

export GOROOT=/Users/wangchuanyi/local/go

GOROOT是go语言的安装目录

export GOPATH=/Users/wangchuanyi/code/:/Users/wangchuanyi/doc/daily-interview/code/golang

export GOBIN=/Users/wangchuanyi/local/go/bin

export GO111MODULE=on

export PATH=$PATH:$GOROOT/bin:$GOBIN

#export GOPROXY=https://goproxy.cn,direct

如何解决:

export GOROOT=/usr/local/Cellar/go/1.24.3/libexec

默认的 Homebrew 安装的 Go 是 1.24.3 版本

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
```shell
git clone https://github.com/AiZeroToOne/chatlog

//不会源码安装 直接问cursor,分析代码,给出源码编译步骤


go version go1.20.3 darwin/amd64
https://liaoxuefeng.com/books/makefile/variables/index.html


//完整编译流程
make all

- clean:清理旧的编译文件

- lint:运行代码检查

tidy:整理依赖

go mod tidy的使用 把项目所依赖的包添加到go.mod文件中

- test:运行测试

- build:编译当前平台版




相关术语:

  • 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 不编译 不修改代码。因此第一次慢,第二次快。

编译报错:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
link: duplicated definition of symbol dlopen, from github.com/ebitengine/purego and github.com/ebitengine/purego

这是由于 Go 1.24.3 和 1.23.9 版本中的一个已知回归问题导致的。该问题与 `github.com/ebitengine/purego` 库的符号定义冲突有关,具体是 `dlopen` 符号在链接时被重复定义。此问题已在 `purego` 的 v0.8.3 版本中修复。 [48n.jp+2github.com+2github.com+2](https://github.com/golang/go/issues/73832?utm_source=chatgpt.com)[48n.jp](https://48n.jp/blog/2025/05/30/go-1-24-3-build-error/?utm_source=chatgpt.com)

### 解决方法

#### 1. 升级 `purego` 到 v0.8.3 或更高版本

在项目根目录下运行以下命令:


go get github.com/ebitengine/purego@v0.8.3 

go mod tidy
这将更新 `purego` 库到修复了该问题的版本。升级后,重新编译项目,问题应当得到解决


https://github.com/golang/go/issues/73832

真实项目经验:编译器 链接时候 多个共享库出现符号重复定义。 使用弱符号(Weak Symbols), RTLD_DEEPBIND static

启动成功: 2025 年 6 月 3 日 15:00

自己编译代码 耗时太长,不如官方提供的安装包:

4.2 运行

https://github.com/AiZeroToOne/chatlog

  • 最简单的使用方式是通过 Terminal UI 界面操作:

Terminal UI 模式

最简单的使用方式是通过 Terminal UI 界面操作:

1
2
3
4
5
6
7
/Users/wangchuanyi/money/years/2025
git clone git@github.com:AiZeroToOne/chatlog.git
make all
cd /Users/wangchuanyi/money/years/2025/chatlog/bin
chatlog


操作方法:

  • 使用   键选择菜单项
  • 按 Enter 确认选择
  • 按 Esc 返回上级菜单
  • 按 Ctrl+C 退出程序

命令行模式

对于熟悉命令行的用户,可以直接使用以下命令:

1
2
3
4
5
6
7
8
# 获取微信数据密钥
chatlog key

# 解密数据库文件
chatlog decrypt

# 启动 HTTP 服务
chatlog server
  1. 安装 Chatlog下载预编译版本 或 使用 Go 安装
  2. 运行程序:执行 chatlog 启动 Terminal UI 界面
  3. 解密数据:选择 解密数据 菜单项
  4. 开启 HTTP 服务:选择 开启 HTTP 服务 菜单项
  5. 访问数据:通过 HTTP API 或 MCP 集成 访问聊天记录

运行成功:http://127.0.0.1:5030/

4.3 从手机迁移聊天记录

如果电脑端微信聊天记录不全,可以从手机端迁移数据:

  1. 打开手机微信,进入 我 - 设置 - 通用 - 聊天记录迁移与备份
  2. 选择 迁移 - 迁移到电脑,按照提示操作
  3. 完成迁移后,重新运行 chatlog 获取密钥并解密数据

此操作不会影响手机上的聊天记录,只是将数据复制到电脑端

4.4 聊天记录查询

1
GET /api/v1/chatlog?time=2023-01-01&talker=wxid_xxx

参数说明:

  • time: 时间范围,格式为 YYYY-MM-DD 或 YYYY-MM-DD~YYYY-MM-DD

  • talker: 聊天对象标识(支持 wxid、群聊 ID、备注名、昵称等)

  • limit: 返回记录数量

  • offset: 分页偏移量

  • format: 输出格式,支持 jsoncsv 或纯文本

  • 联系人列表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

模型上下文协议 (MCP) 

Cursor 实现了一个 MCP 客户端。这就是为什么我们可以在Cursor中通过配置MCP服务端来调用工具。

Cursor 可支持任意数量的 MCP 服务器。它支持标准输入输出流(stdio)和服务器发送事件(sse)传输

1
2
3
打开 Cursor 右上角设置
选择 MCP
点击 Add new global MCP server 添加 MCP

打开 mcp.json 文件,把下面这段复制进去

1
2
3
4
5
"mcpServers": {
    "chatlog": {
      "url": "http://127.0.0.1:5030/sse"
    },
}
3、查询总结群的精华

4.5 Prompt 指南

https://github.com/sjzar/chatlog/blob/main/docs/prompt.md 提示词:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
talker:〖交流群〗2025只管去做成长会
Time:2025-05-05
你是一个中文的群聊总结的助手,你可以为一个微信的群聊记录,提取并总结每个时间段大家在重点讨论的话题内容。

请帮我将 "<talker>" 在 <Time> 的群聊内容总结成一个群聊报告,包含不多于5个的话题的总结(如果还有更多话题,可以在后面简单补充)。每个话题包含以下内容:
- 话题名(50字以内,带序号1️⃣2️⃣3️⃣,同时附带热度,以🔥数量表示)
- 参与者(不超过5个人,将重复的人名去重)
- 时间段(从几点到几点)
- 过程(50到200字左右)
- 评价(50字以下)
- 分割线: ------------

另外有以下要求:
1. 每个话题结束使用 ------------ 分割
2. 使用中文冒号
3. 无需大标题
4. 开始给出本群讨论风格的整体评价,例如活跃、太水、太黄、太暴力、话题不集中、无聊诸如此类

最后总结下最活跃的前五个发言者。 

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.
  1. 关闭 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
    
    
  2. 安装必要工具

    1
    2
    
    # 安装 Xcode Command Line Tools
    xcode-select --install
    
  3. 获取密钥后:可以重新启用 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…

解决方案

  1. 关闭Cursor
  2. 以下方法任选其一
  • 使用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元完成 刚刚好。

刚刚好,是最难得的美好,

是一种胸怀,

是一种境界,有智慧、有诗意、有余地,

更有“百尺竿头更进一步”的广阔空间、 “百舸争流千帆竞”的奔涌姿态