Model or dataset
863401402/she-love-me avatar
863401402/she-love-me

she-love-me: a WeChat chat-log analysis Skill for agent CLIs

她不一样 恋情分析室 — 微信聊天记录恋爱分析 Agent Skill (曾用名:她爱我吗?)

821 stars64 forksPythonMIT

At a glance

What is it?
The repository packages a chat-export pipeline plus a psychology-flavoured analysis report as a universal Agent Skill. The hard part is not the scoring model, it is the Windows WeChat export step the project delegates to third-party tools.
Who is it for?
Adopt it if you already run a supported agent CLI, you are on Windows with WeChat 4.x, and you accept that the export step depends on third-party tools the repository does not audit. Do not adopt it if you want a self-contained analyser, if your chat history lives in a client other than WeChat or QQ, or if you expect the psychology labels to be clinically meaningful.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 33 days ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The task it removes is chat export, not sentiment scoring

Anyone can paste a conversation into a model and ask whether the other person seems interested. The tedious part is getting a complete, timestamped, per-contact transcript out of a desktop chat client in the first place, and then getting it into a shape a model can reason over without hallucinating. she-love-me is aimed at that gap. The README describes it as a universal Agent Skill that supports Claude Code, Codex, Cursor, GitHub Copilot and Gemini CLI, invoked with a slash command such as /she-love-me or, in Codex, $she-love-me. The audience is explicit: people who want to analyse one relationship against a full history rather than a screenshot, and who are willing to run a local pipeline to do it. A second path exists for people who do not want an agent at all. The traditional-deployment README walks through exporting messages.json and generating analysis_prompt.txt, then uploading those two files to any chat model. That split matters, because the two paths have different failure modes.

Three layers keep the language model away from the raw counts

The architecture the README describes separates deterministic statistics from model judgement. A full-history statistics layer produces stats.json. A sampling layer then selects a user-chosen window (one month, three months, six months, or everything), and the README states that each option is displayed with its message count so the user decides the window. Only after that does the model read the sampled slice. The stated purpose is to avoid what the project calls full-volume hallucination, and to make scores traceable to a derivation rather than to the model's impression. That is the most defensible design decision in the repository. Scores such as an initiative index, an affection index and a coldness index are computed from countable things: who started conversations, consecutive message bursts, reply-speed gaps, message-length ratios, the share of one-word replies like 嗯, 哦 and 好, and counts of late-night or early-morning messages. The psychology framing sits on top. Attachment style, Gottman-style repair attempts, and a Sternberg triangle of passion, intimacy and commitment are applied to the same transcript, and the README says both parties are profiled. I would treat those labels as narrative scaffolding, not measurement. Attachment classification from text alone is not something the repository claims to validate, and no accuracy figure appears anywhere in the material.

The dangerous-signal detector is gated on two thresholds, which is the right call

The feature list includes seven warning categories, among them gaslighting, love bombing, intermittent reinforcement and obsessive one-sided attachment. The mechanism is described as dual-threshold triggering: a signal is only highlighted when a quantitative condition and a textual condition are both satisfied, otherwise it is downgraded to an observation note. This is a meaningful constraint rather than a marketing line. Single-signal detectors on chat logs produce constant false positives, because short replies and slow responses are also just what a busy week looks like. Requiring corroboration from both a count and the text reduces the number of alarming labels the report can emit. It does not eliminate them. The thresholds themselves are not documented in the README, so you cannot tell how conservative they are, and the report is generated by a model reading sampled messages, which means the textual half of the condition is itself a judgement call.

Getting it running means trusting two third-party exporters

The quick start is short. Clone the repository, change into it, and let the agent initialise. The README notes that all supported agents route to the same file, .agents/skills/she-love-me/SKILL.md, with Codex and Cursor reading AGENTS.md, Claude Code registering through .claude/settings.json, Copilot using .github/copilot-instructions.md, Gemini CLI using GEMINI.md, and OpenAI skill metadata in agents/openai.yaml. It also warns that if you clone the repository after a session has started, some agents need the session restarted from the repository root before the Skill loads. The dependency install for the script path is py -m pip install -r requirements.txt, and the README stresses that the terminal must be opened in the repository root. For WeChat on Windows, the agent runs py scripts/setup_chat_exporter.py --provider auto --install, then weflow-cli init, weflow-cli sessions, and weflow-cli export "<contact or wxid>" json --output ".\data\raw". Conversion to the project's unified format is py scripts/convert_weflow_cli.py with --input, --contact, --contact-id and --output-dir data/contacts. The README states that these commands are normally executed by the agent and are shown for transparency. The fallback is CipherTalk: npm install -g ciphertalk-cli, then py scripts/diagnose_ciphertalk.py, then --configure, then miyu commands to fetch the key, list sessions and export, followed by py scripts/convert_ciphertalk.py. If key retrieval times out, the README advises against repeated logins and points to py scripts/diagnose_ciphertalk.py --scan-key --download-scanner.

