SSD Nodes Learn Hosting plans →
Anleitungen Matt ConnorVon Matt Connor

Claude Code auf dem VPS mit Recall merken lassen

Recall speichert Claude-Code-Sitzungen lokal als Markdown und fasst sie zusammen. Erfahren Sie, wie Sie das Plugin auf einem VPS einrichten und Tokens sparen.

Verified Every command ran end-to-end on a fresh Ubuntu 24.04 server, July 30, 2026.

Was Recall für die Claude-Code-Erinnerung leistet

Recall ist ein Claude-Code-Plugin, das jedem Projekt eine sitzungsübergreifende Erinnerung gibt. Es schreibt zwei Markdown-Dateien in einen Ordner .recall/ innerhalb Ihres Projekts: ein Protokoll, an das nur angehängt wird, und eine kurze Zusammenfassung des letzten Bearbeitungsstands. Beide Dateien werden auf dem von Ihnen verwendeten Rechner von einem lokalen Python-Summarizer erstellt. Die Erinnerung selbst verbraucht daher keine API-Tokens.

Es schließt eine kleine, aber beständige Lücke. Sie beenden am Dienstag eine Sitzung auf Ihrem VPS. Am Mittwoch lädt eine neue Sitzung die Unterhaltung vom Dienstag nicht automatisch, obwohl die integrierte automatische Erinnerung von Claude Code Notizen über Sitzungen hinweg speichern kann. Wenn diese Notizen nicht abdecken, an welcher Stelle Sie aufgehört haben, erklären Sie das Projekt erneut von Hand. Alternativ lassen Sie das Modell erneut die Hälfte des Repositorys lesen, damit es den Stand ermittelt. Beides kostet Tokens. Die zweite Variante kostet viele Tokens.

Recall Version 0.4.0, veröffentlicht am 18. Juli 2026, ist auch im Oktober 2026 noch die aktuelle Version. Das Projekt steht unter der MIT-Lizenz. Es handelt sich um 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 -V

Ubuntu 24.04 erfüllt 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 python3

NumPy ist eine optionale Beschleunigung für einen Schritt des Summarizers. Sie benötigen NumPy nicht.

python3 -c "import numpy"

ModuleNotFoundError: No module named 'numpy' ist hier eine akzeptable Antwort. Der Summarizer verfügt über einen reinen Python-Pfad. Die Testsuite des Projekts prüft, dass beide Pfade dieselben Sätze auswählen.

Der Sitzungsstatus ist auf einem Server wichtiger als auf einem Laptop, weil Serveraufgaben über mehrere Tage verteilt in kurzen Sitzungen anfallen. Wenn Claude Code bereits in tmux auf einem VPS läuft, überträgt Recall die Sitzung vom Vortag in den heutigen Arbeitstag.

Recall aus dem Plugin-Marktplatz installieren

Zwei Befehle werden innerhalb einer Claude-Code-Sitzung eingegeben:

/plugin marketplace add raiyanyahya/recall
/plugin install recall@recall

Der 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. Tatsächlich prüfen Sie daher nur, ob der Befehl überhaupt vorhanden ist. Erkennt Claude Code /recall:show nicht, ist das Plugin nicht geladen und kein Hook wird ausgeführt.

Wenn Sie das Plugin aus einem Checkout ausführen möchten, klonen Sie zunächst das Repository und validieren Sie es:

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.

  • SessionStart wird beim Start, beim Fortsetzen und beim Leeren ausgelöst. Er zeigt context.md an, damit die Sitzung mit sichtbarer Zusammenfassung geöffnet wird.
  • Stop wird jedes Mal ausgelöst, wenn Claude eine Antwort beendet. Er hängt diesen Durchlauf an das Protokoll an.
  • SessionEnd wird beim Schließen der Sitzung ausgelöst und kann die Zusammenfassung neu erzeugen.

Dabei entstehen zwei Dateien, beide innerhalb von .recall/.

  • history.md ist der Datensatz, an den ausschließlich angehängt wird: Eingabeaufforderungen, Antworten, bearbeitete Dateien und ausgeführte Befehle.
  • context.md ist die erzeugte Zusammenfassung: Ziel, Zusammenfassung, nächste Schritte, bearbeitete Dateien, ausgeführte Befehle und Git-Kontext.

