Recall: Claude Code auf dem VPS ein Gedächtnis geben
Recall 0.4.0 speichert Claude-Code-Sitzungen lokal als Markdown und fasst sie zusammen. So richten Sie das Plugin auf einem VPS ein und messen die Token-Ersparnis.
Was Recall für das Gedächtnis von Claude Code leistet
Recall ist ein Claude Code-Plugin, das jedem Projekt ein sitzungsübergreifendes Gedächtnis gibt. Es schreibt zwei Markdown-Dateien in einen Ordner .recall/ innerhalb Ihres Projekts: ein Protokoll, in das nur angehängt wird, und eine kurze Zusammenfassung des letzten Stands. Beide Dateien werden auf dem von Ihnen verwendeten Rechner von einem lokalen Python-Zusammenfasser erstellt. Das Gedächtnis selbst verbraucht daher 0 API-Tokens.
Es schließt eine kleine, aber ständige Lücke. Sie beenden am Dienstag eine Sitzung auf Ihrem VPS. Am Mittwoch weiß Claude Code nichts über Dienstag. Sie erklären das Projekt erneut von Hand, oder Sie lassen das Modell erneut die Hälfte des Repositorys lesen, damit es den Zusammenhang ermittelt. Beides verbraucht Tokens. Die zweite Variante verbraucht viele Tokens.
Recall version 0.4.0 ist im Juli 2026 aktuell, und das Projekt steht unter der MIT-Lizenz. Es ist ein Plugin. Es führt keine Netzwerkverbindung aus.
Was Sie auf dem VPS benötigen
Die Capture-Hooks von Recall sind Python-Skripte, die mit dem Plugin ausgeliefert werden. Es gibt keine Abhängigkeiten von Drittanbietern. Die einzige tatsächliche Voraussetzung ist daher ein Interpreter.
python3 -VUbuntu 24.04 antwortet mit Python 3.12.3. Recall unterstützt Python 3.9 und neuer. Minimale Container-Images enthalten manchmal überhaupt keinen Interpreter. Dann antwortet die Shell mit python3: command not found. Installieren Sie einen Interpreter, bevor Sie fortfahren.
sudo apt update && sudo apt install -y python3NumPy ist eine optionale Beschleunigung für einen Schritt des Zusammenfassers. Sie benötigen es nicht.
python3 -c "import numpy"ModuleNotFoundError: No module named 'numpy' ist hier eine akzeptable Antwort. Der Zusammenfasser verfügt über einen reinen Python-Pfad. Die Testsuite des Projekts prüft, dass beide Pfade dieselben Sätze auswählen.
Der Sitzungsspeicher ist auf einem Server wichtiger als auf einem Laptop. Serveraufgaben fallen in kurzen Sitzungen an, die sich über mehrere Tage verteilen. Wenn Claude Code bereits in tmux auf einem VPS ausgeführt wird, überträgt Recall die Sitzung von gestern in den heutigen Arbeitstag.
Recall aus dem Plugin-Marktplatz installieren
Geben Sie innerhalb einer Claude-Code-Sitzung zwei Befehle ein:
/plugin marketplace add raiyanyahya/recall
/plugin install recall@recallDer zweite Befehl liest plugin@marketplace. Beide Namen sind hier recall. Das sieht wie ein Fehler beim Kopieren und Einfügen aus, ist aber keiner.
Prüfen Sie die Installation, indem Sie einen eigenen Befehl des Plugins ausführen:
/recall:show/recall:show gibt die aktuelle Zusammenfassung aus. In einem ganz neuen Projekt gibt es noch nichts auszugeben. Sie prüfen daher eigentlich nur, ob der Befehl überhaupt vorhanden ist. Wenn Claude Code /recall:show nicht erkennt, ist das Plugin nicht geladen und kein Hook wird ausgeführt.
Wenn Sie das Plugin stattdessen aus einem Checkout ausführen möchten, klonen Sie das Repository und validieren Sie es zuerst:
git clone https://github.com/raiyanyahya/recall ~/recall
cd ~/recall && claude plugin validate .claude plugin validate . liest das Manifest in .claude-plugin/ und meldet, ob das Plugin korrekt aufgebaut ist. Starten Sie Claude Code anschließend mit claude --plugin-dir ~/recall aus Ihrem Projektverzeichnis.
Was die Hooks schreiben und wann
Recall registriert drei Claude Code-Hooks. Jeder Hook führt ein Python-Skript aus dem Plugin-Verzeichnis aus.
SessionStartwird beim Start, Fortsetzen und Leeren ausgelöst. Er zeigtcontext.mdan, damit Ihre Zusammenfassung beim Öffnen der Sitzung sichtbar ist.Stopwird jedes Mal ausgelöst, wenn Claude eine Antwort beendet. Er hängt diesen Durchlauf an das Protokoll an.SessionEndwird beim Schließen der Sitzung ausgelöst und kann die Zusammenfassung neu erzeugen.
Dabei entstehen zwei Dateien, beide innerhalb von .recall/.
history.mdist der Datensatz, in den nur angehängt wird: Eingabeaufforderungen, Antworten, bearbeitete Dateien und ausgeführte Befehle.context.mdist die erzeugte Zusammenfassung: Ziel, Zusammenfassung, nächste Schritte, bearbeitete Dateien, ausgeführte Befehle und Git-Kontext.
Sehen Sie sich das Verzeichnis nach einer tatsächlichen Sitzung an.
ls -la .recall/history.md sollte jetzt Inhalt enthalten. context.md ist möglicherweise überhaupt nicht vorhanden. Das ist das Standardverhalten und kein Fehler. auto_save_context ist off, sofern Sie es nicht setzen. Daher wird die Zusammenfassung nur geschrieben, wenn Sie sie anfordern:
/recall:saveDieser Befehl führt die lokale Zusammenfassungserstellung über history.md aus und schreibt context.md neu. Der Algorithmus verwendet eine TF-IDF-Bewertung (Term Frequency, Inverse Document Frequency) und darauf aufbauend eine TextRank-Satzbewertung. Er ist deterministisch und extraktiv. Das bedeutet, dass er Sätze auswählt, die bereits in Ihrem Protokoll vorhanden sind. Es wird kein Modell aufgerufen. Daher ist dieser Schritt kostenlos und funktioniert auch offline auf dem Rechner.
Recall für ein Projekt konfigurieren
Die Konfiguration befindet sich in einer recall.config.json-Datei im Projektstammverzeichnis. Dies sind die mitgelieferten Standardwerte:
{
"output_dir": ".recall",
"capture_history": true,
"summary_sentences": 8,
"redact": true,
"include_git": true,
"max_input_chars": 200000
}output_dirlegt fest, wo die beiden Dateien gespeichert werden. Belassen Sie sie innerhalb des Projekts.capture_historyaktiviert und deaktiviert dashistory.md-Protokoll.auto_save_contextakzeptiertoffoderon_endund verwendet standardmäßigoff.summary_sentenceslegt fest, wie viele Sätze incontext.mderhalten bleiben. Ein höherer Wert erzeugt eine längere Zusammenfassung und erhöht die Last beim Sitzungsstart geringfügig.redactentfernt gängige Muster für Geheimnisse, bevor Daten auf die Festplatte geschrieben werden.include_gitfügt den aktuellen Diff und die letzten Commits zur Zusammenfassung hinzu.max_input_charsbegrenzt, wie viel vonhistory.mdder Zusammenfassungsdienst pro Durchlauf liest.
Für ein Projekt auf einem VPS ist das automatische Speichern die nützliche Änderung. Eine Sitzung auf einem Server endet häufig, wenn die Terminalverbindung abbricht, und nicht erst, wenn Sie sie bewusst beenden.
{
"auto_save_context": "on_end",
"summary_sentences": 12
}Um die Aufzeichnung vorübergehend anzuhalten, ohne die Konfiguration zu ändern, erstellen Sie die Pausenmarkierung. Löschen Sie sie, um die Aufzeichnung wieder zu starten.
touch .recall/.capture-pausedFühren Sie dies vor einer Sitzung aus, in der Sie mit Anmeldedaten für Produktionssysteme arbeiten. Die Schwärzung ist ein Filter und keine Garantie. Aus demselben Grund sollten Sie Geheimnisse grundsätzlich von AI-Agenten fernhalten: Ein sicheres Geheimnis ist eines, das der Agent nie sieht.
Wie viele Tokens spart Recall?
Das hängt davon ab, welche Alternative verwendet worden wäre. Das Laden einer Zusammenfassung zu Sitzungsbeginn ist kostengünstig. Das, was sie ersetzt, kann teuer sein, weil ein Modell ohne Kenntnis Ihres Projekts die Informationen durch das Lesen von Dateien neu ermittelt.
The data behind this chart
[
{
"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"
}
]Dies sind typische Werte für ein mittelgroßes Projekt und keine Messung Ihres Projekts. Eine Recall-Zusammenfassung wird mit ungefähr 1,200 Tokens geladen. Das entspricht der veröffentlichten Angabe des Projekts von ein- bis zweitausend Tokens für eine Fortsetzung. Das erneute Laden eines vollständigen vorherigen Transkripts lädt die gesamte Unterhaltung erneut. Der Wert liegt im Bereich von 85,000 Tokens. Wenn das Modell das Projekt durch das Lesen von Dateien neu ermittelt, liegt der Wert dazwischen, bei ungefähr 30,000 Tokens. Dieser Wert steigt mit der Größe des Repositorys. Die Zeile CLAUDE.md dient als Vergleich: Sie ist kürzer und statisch und daher kostengünstiger. Sie teilt dem Modell Ihre dauerhaft geltenden Regeln mit und nicht, was am Vorabend passiert ist.
Messen Sie Ihre eigenen Werte. Ein Token entspricht im englischen Fließtext ungefähr vier Zeichen und bei Code etwas weniger.
wc -c .recall/context.md .recall/history.md
echo $(( $(wc -c < .recall/context.md) / 4 ))Innerhalb einer Sitzung zeigt /context, was derzeit in das Kontextfenster geladen ist. /cost meldet die Sitzungssummen. Starten Sie eine Sitzung ohne vorhandenen Kontext. Starten Sie die nächste Sitzung mit einer vorhandenen Zusammenfassung. Vergleichen Sie anschließend die Werte. Eine vollständige Übersicht darüber, wofür die Tokens einer Sitzung tatsächlich verwendet werden, finden Sie unter wie Claude Code Tokens verwendet.
Eine Einschränkung macht diese Aussage realistisch. Die Zusammenfassung wird zu Beginn jeder Sitzung geladen. Eine Zusammenfassung, auf die Sie nie zurückgreifen, ist daher eine geringe Zusatzbelastung und keine Einsparung. Belassen Sie summary_sentences möglichst beim Standardwert, sofern Ihre Sitzungen nicht lange laufen.
Zusammenfassung ohne Sitzung neu erstellen
Wenn Sie das Repository geklont haben, verfügt der Zusammenfasser über einen eigenen Kommandozeileneinstiegspunkt. Das ist auf einem VPS nützlich, wenn eine Sitzung zusammen mit dem Terminal beendet wurde und Sie die Zusammenfassung trotzdem benötigen.
python3 ~/recall/scripts/make_context.py --helpDie Hilfeausgabe führt die akzeptierten Flags auf: --cwd für das Projektstammverzeichnis, --transcript für eine explizite Transkriptdatei, --quiet zum Unterdrücken der Ausgabe und --harness zur Auswahl zwischen claude und opencode. Geben Sie ein Projekt an:
python3 ~/recall/scripts/make_context.py --cwd /srv/projects/apiDas Programm liest das Sitzungstranskript und history.md. Anschließend schreibt es context.md unter dem von Ihnen angegebenen Verzeichnis. Wenn Sie das Plugin über den Marketplace installiert haben, befindet es sich in einem von Claude Code verwalteten Verzeichnis. /recall:save ist die unterstützte Methode für dieselbe Aufgabe.
Warum nichts geschrieben wird
Nach einer vollständigen Sitzung gibt es kein .recall/-Verzeichnis. Die Hooks wurden nie ausgeführt. Geben Sie /recall:show ein, um zu bestätigen, dass das Plugin geladen ist, und führen Sie anschließend python3 -V aus. Der Hook-Befehl versucht zuerst python3 und danach python. Fehlen beide Dateien, wird nichts geschrieben, und es wird keine Meldung ausgegeben.
history.md wächst, aber context.md ändert sich nie. auto_save_context ist standardmäßig auf off gesetzt. Führen Sie /recall:save aus, oder setzen Sie den Schlüssel auf on_end und lassen Sie den SessionEnd-Hook die Aktion ausführen.
Die Dateien erscheinen unter dem falschen Projekt. Relative Pfade beziehen sich auf das Verzeichnis, aus dem Claude Code gestartet wurde. Wenn Sie eine Sitzung aus Ihrem Home-Verzeichnis starten, wird der Speicher dort abgelegt. Starten Sie die Sitzung aus dem Projektstammverzeichnis, und verwenden Sie ls -la .recall/, um den tatsächlichen Speicherort der Dateien zu ermitteln.
Die Erfassung wurde angehalten, ohne dass eine Warnung ausgegeben wurde. Prüfen Sie mit ls -a .recall/, ob das Pausenkennzeichen vorhanden ist. Eine .capture-paused-Datei, die Sie letzte Woche erstellt haben, ist weiterhin aktiv.
Die Zusammenfassung ist nach einer langen Sitzung unvollständig. max_input_chars begrenzt die Eingabe des Zusammenfassers auf 200000 Zeichen. Ein sehr langes Protokoll wird daher gekürzt. Rotieren Sie das Protokoll.
mv .recall/history.md .recall/history-2026-07-30.mdFühren Sie anschließend eine kurze Sitzung aus, und prüfen Sie erneut ls -la .recall/, um zu bestätigen, dass ein neues history.md erstellt wurde.
Wo Recall endet
Recall besteht aus einem Log und einer Zusammenfassung. Es ist wichtig, klar zu benennen, was dadurch nicht abgedeckt ist.
Die Zusammenfassung ist extraktiv. TextRank wählt Sätze aus, die bereits in history.md stehen. Daher wird nicht bewertet, ob eine Entscheidung richtig war. Eine am Dienstag aufgezeichnete Fehlentscheidung sieht genauso aus wie eine gute Entscheidung am Mittwoch. Wenn die Folgen wichtig sind, lesen Sie context.md und korrigieren Sie die Datei manuell. Es handelt sich um eine Markdown-Datei. Sie können sie jederzeit bearbeiten.
Es gibt keine Suchfunktion. Sie erhalten pro Projekt eine aktuelle Zusammenfassung und ein wachsendes Log. Einen projektübergreifend durchsuchbaren Speicher gibt es nicht. Wenn Sie wissen möchten, was Sie vor drei Wochen zur Datenbank entschieden haben, durchsuchen Sie history.md mit grep.
Innerhalb einer Sitzung hilft es nicht. Ein volllaufendes Kontextfenster während einer Sitzung ist ein anderes Problem mit anderen Lösungen. Der begleitende Artikel Verwalten des Kontextfensters innerhalb einer Sitzung gehört zu diesem Leitfaden.
Die Zusammenfassung wird absichtlich als nicht vertrauenswürdige Eingabe behandelt. context.md wird in einem abgegrenzten und beschrifteten Block eingefügt. Claude fragt nach, bevor es sich darauf stützt. Das ist erforderlich, weil ein versioniertes .recall/-Verzeichnis ein Ort ist, an dem jeder mit Commit-Zugriff Text schreiben kann, den Ihr Agent liest. Entscheiden Sie einmal, ob .recall/ persönlich oder gemeinsam verwendet wird. Fügen Sie es für persönlichen Speicher zu .gitignore hinzu. Oder committen Sie es und prüfen Sie es wie jeden anderen Beitrag. Wenn der Agent unbeaufsichtigt ausgeführt wird, behandelt Claude Code sicher auf einem VPS ausführen die weiter gefasste Sicherheitsgrenze.
Die Schwärzung erfolgt nach bestem Bemühen. Sie zielt auf gängige Muster wie API-Schlüssel, Tokens, PEM-Blöcke und .env-Zuweisungen. Lesen Sie .recall/, bevor Sie die Datei committen.
Die Versionsnummer gibt den Reifegrad ehrlich wieder. Bei 0.4.0 im Juli 2026 können sich Konfigurationsschlüssel und Dateiaufbau zwischen Releases noch ändern. Lesen Sie daher vor dem Upgrade einer Installation, von der Sie abhängig sind, das Changelog.
FAQ
Sendet Recall meinen Code oder meine Transkripte irgendwohin?
Nein. Die Capture-Hooks und der Summarizer sind Python-Skripte, die auf Ihrem eigenen Rechner ausgeführt werden. Das Plugin enthält keinen API-Key und führt keine Netzwerkverbindung aus. Für die Zusammenfassung werden TF-IDF und TextRank statt eines Modells verwendet. Dieser Schritt verursacht keine Kosten und funktioniert auch offline. Der Nachteil ist, dass die Zusammenfassung extraktiv ist: Sie wählt Sätze aus Ihrem Log aus, statt neue zu formulieren.
Warum fehlt .recall/context.md, oder warum ist es nicht aktuell?
auto_save_context ist standardmäßig auf off gesetzt. Die Zusammenfassung wird daher nur neu erzeugt, wenn Sie /recall:save ausführen. Setzen Sie "auto_save_context": "on_end" in recall.config.json, damit sie nach dem Ende jeder Sitzung neu geschrieben wird. Wenn auch history.md fehlt, werden die Hooks überhaupt nicht ausgeführt. Prüfen Sie mit /recall:show, ob das Plugin geladen ist. Prüfen Sie anschließend, ob python3 -V auf diesem Rechner antwortet, da die Hooks Python-Skripte sind.
Wie viel spart Recall pro Sitzung?
Das Laden einer Zusammenfassung kostet ungefähr 1,200 Tokens. Ein Modell benötigt typischerweise 30,000 Tokens, wenn es Ihr Repository erneut lesen muss, um den aktuellen Stand zu ermitteln. Das sind typische Werte. Messen Sie Ihre eigenen Werte mit wc -c .recall/context.md und dem Befehl /context innerhalb einer Sitzung. Vergleichen Sie dabei einen Kaltstart mit einer Sitzung, die aus einer Zusammenfassung fortgesetzt wird.
Benötige ich weiterhin eine CLAUDE.md-Datei?
Ja. Die beiden Dateien erfüllen unterschiedliche Aufgaben. CLAUDE.md enthält die Regeln und Build-Befehle, die Sie bewusst festlegen. context.md wird aus den tatsächlichen Vorgängen der letzten Sitzung erzeugt. Dadurch enthält sie beispielsweise eine unvollständige Migration, die Sie niemals selbst aufschreiben würden. Verwenden Sie beide Dateien.
Kann ein einzelner VPS den Speicher für mehrere Projekte aufnehmen?
Ja. Recall speichert den Speicher in .recall/ innerhalb jedes Projektverzeichnisses. Daher behalten zwei Projekte auf demselben Server getrennte Logs und getrennte Zusammenfassungen. Starten Sie Claude Code jedes Mal aus dem Projektstammverzeichnis. Die Dateien folgen dem Arbeitsverzeichnis und nicht dem Benutzerkonto.