Ga naar inhoud

Projectherinneringen verplaatsen of herstellen

opencode-mem koppelt projectshards aan een hash van de projectidentiteit. Een repository verplaatsen (OS-migratie, padreorganisatie, overschakelen van een Windows-mount naar een native pad) kan daarom de oude shard wees maken onder ~/.opencode-mem/data/projects/ terwijl een nieuwe lege shard wordt aangemaakt voor het nieuwe pad.

Dit zijn OpenCode memory-toolaanroepen met JSON-argumenten, geen commands om in een terminal te draaien. De issue-stijlnotatie memory migrate --from ... mappt naar memory({ mode: "migrate", fromPath: "..." }).

1. Lokale verplaatsing wanneer je het oude pad nog kent

Open OpenCode in de nieuwe projectdirectory. Het doelproject mag nog geen herinneringen bevatten (migratie breekt ongewijzigd af bij conflict). Bekijk eerst de gedetecteerde bron, bestemming en bestandsacties voordat je iets wijzigt:

memory({ mode: "migrate", fromPath: "/old/path/to/project", dryRun: true });
memory({ mode: "migrate", fromPath: "/old/path/to/project" });

Voor de veiligheid weigert migratie een bron waarvan de opgeslagen projectdirectory nog bestaat. Als je bewust een actieve bron wilt verplaatsen, bekijk eerst de dry-run- output en geef daarna allowLinkedSource: true mee. Originele bronsshard- bestanden blijven behouden als timestamped *.pre-path-migrate-*.bak-backups.

2. Oud pad is weg — ontdek eerst de wees-shard

memory({ mode: "list-shards" });
memory({ mode: "migrate", fromHash: "fa645294d88bbae2" });

list-shards rapporteert elke projecthash, opgeslagen projectPath, geheugenaantal, en status (current, linked, orphaned, missing-file, empty, of ambiguous). fromHash is de 16-tekens lowercase hexadecimale scopeHash die deze call teruggeeft. Geef daaraan de voorkeur wanneer de oude directory niet meer bestaat of meerdere shards hetzelfde opgeslagen pad bevatten, omdat git-gebaseerde identiteiten niet altijd opnieuw kunnen worden berekend vanuit een ontbrekend pad.

3. Cross-machine backup / restore

// on the source machine / old checkout
memory({ mode: "export", outputPath: "./memories.json" });
// on the destination machine / new checkout
memory({ mode: "import", inputPath: "./memories.json", dryRun: true });
memory({ mode: "import", inputPath: "./memories.json" });

Export schrijft een geversionneerd JSON-document zonder vectoren. Import remappt de herinneringen naar het huidige project en herberekent embeddings met het momenteel geconfigureerde model. Import voegt herinneringen toe aan een bestaand project, maar dubbele memory-ID’s breken de hele import af vóór schrijven; dit verschilt van migrate, dat een leeg doel vereist.

Exportbestanden zijn plaintext en kunnen geheugeninhoud, gebruikersnamen/e-mailadressen, repository-URL’s en absolute projectpaden bevatten. Bewaar ze als andere gevoelige backups en verwijder ze wanneer ze niet meer nodig zijn. Volledig private entries worden weggelaten, en gebruikersprofielen en prompthistorie zijn niet inbegrepen. Het document bevat schemaVersion: 1; imports weigeren nieuwere niet-ondersteunde schema- versies in plaats van te gokken.