Sehen Sie sich das Verzeichnis nach einer echten Sitzung an.

ls -la .recall/

Wenn die Erfassung aktiviert ist, kein Pausenmarker vorhanden ist und ein Transkript verfügbar ist, sollte history.md Inhalte enthalten. Möglicherweise ist überhaupt kein context.md vorhanden. Das ist das Standardverhalten und kein Fehler. auto_save_context ist off, sofern Sie es nicht festlegen. Die Zusammenfassung wird daher nur geschrieben, wenn Sie sie anfordern:

/recall:save

Dieser Befehl führt den lokalen Zusammenfasser über history.md aus und schreibt context.md neu. Der Algorithmus verwendet eine TF-IDF-Bewertung (term frequency, inverse document frequency) und anschließend eine TextRank-Satzbewertung. Er ist deterministisch und extraktiv. Das bedeutet, dass er bereits in Ihrem Protokoll vorhandene Sätze auswählt. Es wird kein Modell aufgerufen. Der Schritt ist daher kostenlos und funktioniert 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_dir legt fest, wo die beiden Dateien gespeichert werden. Belassen Sie sie innerhalb des Projekts.
  • capture_history aktiviert und deaktiviert das history.md-Log.
  • auto_save_context akzeptiert off oder on_end und verwendet standardmäßig off.
  • summary_sentences legt fest, wie viele Sätze in context.md übernommen werden. Ein höherer Wert erzeugt eine längere Zusammenfassung und führt beim Sitzungsstart zu etwas mehr Last.
  • redact entfernt gängige Muster für Geheimnisse, bevor Daten auf die Festplatte geschrieben werden.
  • include_git fügt die aktuellen Diff-Statistiken und die letzten Commits zur Zusammenfassung hinzu.
  • max_input_chars begrenzt, wie viel von history.md der Zusammenfasser in einem Durchlauf liest.

Bei einem Projekt auf einem VPS ist das automatische Speichern die sinnvolle Änderung, weil eine Sitzung auf einem Server häufig endet, wenn das Terminal getrennt wird, und nicht, wenn Sie sie bewusst beenden.

{
  "auto_save_context": "on_end",
  "summary_sentences": 12
}

Um die Aufzeichnung vorübergehend zu deaktivieren, ohne die Konfiguration zu ändern, erstellen Sie den Pause-Marker. Löschen Sie ihn, um die Aufzeichnung wieder zu starten.

touch .recall/.capture-paused

Tun Sie dies vor einer Sitzung, in der Sie mit Zugangsdaten für Produktionssysteme arbeiten, weil die Redaktion nur ein Filter und keine Garantie ist. Aus demselben Grund sollten Geheimnisse generell von AI-Agenten ferngehalten werden: Ein Geheimnis ist sicher, wenn der Agent es nie sieht.

Wie viele Tokens spart Recall?

Das hängt davon ab, was die Alternative war. Eine Zusammenfassung zu Beginn einer Sitzung zu laden, ist günstig. Das, was sie ersetzt, kann teuer sein, weil ein Modell ohne Kenntnis Ihres Projekts die Zusammenhänge durch das Lesen von Dateien erneut ermittelt.

