# TraceMemo puts your WeChat history in a local workbench

> TraceMemo is a local-first desktop workbench for WeChat data that was originally a WeChat 3.0 chat log parser, that grew into a searchable archive with AI recall, group daily reports and member-leave monitoring, and that keeps its sending feature separate from everything else so the rest of the tool works with no network and no model at all.

**Wxw-Gu/TraceMemo** — TraceMemo（迹忆）是一款本地优先、可追溯的 AI 微信知识与分析工作台。 原名 WechatExplorer，支持聊天记录搜索、知识库、微信群聊总结 和 Agent 助手。

- Repository: https://github.com/Wxw-Gu/TraceMemo
- Stars: 685 · Forks: 192
- Language: TypeScript
- License: not declared
- Published: 2026-10-21 · Updated: 2026-10-21 · Language: en
- Canonical page: https://hysenlabs.com/projects/wxw-gu-tracememo

## A local workbench for chat history

TraceMemo was originally called WechatExplorer, and the README explains the change of name and the change of scope in one paragraph. It is a local-first workbench for WeChat data, AI analysis and automation, and its stated purpose is to turn chat into information that can be browsed, searched, understood and traced.

The order of operations in the introduction matters. You find the original words first, in the archive, and then reach for AI Search, the daily report, monitoring or an agent as needed. The README is explicit that ordinary browsing, searching and exporting need no AI at all, which is a design choice rather than a limitation.

The feature list is long and specific. There is a chat archive and search over conversations, by keyword, by remark, by nickname or by wxid. AI Search, also called asking WeChat, retrieves a vague memory with natural language and shows the sources. A local knowledge base indexes on your machine so that cross-session and cross-time queries are more stable. Image text indexing recognises text inside WeChat pictures, such as screenshots, announcements and quote images, entirely locally, so the original images are not uploaded because of the recognition step.

Then there are the group features: a group daily report for today, yesterday or the last seven days, saved as HTML and as PNG, and speaking statistics that show who talks in a group and who has been silent.

The scale of the feature list is a fair warning. This is a workbench rather than a utility, and the sections that follow are about the parts of it that have real constraints.

## Sending back to WeChat is the one thing that is not local

The README separates the capabilities into two groups, and the second group is where the constraints live.

Browsing, searching, report generation, export, the knowledge base and the image text indexing all need nothing extra. The only step that depends on an additional component is sending content back into WeChat itself, which covers automatically sending the daily report, sending a member-leave notification, and sending a generated voice message to a conversation.

The behaviour when that component is not ready is defined, and it is a good design. When the sending capability is not ready, not bound, or the send fails, the report itself is still generated and saved on the machine, and the execution record shows one of two states, generated but not sent, or generated, send failed, and the send can be retried later.

So the tool degrades rather than breaks. A user whose sending setup is broken still gets their daily report on disk, and the automation entry explains that where it can be sent depends on the current sending capability.

For an evaluator, this is the line to understand. The bulk of the product is local and offline, and one narrow feature is a bridge to the messaging platform, and that bridge can fail without taking the rest of the workbench with it.

## WeChat 4.x access and the WeFlow lineage

The origin story in the README is the most informative part of the repository, because it explains why the data access layer looks the way it does.

In December 2025 the author built the first version, which was simple: parse WeChat 3.0 chat records and use AI to generate group daily reports. It was for personal use, to retrieve scattered information and to see what a group had been discussing.

Then the project sat idle for a while, and when it was picked up again WeChat had moved to 4.x, so the 3.0 parsing approach no longer applied. The new work on data access was greatly helped by WeFlow, and early versions of TraceMemo referred to implementations and ideas in WeFlow's history to solve the message database and key retrieval problems of WeChat 4.x.

The author then gradually extracted that low-level capability from the original implementation and reimplemented it as an independent data access compatibility layer, deliberately keeping compatibility with WeFlow's historical interfaces and behaviour to reduce the migration cost for the upper layers.

The acknowledgement is unambiguous: WeFlow was the important entry point into WeChat data access, and without it there would be no TraceMemo. The credits also list WechatMessageExplorer for parsing ideas, chatlog for data processing and wechat_chatter for the sending side, which is a useful map of the prior art a reader can go to.

## Platforms, packages and the first run

TraceMemo 2.5.1 supports Windows x64, macOS on Apple Silicon, meaning the M series and arm64, and macOS on Intel with x64. Both Windows and macOS support connecting to the local WeChat database and obtaining the database key.

The support table is more specific than the platform list. On macOS the database key is fetched automatically, and the app is adapted to WeChat 4.1.13. The package names follow a pattern, with tracememo-<version>-setup.exe on Windows, tracememo-<version>-arm64.dmg for Apple Silicon and tracememo-<version>-x64.dmg for Intel.

The first run is four steps. Download the installer for your platform from the GitHub releases. Start the app and use the first-time page to select the WeChat data directory and complete the connection. Open the archive view and confirm that contacts and messages have loaded. And when you need AI, add and test a provider under the AI model settings.

