Projektspeicher verschieben oder wiederherstellen
opencode-mem schlüsselt Projekt-Shards über einen Hash der Projektidentität. Das Verschieben eines
Repositories (OS-Migration, Pfad-Reorganisation, Wechsel von einem Windows-Mount
auf einen nativen Pfad) kann daher den alten Shard unter
~/.opencode-mem/data/projects/ verwaisen lassen, während für den
neuen Pfad ein neuer leerer Shard angelegt wird.
Das sind OpenCode-memory-Tool-Aufrufe mit JSON-Argumenten, keine Befehle zum
Ausführen im Terminal. Die Issue-ähnliche Notation memory migrate --from ... entspricht
memory({ mode: "migrate", fromPath: "..." }).
1. Lokaler Umzug, wenn du den alten Pfad noch kennst
OpenCode im neuen Projektverzeichnis öffnen. Das Zielprojekt darf noch keine Memories enthalten (Migration bricht bei Konflikt unverändert ab). Vor jeder Änderung die erkannte Quelle, das Ziel und die Dateiaktionen prüfen:
memory({ mode: "migrate", fromPath: "/old/path/to/project", dryRun: true });memory({ mode: "migrate", fromPath: "/old/path/to/project" });Zur Sicherheit lehnt die Migration eine Quelle ab, deren gespeichertes Projektverzeichnis noch
existiert. Wenn du eine aktive Quelle absichtlich verschieben willst, zuerst die Dry-Run-
Ausgabe prüfen und dann allowLinkedSource: true übergeben. Original-Quell-Shard-
Dateien bleiben als zeitgestempelte *.pre-path-migrate-*.bak-Backups erhalten.
2. Alter Pfad ist weg — zuerst den verwaisten Shard finden
memory({ mode: "list-shards" });memory({ mode: "migrate", fromHash: "fa645294d88bbae2" });list-shards meldet jeden Projekt-Hash, den gespeicherten projectPath, die Memory-Anzahl
und den Status (current, linked, orphaned, missing-file, empty oder
ambiguous). fromHash ist der 16-stellige hexadezimale Kleinbuchstaben-scopeHash,
den dieser Aufruf zurückgibt. Bevorzuge ihn, wenn das alte Verzeichnis nicht mehr existiert oder
mehrere Shards denselben gespeicherten Pfad enthalten, weil Git-basierte Identitäten
aus einem fehlenden Pfad nicht immer neu berechnet werden können.
3. Maschinenübergreifendes Backup / Restore
// on the source machine / old checkoutmemory({ mode: "export", outputPath: "./memories.json" });
// on the destination machine / new checkoutmemory({ mode: "import", inputPath: "./memories.json", dryRun: true });memory({ mode: "import", inputPath: "./memories.json" });Export schreibt ein versioniertes JSON-Dokument ohne Vektoren. Import mappt die
Memories auf das aktuelle Projekt um und berechnet Embeddings mit dem aktuell
konfigurierten Modell neu. Import fügt Memories zu einem bestehenden Projekt hinzu, aber doppelte
Memory-IDs brechen den gesamten Import vor dem Schreiben ab; das unterscheidet sich von migrate,
das ein leeres Ziel verlangt.
Export-Dateien sind Klartext und können Memory-Inhalte, User-Namen/E-Mail-
Adressen, Repository-URLs und absolute Projektpfade enthalten. Sie wie andere
sensible Backups speichern und löschen, wenn sie nicht mehr benötigt werden. Vollständig private Einträge
werden ausgelassen, und Benutzerprofile sowie Prompt-Historie sind nicht enthalten. Das
Dokument enthält schemaVersion: 1; Imports lehnen neuere nicht unterstützte Schema-
Versionen ab, statt zu raten.