← Back to list

76.2 Ten thousand micro-letters are exported to AI: The hardest part is not AI

itadol5j

First, the conclusion is that:I did it. 76.2 10,000 messages, 367.5 million words, all in a local library, and I can now ask it any questions.But I spent three days, two of them not fighting with AI, but with "How to get the data."

And I have to put a bad word in front of it.The slogan "My data is mine" every day is basically empty.Your record is on your own hard drive, not a single byte. But you want to read it, you have to cross a legal threshold and a technical threshold. I went through the technology, the law, the people who went through the technology are now cutting the library.

Ten years of Twitter feed to AI.

One, just a year ago, the tools to do this were cleared up.

On 20 October 2025, two of the most famous micro-credit data tools issued identical notifications on the same day.

PyWxDump's README has become the Project Removal Notice to the effect that there is a risk of compliance with the core function, which is to avoid legal problems.Remove all codes and submit historyOnly one note is left in the warehouse. The author finally wrote a "later" and changed the public sign to a Python-only tutorial.

On the same day, only one note was left in the warehouse of Chatlog, and the author Sarv's language was almost identical: received correspondence, code and submission history were emptied and no further support was provided.

What was the scale of these two projects? PyWxDump 9638, chatlog 9177. It's not small.

Later, in January 2026, there were news of a one-off complaint against the warehouse through the DMCA channel in GitHub, with more than 30 figures mentioned in the public report, of which thousands of stars were mature, and defenders directly indicated that maintenance was stopped under legal pressure.

To be clear is to say:The tool that made you read your own chat records was systematically cleaned up.

So don't rush the lesson. The vast majority of the "One Key Exporting MicroList" lessons you can find on the Internet are either dead chains, flowing to paid software, or old warehouses that should have been deleted a few months ago. I'm writing this, and I'm talking about the way, not the way you can run a warehouse -- because that warehouse is probably gone.

Find out where your data is.

On Windows, the Director of Micro-Intelligent Data:

WeChat Files/
└── <你的wxid>/
    ├── Msg/
    │   ├── Multi/MSG0.db      # 聊天正文,分库切片
    │   ├── MicroMsg.db        # 联系人、群、会话列表
    │   └── media/             # 图片、语音、视频,一堆 .dat
    ├── FileStorage/           # 收发的文件
    └── config/                # 账号配置

Mac on ~/Library/Containers/com.tencent.xinWeChat/ Here, the structure is similar. We believe that the path and the library structure have been adjusted since 4.x instead of using the hard path of the old article.

Wireless Local Data Directory Structure

And then you're rushing to open MSG0.db and you're gonna get this:

$ sqlite3 MSG0.db ".tables"
Error: file is not a database

As expected.The entire library is encrypted by SQLCipher, the key does not exist in the file, it is calculated from the memory when micro-mail is running. That's why the core steps of all these tools are called "take the key" -- what they do is essentially to get that key out of the process memory.

This step is at the heart of the compliance dispute. You're going to read your own data, but you're going to do it by bypassing the manufacturer's technical protection. The legal qualification of these two matters, and your instincts, are completely different.

I can't give you a compliance exemption. I can only make it clear:The nature of the local export of their own accounts, which are for their own use, and which are used for dissemination, sale and service is completely different.The one in the back, don't touch it.

Another practical question: "Wasn't the whole book"

Even if the technical problems are resolved, you've got the only part of the computer that's synchronized. We believe that the PC end records were synchronized during your login, or you migrated manually.

They were deleted from other phones in the early years, they were replaced, they were in old equipment, they were not. This time, I'm called "Ten Years," and the year when I actually put together a full dialogue is about six or seven years old, and even earlier, there were only fragments.The so-called "ten-year record" was sewn up in a pile of pieces.

What's the concept of three, 3675?

Cleaning is 367.5 million words, 76.2 million. An average of 48 words, which corresponded to real chats - mostly "where" "good" "received" "ha-ha-ha-ha."

This volume, the first reaction must be "direct to the big model." I thought about it and gave up.

3675 000 words compared to size of context window
Hello?Context RequirementsCan you plug it down?
Mainstream 128K ContextAbout 36.75 M charactersIt's barely 0.4%.
200K ContextAbout 36.75 M characters0.6% or nothing.
Match 1M ContextAbout 36.75 M charactersIt's about 3%, but it's gonna cost a lot.

Attention, there's a trap in the 1M context line:It doesn't mean you can remember.The longer the context, the clearer the decline in the focus of the model on the middle, which has been repeatedly validated by industry. You put ten years of bullshit in it, and you ask it, "Did I say I'm going to change jobs in March 2021?" And it's just a serious bullshit.

So the term "all feed AI" is technically inaccurate.What I'm doing is not putting 367.5 million words into the brain of the model, but creating an index that can be turned over at any time.That's the key difference. All the engineering decisions come from here.

Fourth, I use this pipe.

Five steps, one step will not be spared.

Five-step pipe from 3675,000 words to searchable library

Step 1: Export to structured text

The target format is simple, one line at a time, a speaker, a session name. Don't produce HTML or PDF -- those are for people, not for programs. What I want is a structure that is grep, cuts, counts time.