That last step is where the model provider is configured, and the environment file shows what the shipped defaults look like. The example configuration is all optional, with the database key marked as optional because it can be entered in the interface, and the AI section pointing at a DeepSeek base URL and a deepseek-chat model, with the note that release builds no longer read those variables automatically.

```
VITE_DB_KEY=
VITE_AI_BASE_URL=https://api.deepseek.com
VITE_AI_MODEL=deepseek-chat
VITE_FILTER_MSG_TYPES=
```

The image decryption keys are also in that file, an XOR key in hex and a 16-character AES key derived from the wxid and a code, described as development fallbacks that end users can fill in or auto-fetch in settings. The comment in the file is that a published release no longer reads these environment variables automatically, so local development can use defaults while end users complete the add-provider flow in the interface.

## The repository is a full Electron application

The tree shows a serious desktop project rather than a script, and the configuration files say how it is built and tested.

The build is electron.vite.config.ts with three electron-builder configurations, electron-builder.yml plus win and send-runtime variants, and a tailwind.config.cjs for styling. The runtime is Electron, with separate tsconfig files for node, web and test code, which is the standard split for a process that has a main side and a renderer side.

Testing is layered into four vitest configurations, unit, component, integration and a knowledge benchmark, plus a playwright.config.ts for end to end runs. The test script in the package metadata chains them in order, typecheck first, then unit, component, integration, a skill install test, an e2e build and finally playwright.

The scripts directory contains the release engineering. There is a type check for the test files, a check for skill version drift, an ensure-env script run by both cp:env and prepare:env, and the prepare-electron-runtime script that fetches the FFmpeg runtime per platform, with separate entries for Windows, macOS arm64 and macOS x64.

There is also a whole skill system, since the scripts test a skill install instruction and check skill version drift, and the README describes a Reader Skill for letting external agents query WeChat history, an Agent Hub for asking the local TraceMemo from inside WeChat, and a Local HTTP API for the same purpose from outside.

## Branches, agent rules and a project that admits it may stop

The contribution model is specific in a way that helps a contributor. The stable version lives on main and is only updated when a release happens, while all changes go into develop and ship with the next version. Pull requests must be based on develop and must target develop, because a pull request aimed at main is closed directly.

The contributing guide holds the branch flow, the commit message style, the pre-review checks, and what the README calls the hard rules for AI agents, in the same document. That is a deliberate choice for a project that ships an agent-facing skill and a local HTTP API, and it means the rules are where a contributor will actually read them.

The final section of the README is unusually candid. The project started as something the author did on a whim, so it will probably not have a serious product roadmap. The author may keep working on it according to personal interest, or may suddenly add strange but interesting features, and for that reason the project may continue at any time or be shelved for a while. If you want a feature, open an issue, and if the current implementation does not meet your needs, fork it and change it yourself.

That is a fair thing for a user to read before depending on the tool, and it is the reason to look at the local-first design as a feature rather than as a limitation. The data stays on your machine, the database is read locally, and the archive is yours whatever happens to the project.

## Conclusion

TraceMemo fits someone with years of WeChat history on a Mac or a Windows PC who wants to find an old message again, or who runs a group and wants a daily summary without copying the chat elsewhere. It does not fit a team that wants a shared or hosted version, because the whole design is local first and the data never leaves the machine, and it does not fit a user without the ability to read the local WeChat database on a supported platform. Before installing, check the platform table for your architecture, expect to grant database key access, and note that the licence is not recorded in the repository and that the author states the project may be paused at any time.

## FAQ

### What is TraceMemo and what does it do?

It is a local-first workbench for WeChat data, AI analysis and automation, originally called WechatExplorer. It offers a chat archive with search, AI search with sources, a local knowledge base, local image text recognition, group daily reports, speaking statistics, member-leave monitoring, automation, text to speech, an Agent Hub and a local HTTP API.

### Do I need an AI provider to use TraceMemo?

No. The README states that ordinary browsing, searching and exporting do not need AI, and the provider is configured separately under the AI model settings when you want AI search, reports or the agent features.

### What happens if the WeChat sending capability is not available?

The report is still generated and saved locally, and the execution record shows it as generated but not sent, or generated with the send failed, and the send can be retried later. Only sending content back into WeChat depends on that component.

### Which platforms and WeChat versions does TraceMemo support?

TraceMemo 2.5.1 supports Windows x64, macOS on Apple Silicon and macOS on Intel, with the macOS build adapted to WeChat 4.1.13 and fetching the database key automatically, and both Windows and macOS supporting local WeChat database connection and key retrieval.

### How do I contribute to TraceMemo?

Stable releases live on main and are updated only at release time, while changes go into develop and ship with the next version. Pull requests must be based on develop and target develop, because a pull request aimed at main is closed, and the contribution guide also holds the rules for AI agents.

## Sources

- [Issues](https://github.com/Wxw-Gu/TraceMemo/issues)
- [README](https://github.com/Wxw-Gu/TraceMemo/blob/main/README.md)
- [Releases](https://github.com/Wxw-Gu/TraceMemo/releases)
- [Wxw-Gu/TraceMemo on GitHub](https://github.com/Wxw-Gu/TraceMemo)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/wxw-gu-tracememo
