Claude Code geheugen toevoegen met Recall plugin
Gebruik de Recall plugin om Claude Code sessies op uw VPS te hervatten. Voorkom onnodig tokenverbruik door projectcontext lokaal op te slaan in een .recall map met versie 0.4.0.
Wat Recall doet voor het geheugen van Claude Code
Recall is een plugin voor Claude Code die elk project voorziet van een geheugen dat behouden blijft tussen sessies. Het schrijft twee markdown-bestanden naar een .recall/-map binnen uw project: een logboek dat alleen kan worden aangevuld met wat er is gebeurd, en een korte samenvatting van waar u bent gebleven. Beide worden op de machine waar u aan werkt gegenereerd door een lokale Python-summarizer, waardoor het geheugen zelf geen API-tokens kost.
Het gat dat het opvult is klein en constant. U sluit op dinsdag een sessie af op uw VPS. Op woensdag laadt een nieuwe sessie niet automatisch het gesprek van dinsdag, hoewel het ingebouwde automatische geheugen van Claude Code notities kan behouden tussen sessies. Als die notities niet dekken waar u bent gestopt, legt u het project handmatig opnieuw uit, of laat u het model de helft van de repository opnieuw lezen om het te achterhalen. Beide kosten tokens, en de tweede optie kost er erg veel.
Recall versie 0.4.0, uitgebracht op 18 juli 2026, is per oktober 2026 nog steeds de meest recente release en het project is gelicentieerd onder de MIT-licentie. Het is een plugin. Niets in de plugin voert een netwerkaanroep uit.
Wat u nodig heeft op de VPS
De capture hooks van Recall zijn Python-scripts die bij de plugin worden geleverd. Er zijn geen externe afhankelijkheden, dus de enige echte vereiste is een interpreter.
python3 -VUbuntu 24.04 beantwoordt Python 3.12.3. Recall ondersteunt Python 3.9 en nieuwer. Minimale container-images bevatten soms helemaal geen interpreter, en in dat geval beantwoordt de shell python3: command not found. Installeer er een voordat u verdergaat.
sudo apt update && sudo apt install -y python3NumPy is een optionele versneller voor één stap van de summarizer. U heeft deze niet nodig.
python3 -c "import numpy"ModuleNotFoundError: No module named 'numpy' is hier een acceptabel antwoord. De summarizer heeft een pure-Python-pad en de testsuite van het project controleert of beide paden dezelfde zinnen selecteren.
Sessiegeheugen is op een server belangrijker dan op een laptop, omdat serverwerk binnenkomt in korte bezoeken verspreid over meerdere dagen. Als u al Claude Code in tmux op een VPS heeft draaien, dan is Recall het onderdeel dat de sessie van gisteren naar vandaag overbrengt.
Recall installeren vanuit de plugin marketplace
Twee commando's, ingevoerd binnen een Claude Code sessie:
/plugin marketplace add raiyanyahya/recall
/plugin install recall@recallHet tweede commando luidt plugin@marketplace. Beide namen zijn hier recall, wat lijkt op een kopieerfout, maar dat is het niet.
Controleer de installatie door een van de eigen commando's van de plugin uit te voeren:
/recall:show/recall:show drukt de huidige samenvatting af. In een gloednieuw project is er nog niets om af te drukken, dus u controleert in feite of het commando überhaupt bestaat. Als Claude Code /recall:show niet herkent, is de plugin niet geladen en zal er geen hook worden geactiveerd.
Om in plaats daarvan vanuit een checkout te draaien, kloont u eerst de repository en valideert u deze:
git clone https://github.com/raiyanyahya/recall ~/recall
cd ~/recall && claude plugin validate .claude plugin validate . leest het manifest in .claude-plugin/ en rapporteert of de plugin correct is opgebouwd. Start daarna Claude Code vanuit uw projectmap met claude --plugin-dir ~/recall.
Wat de hooks schrijven, en wanneer
Recall registreert drie Claude Code hooks. Elk daarvan voert een Python script uit vanuit de plugin-directory.
SessionStartwordt geactiveerd bij het opstarten, hervatten en wissen. Het toontcontext.mdzodat de sessie opent met uw samenvatting in beeld.Stopwordt geactiveerd telkens wanneer Claude een antwoord voltooit. Het voegt die beurt toe aan het logbestand.SessionEndwordt geactiveerd wanneer de sessie wordt gesloten en kan de samenvatting opnieuw genereren.
Hieruit komen twee bestanden voort, beide in .recall/.
history.mdis het record waaraan alleen kan worden toegevoegd: prompts, antwoorden, aangeraakte bestanden en uitgevoerde commando's.context.mdis het gegenereerde overzicht: het doel, een samenvatting, volgende stappen, aangeraakte bestanden, uitgevoerde commando's en git-context.
Bekijk na één echte sessie de directory.
ls -la .recall/Met capture ingeschakeld, zonder pauze-marker en met een beschikbaar transcript, zou u history.md met inhoud moeten zien. Het is mogelijk dat u helemaal geen context.md ziet; dit is het standaardgedrag en geen fout. auto_save_context is off tenzij u dit instelt, waardoor de samenvatting alleen wordt geschreven wanneer u daarom vraagt:
/recall:saveDat commando voert de lokale summarizer uit over history.md en herschrijft context.md. Het algoritme is TF-IDF (term frequency, inverse document frequency) scoring die een TextRank zinsrangschikking voedt. Het is deterministisch en extractief, wat betekent dat het zinnen selecteert die al in uw logbestand staan. Er wordt geen model aangeroepen, dus de stap is gratis en werkt terwijl de machine offline is.
Recall configureren voor één project
De configuratie bevindt zich in een recall.config.json-bestand in de root van het project. Dit zijn de standaardinstellingen:
{
"output_dir": ".recall",
"capture_history": true,
"summary_sentences": 8,
"redact": true,
"include_git": true,
"max_input_chars": 200000
}output_dirbepaalt waar de twee bestanden worden opgeslagen. Houd deze binnen het project.capture_historyschakelt hethistory.md-logboek in of uit.auto_save_contextaccepteertoffofon_end, en gebruikt standaardoff.summary_sentencesbepaalt hoeveel zinnen er incontext.mdworden bewaard. Een hogere waarde zorgt voor een langere samenvatting en een iets hogere belasting bij het starten van de sessie.redactverwijdert algemene patronen van geheimen voordat er iets naar de schijf wordt geschreven.include_gitvoegt de huidige diff-statistieken en recente commits toe aan de samenvatting.max_input_charsbeperkt hoeveel vanhistory.mdde samenvattingsfunctie in één keer leest.
Voor een project op een VPS is automatische opslag een nuttige wijziging, omdat een sessie op een server vaak eindigt wanneer de terminal wordt afgesloten in plaats van wanneer u besluit te stoppen.
{
"auto_save_context": "on_end",
"summary_sentences": 12
}Om de opname tijdelijk te stoppen zonder de configuratie aan te passen, maakt u de pauzemarkering aan. Verwijder deze om de opname te hervatten.
touch .recall/.capture-pausedDoe dit voorafgaand aan een sessie waarin u met productie-inloggegevens werkt, aangezien redactie een filter is en geen garantie. Dezelfde redenering ligt ten grondslag aan het buitenhouden van geheimen bij AI-agents in het algemeen: het veiligste geheim is het geheim dat de agent nooit te zien krijgt.
Hoeveel tokens bespaart Recall?
Dit hangt af van het alternatief. Het laden van een samenvatting bij het begin van een sessie is goedkoop. Wat het vervangt kan echter duur zijn, omdat een model zonder geheugen van uw project dit opnieuw moet ontdekken door bestanden te lezen.
De gegevens achter deze grafiek
[
{
"label": "Recall context.md",
"char_count": "4,800",
"est_tokens": "1,200"
},
{
"label": "Hand-written CLAUDE.md",
"char_count": "3,200",
"est_tokens": "800"
},
{
"label": "Re-reading the repo",
"char_count": "120,000",
"est_tokens": "30,000"
},
{
"label": "Full transcript replay",
"char_count": "340,000",
"est_tokens": "85,000"
}
]Dit zijn typische cijfers voor een middelgroot project, geen meting van uw specifieke situatie. Een Recall-samenvatting laadt ongeveer 1,200 tokens, wat overeenkomt met de gepubliceerde claim van het project van één tot tweeduizend tokens voor een hervatting. Het opnieuw afspelen van een volledig voorgaand transcript laadt het hele gesprek opnieuw, in de buurt van 85,000 tokens. Het model het project laten herontdekken door bestanden te lezen ligt tussen deze twee in, nabij 30,000 tokens, en dit getal groeit naarmate de repository groter wordt. De rij CLAUDE.md is toegevoegd voor de schaal: deze is goedkoper omdat hij kort en statisch is, en het model informeert over uw vaste regels in plaats van over wat er gisteravond is gebeurd.
Meet uw eigen cijfers. Eén token is ongeveer vier tekens aan Engelse tekst, en iets minder voor code. Als u de samenvatting ook aan een lokaal model op dezelfde VPS voert, controleer dan het venster waarin deze terechtkomt voordat u de hervatting vertrouwt, omdat de standaard contextlengte van Ollama afhangt van het beschikbare VRAM.
wc -c .recall/context.md .recall/history.md
echo $(( $(wc -c < .recall/context.md) / 4 ))Binnen een sessie laat /context zien wat er op dit moment in het contextvenster is geladen, en /cost rapporteert de sessietotalen. Start één sessie koud, start de volgende met een samenvatting en vergelijk de resultaten. Voor een volledig beeld van waar de tokens van een sessie daadwerkelijk naartoe gaan, bevat hoe Claude Code tokens besteedt de uitsplitsing.
Eén kanttekening houdt deze claim eerlijk. De samenvatting wordt bij elke sessiestart geladen, dus een samenvatting waar u nooit actie op onderneemt is een kleine belasting in plaats van een besparing. Houd summary_sentences dicht bij de standaardwaarde, tenzij uw sessies lang duren. Een rustigere sessie helpt aan de andere kant van de balans, omdat een agent die wordt gestuurd naar de kleinste wijziging die werkt een korter logboek achterlaat dat de samenvatter moet verwerken.
De samenvatting opnieuw opbouwen zonder sessie
Als u de repository heeft gekloond, beschikt de summarizer over een eigen entry point voor de opdrachtregel. Dit is nuttig op een VPS wanneer een sessie is beëindigd met de terminal en u alsnog de samenvatting wilt genereren.
python3 ~/recall/scripts/make_context.py --helpDe help-output toont de geaccepteerde vlaggen: --cwd voor de project root, --transcript voor een expliciet transcriptbestand, --quiet om output te onderdrukken, en --harness om te kiezen tussen claude en opencode. Wijs het naar een project:
python3 ~/recall/scripts/make_context.py --cwd /srv/projects/apiHet leest het sessietranscript en history.md, en schrijft vervolgens context.md in de map die u heeft opgegeven. Als u via de marketplace heeft geïnstalleerd, bevindt de plugin zich in een map die door Claude Code wordt beheerd, en is /recall:save de ondersteunde manier om hetzelfde uit te voeren.
Waarom er niets wordt weggeschreven
Geen .recall/ map na een volledige sessie. Controleer of de opname is uitgeschakeld, of de uitvoermap elders is geconfigureerd, of dat er geen transcript is gevonden voordat u concludeert dat de hooks nooit zijn uitgevoerd. Typ /recall:show om te bevestigen dat de plugin is geladen en voer vervolgens python3 -V uit. Het hook-commando probeert eerst python3 en daarna python, dus een omgeving die geen van beide bevat, faalt met stderr en exit-status 127. Claude Code toont een niet-blokkerende foutmelding voor de hook met de eerste regel van stderr.
history.md groeit, maar context.md verandert nooit. auto_save_context staat standaard op off. Voer /recall:save uit, of stel de sleutel in op on_end en laat de SessionEnd-hook het werk doen.
De bestanden verschijnen in het verkeerde project. Recall schrijft relatief aan de map waarin Claude Code is gestart; het starten van een sessie vanuit uw home-map plaatst het geheugen daar. Start vanuit de project-root en gebruik ls -la .recall/ om te achterhalen waar de bestanden daadwerkelijk zijn terechtgekomen.
De opname is gestopt zonder waarschuwing. Controleer op de pauze-markering met ls -a .recall/. Een .capture-paused-bestand dat u vorige week heeft aangemaakt, voert mogelijk nog steeds zijn taak uit.
De samenvatting is summier na een lange sessie. max_input_chars begrenst de invoer voor de samenvatter op 200000 tekens, waardoor een zeer lang logbestand wordt afgekapt. Roteer het logbestand.
mv .recall/history.md .recall/history-2026-07-30.mdVoer daarna één korte sessie uit en controleer ls -la .recall/ opnieuw om te bevestigen dat er een nieuw history.md-bestand is verschenen.
Waar Recall stopt
Recall is een logboek plus een samenvattingsfunctie, en het is belangrijk om duidelijk te zijn over wat hierbuiten valt.
De samenvattingsfunctie is extractief. TextRank selecteert zinnen die al in history.md staan, dus het beoordeelt nooit of een beslissing correct was. Een verkeerde afslag die op dinsdag is vastgelegd, leest op woensdag precies als een goede beslissing. Wanneer de belangen groot zijn, lees dan context.md en corrigeer dit handmatig. Het is een markdown-bestand en niets houdt u tegen om het te bewerken.
Er is geen zoekfunctie. U krijgt één actuele samenvatting en één groeiend logboek per project, geen doorzoekbaar geheugen over projecten heen. Als de vraag is wat u drie weken geleden over de database heeft besloten, dan gebruikt u grep op history.md. Het biedt geen live coördinatie: twee sessies in hetzelfde project delen het logbestand, maar Recall pusht geen nieuwe logboekvermeldingen naar de context van de andere sessie. Wanneer de een moet weten wat de ander doet, kunnen sessies direct tekst tussen elkaar uitwisselen terwijl ze actief zijn.
Het helpt niet binnen een sessie. Een contextvenster dat halverwege een sessie volloopt is een ander probleem met andere oplossingen, en het beheren van het contextvenster binnen één sessie is het bijbehorende onderdeel van deze handleiding.
De samenvatting wordt volgens het ontwerp als niet-vertrouwde invoer behandeld. context.md wordt ingesloten in een codeblok en gelabeld, en Claude vraagt om bevestiging voordat het erop vertrouwt. Dat ontwerp bestaat omdat een gecommitteerde .recall/-directory een plek is waar iedereen met commit-toegang tekst kan schrijven die uw agent zal lezen. In hoeverre de agent stopt om vragen te stellen over wat hij leest, wordt bepaald door de permissiemodus waarin de sessie start. Met Claude Code v2.1.283 of later is de auto-modus al de ingebouwde startmodus voor interactieve terminal- en VS Code-sessies op elk abonnement en bij elke provider, waardoor een classifier in plaats van u de meeste acties beoordeelt; organisaties met de HIPAA-configuratie starten nog steeds in de Manual-modus. Bepaal eenmalig of .recall/ persoonlijk of gedeeld is: voeg het toe aan .gitignore voor persoonlijk geheugen, of commit het en beoordeel het zoals elke andere bijdrage. Als de agent onbeheerd draait, behandelt het veilig draaien van Claude Code op een VPS de bredere grenzen.
Redactie is een inspanningsverplichting. Het richt zich op algemene patronen zoals API-keys, tokens, PEM-blokken en .env-toewijzingen. Lees .recall/ voordat u het commit.
Het versienummer is eerlijk over de volwassenheid. Op 0.4.0, nog steeds de laatste release in oktober 2026, kunnen de configuratiesleutels en de bestandsindeling nog veranderen tussen releases. Lees daarom de changelog voordat u een setup upgradet waar u afhankelijk van bent.
FAQ
Verstuurt Recall mijn code of transcripten naar een externe locatie?
Nee. De capture hooks en de summarizer zijn Python-scripts die op uw eigen machine draaien. De plugin bevat geen API-sleutel en maakt geen netwerkverbindingen. Voor het samenvatten wordt gebruikgemaakt van TF-IDF en TextRank in plaats van een model. Deze stap kost niets en werkt volledig offline. Het nadeel is dat de samenvatting extractief is: het selecteert zinnen uit uw logboek in plaats van nieuwe tekst te schrijven.
Waarom ontbreekt mijn .recall/context.md of is deze verouderd?
auto_save_context staat standaard ingesteld op off, waardoor de samenvatting alleen wordt gegenereerd wanneer u /recall:save uitvoert. Stel "auto_save_context": "on_end" in binnen recall.config.json om de samenvatting te laten herschrijven zodra een sessie wordt beëindigd. Als history.md eveneens ontbreekt, controleer dan capture_history, de .capture-paused-marker en of er een sessietranscript beschikbaar is: de hooks slaan het schrijven van de geschiedenis over in die gevallen. Bevestig dat de plugin is geladen met /recall:show en controleer vervolgens of python3 -V antwoord geeft op die machine, aangezien de hooks Python-scripts zijn.
Hoeveel bespaart Recall per sessie?
Het laden van een samenvatting kost ongeveer 1,200 tokens, vergeleken met een gemiddelde van 30,000 tokens voor een model dat uw repository opnieuw moet inlezen om te bepalen waar het is gebleven. Dit zijn gemiddelde cijfers. Meet uw eigen verbruik met wc -c .recall/context.md en het /context-commando binnen een sessie, waarbij u een koude start vergelijkt met een hervatting vanuit een samenvatting.
Heb ik nog steeds een CLAUDE.md-bestand nodig?
Ja, beide bestanden vervullen verschillende functies. CLAUDE.md is wat u bewust schrijft: de vaste regels en de build-commando's. context.md wordt gegenereerd op basis van wat er daadwerkelijk is gebeurd tijdens de vorige sessie; het bevat dus de halfvoltooide migratie waar u zelf niet aan zou denken om die op te schrijven. Behoud beide bestanden.
Kan één VPS het geheugen voor meerdere projecten bevatten?
Ja. Recall bewaart het geheugen in .recall/ binnen elke projectmap, waardoor twee projecten op dezelfde server aparte logboeken en aparte samenvattingen behouden. Start Claude Code telkens vanuit de projectmap, omdat de bestanden de werkmap volgen en niet het gebruikersaccount.