
Rewind (回看那句话)
ReleasedWeChat Mini ProgramsStack: WeChat native mini program · TypeScript · Tencent CloudBase · Tencent Hunyuan (hy3) · Node.js · node:test
After an argument, don't rush to reply. Paste the chat and see which sentence changed the mood. Rewind (回看那句话, "Look Back at That Sentence") is a WeChat mini program that reviews a conversation you choose to paste: where it got stuck, what the other person might have meant, and a few easier ways to start the next message. It never says who is right, and what to say, or whether to say anything, stays your call. I built it for the 2026 WeChat Mini Program Development Competition (theme: "Living with AI").
Highlights
A mirror, not a judge
No winner, no scores, no personality labels, no mind-reading. It lays out what is written, what might be meant, and what cannot be told from these lines alone.
Every point traces back to a quote
Key claims carry the original line, and one tap jumps back to it. Where evidence is thin, it says so instead of forcing a conclusion.
Rewrite only your own line
"Try again" rewrites the one sentence of yours most likely to be misread, before and after side by side. It never apologises for you or asks the other side to change, and sometimes the answer is "don't reply yet".
No chat text is kept
Pasted text stays in memory: no local storage, no URL parameters, no share cards. The server stores only quota records, and logs hold whitelisted fields, never user text.
Paste, add context, read the review
Pick the messages in WeChat, copy, and paste them into the mini program. Before anything is sent you can delete lines you don't want the AI to see, and sensitive details such as phone numbers are flagged. Then tell it who the other person is (partner, family, friend, colleague, classmate, or your own wording) and what you want out of it, for example "understand what they meant", "say it clearly" or "hold a boundary".



What the review contains
The conversation comes first, exactly as pasted, so every later point can be checked against it. Then three chapters: the point of dispute, the escalation point, and the next step. Facts and guesses are kept apart, and each reading is labelled as a possibility, not a verdict.


The escalation point shows where the conversation may have turned tense, as a path with both sides in it. It describes a turn, not a culprit. "Try again" then offers a few ways to restate your line, each with the reason it is less likely to start a fight; you can also ask follow-up questions about the report, with a per-report limit.


How it works
The mini program is native WeChat plus TypeScript. Pure logic (paste parsing, counts, sensitive-detail hints, the result view) sits apart and is testable in plain Node, and the pages talk to the cloud through a single service module. One CloudBase cloud function runs the analysis: it spends quota in a database transaction, checks the input with WeChat content security, calls Tencent Hunyuan (hy3) through CloudBase AI, then validates the answer before it reaches the user. The model key never exists in the mini program.
Engineering notes
- Copying several messages only returned the first one. On a real phone, the clipboard API returned just the first message, while pasting into a native text box kept all three and even separated two speakers. So import is a paste box now: one extra long-press for a conversation that is never cut short.
- Hard platform limits shaped the design. The hy3 package can only be called through the SDK, and concurrency limits cannot be raised. The function waits briefly and retries once, then falls back to another Hunyuan model; nothing outside the filed algorithm is used.
- "No verdicts" is hardest to keep in the prompt. Models love a "both sides are equally at fault" summary and adding "they meant well". I added many counter-examples to the prompt and a validator that blocks such phrasing, checks that quoted lines really exist in the chat, and repairs or fails honestly instead of returning a weak result.
- Safety fails closed. If content security returns no result, it counts as rejected. When a chat shows signs of harm to oneself or others, the app stops analysing and rewriting and shows a help message instead. Every result is labelled "AI generated".
- Boundaries are written down and tested. Each rule is an ADR (decision record), and about 185 automated tests plus 30 synthetic eval cases (20 reviews, 10 follow-ups) watch them. Every sample is invented; no real chats were used.
Status
Released on WeChat, with a free daily quota per user. The core review flow, escalation point, "try again", limited follow-ups, privacy clean-up and feedback are in. Next: a local share image containing only what the user picked, saved records the user opts into, and longer chats. The source is private, so this page uses screenshots in place of code. Every screenshot is a simulator capture of the sample review or a synthetic conversation, with no personal data.
The source code for this project is private, so screenshots and notes are shown here instead. Happy to walk through the code on request.