DiagrammTypical cost of resuming work, per session
Die Daten hinter diesem Diagramm
[
  {
    "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, keine Messung Ihrer Umgebung. 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 die Wiederaufnahme. Beim erneuten Laden eines vollständigen vorherigen Transkripts wird die gesamte Unterhaltung geladen. Das liegt im Bereich von 85,000 Tokens. Wenn das Modell das Projekt durch das Lesen von Dateien erneut ermittelt, liegt der Wert zwischen diesen beiden Varianten, ungefähr bei 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 günstiger. Sie teilt dem Modell Ihre dauerhaften Regeln mit und nicht, was in der vergangenen Nacht geschehen ist.

Messen Sie Ihre eigenen Werte. Ein Token entspricht bei englischem Fließtext ungefähr vier Zeichen und bei Code etwas weniger. Wenn Sie die Zusammenfassung zusätzlich an ein lokales Modell auf demselben VPS übergeben, prüfen Sie vor dem Verlassen auf die Wiederaufnahme, in welchem Kontextfenster sie landet, denn die Standardkontextlänge von Ollama hängt vom verfügbaren VRAM ab.

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 gibt die Sitzungssummen aus. Starten Sie eine Sitzung ohne vorherigen 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 hält diese Aussage korrekt. Die Zusammenfassung wird bei jedem Sitzungsstart geladen. Eine Zusammenfassung, die Sie nie verwenden, ist daher eine kleine Zusatzlast und keine Einsparung. Belassen Sie summary_sentences möglichst beim Standardwert, sofern Ihre Sitzungen nicht sehr lange laufen. Eine ruhigere Sitzung hilft auf der anderen Seite der Bilanz, weil ein Agent, der auf die kleinste funktionierende Änderung ausgerichtet ist, ein kürzeres Protokoll für die Zusammenfassung hinterlässt.

Zusammenfassung ohne Sitzung neu erstellen

Wenn Sie das Repository geklont haben, verfügt der Summarizer über einen eigenen Kommandozeilen-Einstiegspunkt. Das ist auf einem VPS nützlich, wenn eine Sitzung zusammen mit dem Terminal beendet wurde, Sie die Zusammenfassung aber trotzdem benötigen.

python3 ~/recall/scripts/make_context.py --help

Die Hilfeausgabe listet die unterstützten Flags auf: --cwd für das Projektverzeichnis, --transcript für eine angegebene Transkriptdatei, --quiet zum Unterdrücken der Ausgabe und --harness zur Auswahl zwischen claude und opencode. Verweisen Sie auf ein Projekt:

python3 ~/recall/scripts/make_context.py --cwd /srv/projects/api

Das Tool liest das Sitzungstranskript und history.md. Anschließend schreibt es context.md in das von Ihnen angegebene Verzeichnis. Wenn Sie die Installation über den Marketplace vorgenommen haben, befindet sich das Plugin in einem von Claude Code verwalteten Verzeichnis. /recall:save ist dann die unterstützte Methode für dieselbe Aufgabe.

Warum nichts geschrieben wird

Kein .recall/-Verzeichnis nach einer vollständigen Sitzung. Prüfen Sie, ob die Aufzeichnung deaktiviert ist, ob das Ausgabeverzeichnis an anderer Stelle konfiguriert wurde oder ob kein Transkript gefunden wurde, bevor Sie daraus schließen, dass die Hooks nie ausgeführt wurden. 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. Fehlt beides auf dem System, schlägt der Befehl mit stderr und Exit-Status 127 fehl. Claude Code zeigt einen nicht blockierenden Hinweis auf den Hook-Fehler an, der die erste stderr-Zeile enthält.

history.md wächst, aber context.md ändert sich nie. auto_save_context ist standardmäßig off. 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. Recall schreibt relativ zu dem 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 Aufzeichnung wurde angehalten, ohne dass Sie gewarnt wurden. 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 zu kurz. max_input_chars begrenzt die Eingabe des Zusammenfassers auf 200000 Zeichen. Dadurch wird ein sehr langes Protokoll gekürzt. Rotieren Sie das Protokoll.

mv .recall/history.md .recall/history-2026-07-30.md

Fü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 ist ein Log mit Zusammenfassungsfunktion. Es ist wichtig zu verstehen, was dadurch nicht abgedeckt ist.

Die Zusammenfassung ist extraktiv. TextRank wählt Sätze aus, die bereits in history.md stehen. Daher bewertet es nicht, ob eine Entscheidung richtig war. Eine am Dienstag protokollierte Fehlentscheidung liest sich am Mittwoch genauso wie eine gute Entscheidung. Wenn viel davon abhängt, lesen Sie context.md und korrigieren Sie die Datei manuell. Es handelt sich um eine Markdown-Datei. Sie können sie jederzeit bearbeiten.

Eine Suchfunktion gibt es nicht. Sie erhalten pro Projekt eine aktuelle Zusammenfassung und ein wachsendes Log, aber kein projektübergreifend durchsuchbares Gedächtnis. Wenn Sie wissen möchten, was Sie vor drei Wochen zur Datenbank entschieden haben, durchsuchen Sie history.md mit grep. Eine Live-Koordination ist ebenfalls nicht vorhanden: Zwei Sitzungen im selben Projekt verwenden dieselbe Log-Datei. Recall überträgt neue Log-Einträge jedoch nicht in den Kontext der jeweils anderen Sitzung. Wenn eine Sitzung wissen muss, woran die andere arbeitet, können Sitzungen während der Ausführung Text direkt untereinander austauschen.

Innerhalb einer Sitzung hilft es nicht. Wenn sich das Kontextfenster während einer Sitzung füllt, handelt es sich um ein anderes Problem mit anderen Lösungen. Die Verwaltung des Kontextfensters innerhalb einer Sitzung ist der ergänzende Beitrag zu diesem Leitfaden.

Die Zusammenfassung wird absichtlich als nicht vertrauenswürdige Eingabe behandelt. context.md wird als eingerückter und gekennzeichneter Block eingefügt. Claude fragt nach, bevor es sich darauf stützt. Dieses Design ist erforderlich, weil ein versioniertes .recall/-Verzeichnis ein Ort ist, an dem jede Person mit Commit-Berechtigung Text schreiben kann, den Ihr Agent liest. Wie oft der Agent beim Lesen nachfragt, wird durch den Berechtigungsmodus festgelegt, mit dem die Sitzung startet. Ab Claude Code v2.1.283 ist der automatische Modus bereits der integrierte Startmodus für interaktive Terminal- und VS-Code-Sitzungen in jedem Tarif und bei jedem Anbieter. Daher prüft dabei ein Klassifikator die meisten Aktionen statt Sie selbst. Organisationen mit HIPAA-Konfiguration starten weiterhin im manuellen Modus. Entscheiden Sie einmal, ob .recall/ persönlich oder gemeinsam genutzt wird: Fügen Sie es für persönliche Daten 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 gefassten Grenzen.

Die Redigierung erfolgt nach bestem Bemühen. Sie zielt auf häufige 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 an. Mit 0.4.0, weiterhin dem neuesten Release im Oktober 2026, können sich Konfigurationsschlüssel und Dateistruktur zwischen Releases noch ändern. Lesen Sie daher das Changelog, bevor Sie eine Konfiguration aktualisieren, auf die Sie angewiesen sind.

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 Netzwerkaufrufe aus. Die Zusammenfassung verwendet TF-IDF und TextRank statt eines Modells. Dieser Schritt verursacht daher 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 mein .recall/context.md oder ist nicht aktuell?

auto_save_context ist standardmäßig auf off gesetzt. Die Zusammenfassung wird daher nur neu erstellt, wenn Sie /recall:save ausführen. Setzen Sie "auto_save_context": "on_end" in recall.config.json, damit die Zusammenfassung am Ende jeder Sitzung neu geschrieben wird. Wenn auch history.md fehlt, prüfen Sie capture_history, den Marker .capture-paused und ob ein Sitzungstranskript vorhanden ist: Laufende Hooks überspringen das Schreiben der Historie in diesen Fällen. Bestätigen Sie mit /recall:show, dass das Plugin geladen ist. Prüfen Sie anschließend, ob python3 -V auf diesem Rechner eine Antwort liefert, da es sich bei den Hooks um Python-Skripte handelt.

Wie viel spart Recall pro Sitzung?

Das Laden einer Zusammenfassung kostet ungefähr 1,200 Tokens. Ein Modell, das Ihr Repository erneut lesen muss, um den aktuellen Stand zu ermitteln, benötigt dafür typischerweise 30,000 Tokens. Das sind Richtwerte. Messen Sie den Wert für Ihre Umgebung 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 haben unterschiedliche Aufgaben. CLAUDE.md enthält die Regeln und Build-Befehle, die Sie bewusst festlegen. context.md wird aus dem tatsächlichen Verlauf der letzten Sitzung generiert. Dadurch enthält die Datei beispielsweise eine halb abgeschlossene Migration, an die Sie nicht gedacht hätten. Bewahren Sie beide Dateien auf.

Kann ein VPS den Speicher für mehrere Projekte aufnehmen?

Ja. Recall speichert den Speicher in .recall/ innerhalb jedes Projektverzeichnisses. Dadurch behalten zwei Projekte auf demselben Server getrennte Logs und getrennte Zusammenfassungen. Starten Sie Claude Code jedes Mal aus dem Projektstammverzeichnis, da sich die Dateien am Arbeitsverzeichnis und nicht am Benutzerkonto orientieren.

War dieser Artikel hilfreich?