An AI companion does not remember the way a person does. It re-reads a limited amount of text before every reply, and everything that matters follows from that limit.
Every time you send a message, the model receives a bundle of text: a description of the character, some of your conversation, and whatever facts the app has saved about you. It reads all of that from scratch and writes a reply. Nothing persists inside the model between messages — the sense of continuity comes entirely from what the app chooses to put in that bundle.
That bundle has a size limit, called the context window, measured in tokens. Janitor AI, for example, publishes a free tier with roughly a nine-thousand-token context and sells a subscription with several times more. When your conversation grows past the limit, something has to be dropped, and how the app decides what to drop is the whole game.
The simplest apps keep the most recent messages and discard the oldest. That works until the thing you cared about — your sister’s name, the argument you had, the job you just started — scrolls out of range and vanishes. It feels like betrayal, but it is arithmetic.
Better systems separate two kinds of memory. Recent conversation stays verbatim, while important facts get extracted into a compact list that is always included regardless of age. Character.AI describes exactly this: pinned "Story Memory" that stays put no matter how full the bar gets, automatically captured facts, and a visible memory usage meter. Kindroid exposes the list directly and lets you edit it. Nomi has built its reputation on the same idea, and long-term recall is the feature it is most consistently praised for.
A claim like "she remembers you" tells you almost nothing on its own. The useful questions are narrower: can you see what the app has stored, can you correct it when it saves something wrong, and does anything survive when a conversation runs long. An app that lets you read and edit its memory is making a stronger promise than one that just says the word.
Also expect a trade-off with cost. A large context means more text processed on every single message, which is why the bigger memory usually sits on the paid tier.
State important facts plainly rather than hoping they are inferred. "I work nights and sleep during the day" is far more likely to be captured than the same thing implied across five messages. If the app has an editable memory or a profile field, put the things that matter there instead of in chat, because that section usually survives when conversation does not.
When a companion contradicts something you established, correct it directly in the next message rather than arguing about it. You are not changing its mind; you are putting the right text back into the bundle it reads.