2021-03-14 22:17:05 | 老张 | [私聊]
2021-03-14 22:17:41 | 我   | 那个事我想了两天,还是算了
2021-03-14 22:18:02 | 老张 | 早该这样

This step has little technical content, but determines the quality of all the links that follow.If you lose the time stamp, you never ask "that time"; if you lose the speaker, you don't know who said it.

Step 2: Clean up, cut half the noise.

At least 30 percent of the original data is garbage: "You have added XXX, you can now start chatting" and "the other side has withdrawn a message" and "[photogram]" "[expression]" and there are endless sets of innumerable relays and red packets.

My treatment principles are:The system message is deleted, the pure media placeholder is kept but the type is marked, and the ultra-sMS (less than 4 words without information) is merged into the context.

3675 million words cut to almost 29 million words. Don't worry, those words only pollute the results.

Step 3: Segments — this step is the easiest to destroy the entire project

The most common mistake by a rookie is to be hard-cut by a fixed number of words. Cut it to 500 words and cut it in half to cut off a conversation, the first half in your hand and the second half in the next. Half the search time, AI begins.

My way.By Session + Time Window Double Cut: In the same session, the adjacent message is disconnected for more than 30 minutes; the block is contained in 400 to 600 words; each block contains the header of the session name + time range + participant.

This headline seems to be redundant, actually the most valuable part. Because problems with users often take time — “at the end of last year's graduation” — there is no time anchor, and vector retrieval is not right.

Step 4: To be quantified

Seventy thousand or more, run it all over. The cost of this scale is enough in two digits, much cheaper than I expected. What really costs is the number of times you run again -- I've changed three editions because of the split strategy and ran three times.

Where? Sqlite-vec is enough. Don't come up here with Milvus, Qdrant, tens of thousands of data on a man, not that.

Step 5: Mixed search, not just a vector

Pure vector search is a common expression in this kind of chat recording. The reason is clear:You're often looking for names, names, specific amounts, which are precise matching jobs and not very good vectors.

So the final run is a hybrid search: a vector recall, a keyword (BM25 or direct SQLLLKE) recall, merge and weigh, and then give the model the answer. This change has resulted in an improvement in the accuracy of the response rate, which is more evident than any previous optimization combined.

Five, five pits I've stepped on, and you probably will.

  1. Thought .db was normal sqlite.It's not. All the questions of "how can't open" stem from this.
  2. Pictures and voice are... dat.Not a standard format. Each file header is different or encrypted. In order to get a separate treatment, I gave up — a 10-year map, with a much lower extraction value than costs.
  3. The panel speaker ID is the number.If you don't do that, you'll have to do a micromap in MicroMsg.db, and you're not going to read it.
  4. The same person's name changes.I've changed my notes and nicknames for 10 years. The same person may have four names in your library. If there is no uniformity, the search must be wrong.
  5. Time stamp sometimes problems.The time for recording across the device to synchronize will be biased, and the "message at 3:00 a.m." will be used to suspect the time stamp, so don't be mistaken.

What can it do now?

Some of the questions I actually asked and answered well:

  • "In 2021, when I said I was going to change jobs, what exactly was the matter?" — it put me together at different times with three people, returning to three concerns at the time.
  • "Did Zhang promise to do it for me, and did it last?" - It found the promise and the one I asked three months later, and he pushed it off.
  • "How many times have I mentioned going to Japan over the years?" - Counting out seven times, with each time and context.

It's a terrible answer. Everything that concerns subjective questions about what I was in the mood at the time, it's a set of words.A chat record can restore the facts, not the feelings.At this point, AI has the same experience you have with old chat records -- even worse, because it doesn't hesitate.

Three conclusions

VII. Whether this is worth it or not

Three groups.

  • I'm just trying to get back up.Stop messing around. The wi-fi contains "backup and recovery", which is available in more menus at the bottom left corner of the Windows/Mac end, with a mobile phone in "I set up a chat record management import and export". Encrypted backup to your own hard drive, enough. What you want is not to lose, not ask.
  • To find something specific:Don't build a library. The search is not bad for micro-intelligence, and the keyword + time filter addresses 80% of the demand. It's your turn to set up the pipe.
  • I really want to turn the decade into a conversationable memory:Do it. But accept three prerequisites — that the data is a wreck, that the legal boundaries are to be kept on their own, and that the quality of the questions and answers depends on how strong you are, not on the model.

As for the matter of feeding AI itself, my greatest feeling is:AI is not the bottleneck of this step.

What is really difficult is to export, to wash, to break up, to match names, to deal with these dirty tasks. None of these things can help you. They're all lined up. When the data is clean, the next model is the simplest step.

So don't be fooled by the "all-to-AI." It's not a show-off. It's a hand job. In 3675, there are probably tens of thousands of words worth asking, all of which are "ha-ha" and "good". But that's the tens of thousands of words worth three days.

Finally, the current situation of such tools is clear. Technically, it does not encourage you to do it; before doing so, please think clearly about the risks, especially not passing the exported data.