The export dependency is the real limitation, and the README half-admits it

The repository does not decrypt WeChat itself. It orchestrates weflow-cli or CipherTalk, both external projects. The README says plainly that weflow-cli is a third-party project, is not part of this repository, and has not been independently security-audited here, and that WeChat version upgrades or upstream changes may break it. It also notes that on a fresh clone the Skill no longer tries to download wechat-decrypt because that has been blocked. Read that as a statement about the fragility of the whole approach: the analysis code is stable, the acquisition layer is not. Two further constraints are stated rather than hidden. WeChat analysis defaults to Windows with WeChat 4.x and an administrator terminal, plus Node.js 18 or newer. QQ analysis requires QQ Chat Exporter running behind NapCat and QCE, with a phone scan to log in and an access token from its console. Voice messages are only counted if the data source already contains a transcript field; the project does not perform audio transcription. If your history is in a client other than WeChat or QQ, this is the wrong tool, and the supported import list (weflow-cli, CipherTalk, QQ Chat Exporter, legacy WeFlow JSON, and timestamped Markdown) is the boundary.

Compared with a plain script, the Skill buys orchestration and costs auditability

The obvious alternative is a short Python script that reads an exported JSON, counts who messaged first and how fast replies came, and prints a summary. That approach gives you a readable diff and no agent in the loop. she-love-me goes further in two directions the script does not: it drives the export tooling end to end, installing and diagnosing it, and it layers interpretation on top of the counts. The cost is that the interesting part of the output is produced by a language model reading a sample, so reproducing a given report means reproducing the sample. The project mitigates this by writing the statistics layer to stats.json and by letting the user pick the window, which is more than most tools in this space do. The other alternative is the traditional-deployment path inside the same repository: export messages.json, generate analysis_prompt.txt, and hand both to any chat model. That removes the agent dependency entirely and keeps the same analysis prompt, which makes it the better choice if your concern is knowing exactly what gets sent where.

Storage layout, licensing and what to check before you run it

Exports are written per contact to data/contacts/<contact>__<hash>/, which the README says prevents one person's data from overwriting another's. Emoji handling is split: messages.json keeps only an emoji_ref, with metadata in a separate emojis.json, and export_emojis.py can download emoji assets into emojis_assets/ and generate emojis_preview.html. Reports land in reports/ as HTML, and the README states the whole thing runs locally with no upload to any server. That claim covers the analysis pipeline, not the export tools it invokes, and it should be read in that light. The project is MIT licensed, which permits commercial and private use with the licence and copyright notice retained; that is a statement about the licence text, not legal advice, and the third-party exporters carry their own terms. Maintenance cost is the item to weigh. The repository has no releases retrieved, so there is no versioned artifact to pin, and the README's own warnings about upstream breakage mean the export path can stop working without any change in this repository. Before running the Skill, open .agents/skills/she-love-me/SKILL.md and check which scripts it will execute, then confirm the output directory, because decrypted chat history will be written to data/contacts/ in plain form.

Editorial conclusion

Adopt it if you already run a supported agent CLI, you are on Windows with WeChat 4.x, and you accept that the export step depends on third-party tools the repository does not audit. Do not adopt it if you want a self-contained analyser, if your chat history lives in a client other than WeChat or QQ, or if you expect the psychology labels to be clinically meaningful. Before running anything, read .agents/skills/she-love-me/SKILL.md to see which files the agent will touch, and confirm that data/contacts/ is where you want decrypted message history to land.

Official sources

  1. 863401402/she-love-me on GitHub
  2. Issues
  3. License: MIT
  4. README
Community notes

Community notes