Dlaczego Twoj agent AI pamięta za duzo (i jak to naprawic)
Spis treści
Wyprobowalismy 4 rozne systemy pamieci dla naszych agentow AI. Wszystkie przechowywaly za duzo smieci.
Bazy wektorowe zapisywaly kazda wiadomosc - w tym “tak”, “ok” i “mozesz powtorzyc?” Logi rozmow rosly do megabajtow szumu. Wyszukiwanie RAG zwracalo 10 nieistotnych fragmentow na kazdy uzyteczny. A koszt tokenowy embeddingu wszystkiego byl absurdalny.
TL;DR
- Przechowuj mniej, pamietaj lepiej - wiekszość systemow pamieci przechowuje wszystko i zle wyszukuje. Selektywna, swiadoma pamiec zawsze wygrywa z totalnym zapamietywaniem.
- Naucz agenta o jego wlasnych ograniczeniach - prompt systemowy musi wyraznie mowic “twoj kontekst miesci 10 wiadomosci”. Bez tego agent zaklada, ze pamięta wszystko.
- “Zapisz natychmiast” to kluczowa zasada - jesli agent nie zapisze informacji w momencie, gdy sie jej dowiaduje, informacja zostaje utracona przy zmianie kontekstu. Nie ma drugiej szansy.
- Plikowa pamiec jest prosta i debugowalna - mozesz czytac, edytowac i wersjonowac pliki pamieci agenta za pomoca git. Sprobuj zrobic to z baza wektorowa.
- Polacz strategie krotko- i dlugoterminowe - sumaryzacja obsluguje niedawny kontekst, plikowa pamiec obsluguje trwala wiedze, wyszukiwanie historii obsluguje rzadkie zapytania.
Fundamentalny problem
Fundamentalny problem: wiekszość systemow pamieci AI jest zaprojektowana, aby pamietac wszystko. Ale najlepsza ludzka pamiec dziala poprzez zapominanie prawie wszystkiego i zachowywanie tylko tego, co wazne.
Po latach pracy z agentami produkcyjnymi w Vstorm, doszlismy do innego podejscia. Zamiast przechowywac kazda wiadomosc w bazie wektorowej, dajemy agentowi ustrukturyzowany system plikow dla trwalej pamieci - i uczymy go decydowac, co jest warte zapisania.
Problem: okna kontekstu sa skonczone
Oto fakt, ktory wiekszość architektur agentow ignoruje: twoje okno kontekstu miesci tylko ostatnie ~10-20 wiadomosci. Wszystko wczesniejsze znika - chyba ze jawnie to gdzies zapisales.
Typowa konfiguracja produkcyjna:
- Okno kontekstu: 128k tokenow (GPT-4o) lub 200k tokenow (Claude)
- Srednia wiadomosc: ~500 tokenow (z wywolaniami narzedzi)
- Efektywna pojemnosc: ~50-100 wiadomosci zanim zarzadzanie kontekstem sie wlaczy
- Z sumaryzacja: ~20 ostatnich wiadomosci + skompresowane podsumowanie
Po 50 wymianach agent nie pamięta imienia uzytkownika z wiadomosci #3. Nie dlatego, ze jest glupi - bo informacja dosłownie nie jest juz w kontekscie.
Rozwiazanie: ustrukturyzowana plikowa pamiec
Zamiast wrzucac wszystko do bazy wektorowej, dajemy agentowi system plikow zorganizowany wedlug celu:
/memory/├── AGENTS.md # Core instructions, learned behaviors├── knowledge/│ ├── user.md # User's name, preferences, timezone│ ├── projects/│ │ └── api-project.md # Project-specific context│ └── tech-stack.md # Preferred technologies├── skills/│ ├── task-planning.md # How to plan complex tasks│ └── code-review.md # How to review code└── conversations/ └── summaries/ # Summaries of important past conversationsAgent czyta te pliki na poczatku kazdej rozmowy i aktualizuje je, gdy dowie sie czegos nowego. To nie jest automatyczne przechowywanie - to swiadome zarzadzanie pamiecia.
Zasada “Zapisz natychmiast”
Kluczowa instrukcja w prompcie systemowym agenta:
system_prompt = f"""## CRITICAL: Context Window Limitations
**Your context window only holds the last 10 messages.** This means:- Information shared earlier in the conversation WILL BE LOST- User preferences, names, project details - all forgotten after ~10 exchanges- You MUST proactively save important information to your persistent memory
**When to save to memory (DO THIS IMMEDIATELY):**- User tells you their name → Save to knowledge/user.md- User shares preferences → Save to AGENTS.md under "User Preferences"- User describes a project → Save to knowledge/projects/- User corrects you → Update relevant memory file- Important facts → Save to knowledge/
**Example:** If user says "My name is Kacper", IMMEDIATELY:1. Acknowledge: "Nice to meet you, Kacper!"2. Save to memory: edit_file("knowledge/user.md", ...)"""Kluczowe spostrzezenie: nie zapisuj wszystkiego. Zapisuj tylko to, czego potrzebowalbyś, gdybyś stracil cala rozmowe. Agent podejmuje te decyzje - nie heurystyka, nie embedding, nie prog podobienstwa wektorowego. Sam LLM decyduje, co jest warte zapamietania.
Procedura startowa: czytaj zanim odpowiesz
Kazda rozmowa zaczyna sie od zaladowania pamieci:
# Agent's startup routine (from system prompt):# 1. Read AGENTS.md to recall your instructions# 2. Read knowledge/user.md to remember the user# 3. Check if skills/ has relevant skills for this topicTo jest tanie - przeczytanie 3-4 malych plikow markdown kosztuje kilkaset tokenow. Ale oznacza to, ze agent wie, z kim rozmawia, nad jakimi projektami pracuje i jak woli sie komunikowac.
AGENTS.md: pamiec rdzenna agenta
Plik AGENTS.md sluzy jako tozsamosc agenta i wyuczone zachowania:
# Winston - Core Instructions
## IdentityYou are Winston, an autonomous AI assistant.
## Critical Behaviors
### Memory Management- Your context window is LIMITED to ~10 messages- Important information WILL BE LOST if not saved- When user shares personal info → SAVE IMMEDIATELY
### Proactive LearningWhen you learn something new about the user:1. Acknowledge what you learned2. Save to appropriate memory file3. Confirm: "I've noted that for future reference."
## User Preferences- Language: User may speak Polish or English - match their language- Code style: Prefers explicit over cleverTen plik rosnie organicznie. Kiedy agent dowiaduje sie, ze uzytkownik woli TypeScript od JavaScript, aktualizuje sekcje User Preferences. Kiedy popelni blad i zostanie poprawiony, dodaje wpis “Learned Behaviors”.
Umiejetnosci: wielokrotnego uzytku workflow
Umiejetnosci to pliki markdown, ktore ucza agenta konkretnych wzorcow:
# Task Planning Skill
**Trigger**: User gives a complex task or asks to "implement", "build", "create"
## Before Starting ANY Complex Task
### 1. Understand the Goal- What is the desired end state?- What problem does this solve?- What are the constraints?
### 2. Break Down the Task**Bad**: "Build a login system"**Good**:1. Create user model with email/password2. Implement password hashing3. Create login endpoint4. Add JWT token generation5. Write tests for each component
### 3. Create a Todo ListUse write_todos to track the plan...Umiejetnosci sa ladowane do promptu systemowego, gdy sa istotne. Agent sprawdza katalog skills/ i laduje umiejetnosci pasujace do biezacego tematu rozmowy.
Zarzadzanie kontekstem: sumaryzacja + trwalosc
Architektura laczy dwie strategie:
Krotkoterminowa: procesor sumaryzacji - automatycznie kompresuje starsze wiadomosci, gdy kontekst sie zapelnia:
from pydantic_ai_summarization import create_summarization_processor
summarization_processor = create_summarization_processor( trigger=("fraction", 0.8), # At 80% of context keep=("messages", 20), # Keep last 20 messages max_input_tokens=128000,)Dlugoterminowa: plikowa pamiec - agent zapisuje wazne fakty do plikow markdown:
# When user says "My name is Kacper"# Agent immediately calls:edit_file("knowledge/user.md", old_string="", new_string="Name: Kacper\n")Krotkoterminowy kontekst (ostatnie wiadomosci) jest zarzadzany automatycznie. Dlugoterminowa pamiec (preferencje uzytkownika, szczegoly projektow) jest zarzadzana swiadomie przez agenta.
Wyszukiwanie historii: znajdz bez ladowania
Dla rozmow obejmujacych setki wiadomosci, dostarczamy narzedzie wyszukiwania, ktore odpytuje baze danych bez ladowania wszystkiego do kontekstu:
@toolset.toolasync def search_history(query: str, limit: int = 10, role: str = None) -> str: """Search conversation history for past messages.
The most recent 10 messages are already in your context. Use this for older messages or specific searches. """ messages = await conversation_repo.search_messages( db, conversation_id, query, limit=min(max(1, limit), 50), role=role, )
if not messages: return f"No messages found matching '{query}'"
results = [] for msg in messages: timestamp = msg.created_at.strftime("%Y-%m-%d %H:%M") content = msg.content[:500] + "..." if len(msg.content) > 500 else msg.content results.append(f"[{timestamp}] {msg.role.capitalize()}: {content}")
return f"Found {len(messages)} message(s):\n\n" + "\n\n".join(results)Agent moze wyszukac “Python tutorials” w starych wiadomosciach bez ladowania calej historii rozmowy. Wyniki sa obcinane do 500 znakow, aby uniknac rozdecia kontekstu.
Wzorzec: selektywna pamiec > totalne zapamietywanie
Oto framework:
- Okno kontekstu (10-20 wiadomosci): Ostatnia rozmowa, zarzadzana automatycznie przez sumaryzacje
- Trwala pamiec (pliki): Wazne fakty zapisywane swiadomie przez agenta
- Wyszukiwanie historii (baza danych): Przeszukiwalne archiwum dla rzadkich zapytan
- Umiejetnosci (pliki): Wyuczone workflow ladowane na zadanie
Kazda warstwa obsluguje inne potrzeby retencji. Nie embeddujesz kazdej wiadomosci w bazie wektorowej. Nie przechowujesz kazdego faktu w grafie wiedzy. Pozwalasz agentowi decydowac, co jest wazne - tak jak ludzka pamiec.
Kluczowe wnioski
- Przechowuj mniej, pamietaj lepiej. Wiekszość systemow pamieci przechowuje wszystko i zle wyszukuje. Selektywna, swiadoma pamiec zawsze wygrywa z totalnym zapamietywaniem.
- Naucz agenta o jego wlasnych ograniczeniach. Prompt systemowy musi wyraznie mowic “twoj kontekst miesci 10 wiadomosci”. Bez tego agent zaklada, ze pamięta wszystko.
- “Zapisz natychmiast” to kluczowa zasada. Jesli agent nie zapisze informacji w momencie, gdy sie jej dowiaduje, informacja zostanie utracona przy zmianie kontekstu. Nie ma drugiej szansy.
- Plikowa pamiec jest prosta i debugowalna. Mozesz czytac pliki pamieci agenta. Mozesz je edytowac. Mozesz wersjonowac je za pomoca git. Sprobuj zrobic to z baza wektorowa.
- Polacz strategie krotko- i dlugoterminowe. Sumaryzacja obsluguje niedawny kontekst. Plikowa pamiec obsluguje trwala wiedze. Wyszukiwanie historii obsluguje rzadkie zapytania. Kazda warstwa sluzy innemu celowi.
Wyprobuj sam
memv - system trwalej pamieci dla agentow AI z ustrukturyzowanym przechowywaniem plikow i selektywna retencja.
pip install memveePowiązane artykuły
Od create-react-app do create-ai-app: Nowy standard dla aplikacji AI
W 2016 roku create-react-app ustandaryzował budowanie frontendów. W 2026 roku aplikacje AI potrzebują tego samego moment...
AGENTS.md: Jak przygotować repozytorium dla agentów AI (Copilot, Cursor, Codex, Claude Code)
Każde narzędzie AI do kodowania czyta Twoje repozytorium inaczej. Sprawdź, jak AGENTS.md — wschodzący standard — daje im...
Od zera do produkcyjnego agenta AI w 30 minut — szablon full-stack z 5 frameworkami AI
Krok po kroku: konfigurator webowy, wybierz preset, wybierz framework AI, skonfiguruj 75+ opcji, docker-compose up — dzi...