Llm memory patterns
Skill yunseo-kim/agent-toolbox/catalog/skills/llm-memory-patterns
A trusted, curated cross-tool registry for agent components, with end-to-end provenance and automated security vetting of skills, MCP servers, and hooks.
npx -y skills add yunseo-kim/agent-toolbox --skill llm-memory-patternsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Implementation patterns for LLM memory systems covering conversation buffers, persistent vector memory, bidirectional storage, local-private memory, and agentic memory
The file declares its own license as Sustainable Use License 1.0. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
9.7 KB, as published. Nobody here has run it
LLM Memory Patterns
This guide provides instructional patterns for implementing memory systems in LLM applications. It covers a progression from simple session-based buffers to complex agentic memory systems that shape autonomous behavior. Understanding these patterns allows developers to select the appropriate memory architecture based on persistence requirements, privacy constraints, and agentic autonomy.
When to Apply
Apply these patterns when building LLM applications that require:
- Contextual continuity within a single chat session to maintain conversational flow.
- Persistence of user preferences, facts, and past interactions across multiple discrete sessions.
- Highly personalized experiences that adapt based on the specific historical data of a user.
- Privacy-conscious implementations where all data must remain on local infrastructure.
- Shared memory layers that function consistently across multiple different LLM providers.
- Memory-conditioned planning where an agent's historical knowledge dictates its future actions.
Pattern 1: In-Process Conversation Buffer
The in-process conversation buffer is the most fundamental memory pattern. It relies on the application's runtime state to hold the dialogue history.
Implementation Strategy
Maintain a structured list of message objects, typically following the standard role-content schema (e.g., user, assistant, system). Append every user input and the corresponding assistant response to this list. When making a call to the LLM, pass the entire list as the messages parameter.
Use Cases
- Rapid prototyping and proof-of-concept development.
- Simple, short-lived chatbots where the interaction is brief.
- Single-session tools where the user's intent does not span across different sessions.
Trade-offs
- Context Window Exhaustion: Every token in the history counts toward the model's context limit. Long conversations will eventually result in errors or require manual truncation.
- Session Volatility: Once the application process restarts or the session expires, all memory is lost.
- Operational Cost: Incur higher token costs and increased latency as the payload size grows with each turn.
Pattern 2: Persistent Vector Memory
Persistent vector memory introduces a long-term storage layer that survives session restarts and provides semantic retrieval capabilities.
Implementation Strategy
Integrate a memory management framework like mem0 backed by a vector database such as Qdrant. The workflow follows a strict three-step loop:
- Semantic Search: Before prompting the LLM, use the user's current query to search the vector store for relevant past facts or interactions associated with their
user_id. - Context Injection: Take the retrieved memories and prepend or inject them into the system prompt to provide the LLM with relevant historical context.
- Async Storage: After the LLM generates a response, store the key information from the interaction back into the vector store to update the user's memory profile.
Use Cases
- Personal assistants that need to remember user names, preferences, and past questions.
- Customer support bots that reference previous tickets or resolved issues.
- Long-term research companions.
Trade-offs
- Increased Latency: Adding a search step before the LLM call adds to the total response time.
- Retrieval Quality: Semantic search may occasionally retrieve "noisy" or irrelevant context if the embedding model is not well-aligned with the task.
Pattern 3: Bidirectional Memory
Bidirectional memory captures the complete conversational context by storing the inputs and outputs of both the user and the assistant.
Implementation Strategy
When adding to the persistent store, explicitly tag entries with metadata indicating the source role. Use a dedicated memory manager to handle memory.add(text, user_id, metadata={"role": "user"}) for prompts and memory.add(text, user_id, metadata={"role": "assistant"}) for responses. This persistent layer is usually complemented by an in-memory buffer to ensure the immediate UI display remains smooth and chronologically accurate.
Use Cases
- Applications where the specific tone or reasoning path used by the assistant in previous turns is relevant.
- Educational tools that track the progression of both student questions and teacher explanations.
- Collaborative writing assistants.
Trade-offs
- Storage Overhead: Storing both sides of every conversation significantly increases the size of the vector database.
- Context Management: Developers must carefully filter retrieved results to avoid confusing the LLM with fragmented pieces of its own previous output.
Pattern 4: Local/Private Memory
Local memory patterns prioritize data sovereignty and privacy by running the entire stack on the user's local machine or private cloud.
Implementation Strategy
Configure the memory system to use local providers for every component.
- Inference: Use Ollama to serve models like Llama 3.1 locally.
- Embeddings: Utilize local embedding models (e.g., nomic-embed-text) to generate vectors without sending text to external APIs.
- Storage: Deploy a local instance of Qdrant (e.g., via Docker) on localhost. The logic remains identical to the persistent vector memory pattern, but with zero data egress to external cloud providers.
Use Cases
- Enterprise tools handling proprietary code or confidential documents.
- Personal privacy-first assistants.
- Development environments with restricted internet access.
Trade-offs
- Hardware Requirements: Requires sufficient GPU and RAM to maintain acceptable performance.
- Maintenance: The user is responsible for managing the database state and model updates.
Pattern 5: LLM-Agnostic Shared Memory
This pattern treats memory as a portable utility that can be shared across different LLM backends.
Implementation Strategy
Decouple the memory logic from the specific LLM integration. The memory system (mem0 + Qdrant) maintains a consistent interface. You can initiate a conversation with GPT-4, store the memories, and then switch the backend to Claude or a local Llama model. The subsequent model will perform a memory.search() and receive the context generated during the interactions with the previous model.
Use Cases
- Load-balanced applications that switch between models based on cost or availability.
- A/B testing different LLMs while keeping the user's personalized context constant.
- Multi-agent systems where different agents use different models but share the same memory bank.
Trade-offs
- Interface Consistency: Requires a unified prompt injection strategy that works well across different model families.
Pattern 6: Agentic Memory
Agentic memory represents the most advanced tier, where memory directly influences the decision-making and tool-use of autonomous agents.
Implementation Strategy
Integrate memory retrieval into the agent's core planning cycle. Instead of just using memory for RAG-style answering, the agent queries the memory store to understand user-specific goals or constraints before selecting its next action. For example, a research agent might retrieve a user's specific interest in "quantum computing" from memory and then prioritize certain search results while browsing the web autonomously using tools like MultiOn.
Use Cases
- Autonomous research agents that refine their search strategies based on past findings.
- Executive assistants that learn to prioritize tasks based on historical user behavior.
- Specialized agents that adapt their tool-usage patterns to match user preferences.
Trade-offs
- Decision Fragility: If the memory system retrieves outdated or incorrect instructions, the agent may perform unintended autonomous actions.
- Integration Depth: Requires tight coupling between the memory retrieval layer and the agent's action-selection logic.
Pattern Progression
The following diagram illustrates the progression from simple, volatile memory to complex, autonomous memory systems.
[ 1. In-Process Buffer ]
|
v
[ 2. Persistent Vector ] ----> [ 3. Bidirectional ]
| |
v v
[ 4. Local/Private ] [ 5. LLM-Agnostic Shared ]
| |
+----------+----------------+
|
v
[ 6. Agentic Memory ]
Key Libraries
- mem0: A robust managed memory layer that simplifies the storage and retrieval of personal facts and interactions.
- Qdrant: A high-performance vector database designed for efficient semantic search at scale.
- Ollama: The standard tool for running large language models and embedding models locally with ease.
Pattern Selection Guide
| Pattern | Persistence | Privacy | Implementation Difficulty | Primary Driver |
|---|---|---|---|---|
| Buffer | Session-only | Low | Very Low | Prototyping |
| Persistent | Long-term | Medium | Medium | Personalization |
| Bidirectional | Long-term | Medium | Medium | Rich Context |
| Local/Private | Long-term | Maximum | High | Data Privacy |
| Agnostic | Long-term | Variable | High | Tool Flexibility |
| Agentic | Long-term | Variable | Very High | Autonomy |
Gives 0 of the 12 instructions most memory context skills give
Counted across 674 of the 847 authors here whose files we hold, read 2026-08-06
- inform the user when setup is completein 21 of 674, across 6 files
- confirm the draft with the user before writingin 21 of 674, across 6 files
- update the agent skills block in place if it existsin 21 of 674, across 6 files
- present findings to the userin 20 of 674, across 5 files
- write the three docs files from seed templatesin 20 of 674, across 5 files
- ask the user about each decision one at a timein 19 of 674, across 4 files
- edit CLAUDE.md if it existsin 18 of 674, across 3 files
- explore current repo statein 18 of 674, across 3 files
- do not overwrite user edits to surrounding sectionsin 18 of 674, across 3 files
- back up the original file before overwritingin 16 of 674, across 8 files
- keep the memory index under 200 linesin 15 of 674
- Provide actionable steps and verificationin 13 of 674, across 2 files
Said here and by no other author read
- maintain a structured list of message objects
- pass the entire list as messages parameter
- use vector database for long-term storage
- search vector store for relevant past facts
- store key interaction information into vector store
- tag memory entries with source role metadata
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once.