Arbetsyteminne v2 (offline): forskningsanteckningar
Mål: Clawd-style arbetsyta (agents.defaults.workspace, standard ~/. penclaw/workspace) där ”memory” lagras som en Markdown-fil per dag (memory/YYYY-MM-DD.md) plus en liten uppsättning stabila filer (t.ex. memory.md, SOUL.md).
Detta dokument föreslår en offline-first-minnesarkitektur som behåller Markdown som den kanoniska, granskbara källan för sanningen, men lägger till strukturerad återkallelse (sökning, entitetssammanfattningar, uppdatering av tillförlitlighet) via ett härlett index.
Varför ändra?
Den nuvarande uppsättningen (en fil per dag) är utmärkt för:- ”append-only”-journalföring
- mänsklig redigering
- git-backad hållbarhet + spårbarhet
- låg tröskel för insamling (”skriv bara ner det”)
- återhämtning med hög träffsäkerhet (”vad bestämde vi om X?”, ”senast vi provade Y?”)
- entitetscentrerade svar (”berätta om Alice / The Castle / warelay”) utan att läsa många filer
- stabilitet i åsikter/preferenser (och bevis när de ändras)
- tidsbegränsningar (“vad var sant under november 2025?”) och konfliktlösning
Designmål
- Offline: fungerar utan nätverk; kan köras på laptop/Castle; inget molnberoende.
- Förklarbar: hämtade objekt ska kunna härledas (fil + plats) och hållas isär från inferens.
- Låg ceremoni: daglig loggning förblir Markdown, inget tungt schemarbete.
- Inkrementell: v1 är användbar med enbart FTS; semantisk/vektor och grafer är valfria uppgraderingar.
- Agentvänlig: gör ”återkallelse inom tokenbudgetar” enkel (returnerar små buntar av fakta).
North star-modell (Hindsight × Letta)
Två delar att blanda:- Letta/MemGPT-stil kontrollloop
- håll en liten ”kärna” alltid i kontext (persona + viktiga användarfakta)
- allt annat är utanför kontext och hämtas via verktyg
- minnesskrivningar är explicita verktygsanrop (append/replace/insert), persistenta och återinjiceras nästa tur
- Hindsight-stil minnessubstrat
- separera vad som observeras vs vad som tros vs vad som sammanfattas
- stöd för retain/recall/reflect
- åsikter med tillförlitlighet som kan utvecklas med bevis
- entitetsmedveten återkallelse + temporala frågor (även utan fulla kunskapsgrafer)
Föreslagen arkitektur (Markdown som källa för sanningen + härlett index)
Kanonisk lagring (git-vänlig)
Behåll~/.openclaw/workspace som kanoniskt, människoläsbart minne.
Föreslagen arbetsytestruktur:
- Daglig logg stannar daglig loggen. Inget behov av att förvandla det till JSON.
- Filerna
bank/är kuraterade, producerade av reflektionsjobb, och kan fortfarande redigeras för hand. memory.mdförblir ”liten + kärnlik”: det du vill att Clawd ska se varje session.
Härledd lagring (maskinell återkallelse)
Lägg till ett härlett index under arbetsytan (inte nödvändigtvis git-spårat):- SQLite-schema för fakta + entitetslänkar + åsiktsmetadata
- SQLite FTS5 för lexikal återkallelse (snabbt, litet, offline)
- valfri tabell med inbäddningar för semantisk återkallelse (fortfarande offline)
Retain / Recall / Reflect (operativ loop)
Retain: normalisera dagliga loggar till ”fakta”
Hindsights centrala insikt som spelar roll här: lagra narrativa, självständiga fakta, inte små fragment. Praktisk regel förmemory/YYYY-MM-DD.md:
- i slutet av dagen (eller under), lägg till ett avsnitt
## Retainmed 2–5 punkter som är:- narrativa (kontext över flera turer bevaras)
- självständiga (kan stå för sig själva senare)
- taggade med typ + entitetsomnämnanden
- Typprefix:
W(värld),B(erfarenhet/biografiskt),O(åsikt),S(observation/sammanfattning; oftast genererad) - Entiteter:
@Peter,@warelay, etc (slugs mappar tillbank/entities/*.md) - Åsiktens tillförlitlighet:
O(c=0.0..1.0)valfritt
## Retain är den enklaste ”kvalitetshävarmen”.
Recall: frågor mot det härledda indexet
Återkallelse bör stödja:- lexikal: ”hitta exakta termer / namn / kommandon” (FTS5)
- entitet: ”berätta om X” (entitetssidor + entitetslänkade fakta)
- temporal: ”vad hände runt 27 nov” / ”sedan förra veckan”
- åsikt: “Vad föredrar Petr?” (med självförtroende + bevis)
kind(world|experience|opinion|observation)timestamp(källdag, eller extraherat tidsintervall om tillgängligt)entities(["Peter","warelay"])content(det narrativa faktumet)source(memory/2025-11-27.md#L12etc)
Reflect: producera stabila sidor + uppdatera övertygelser
Reflektion är ett schemalagt jobb (dagligen eller heartbeatultrathink) som:
- uppdaterar
bank/entities/*.mdfrån nyliga fakta (entitetssammanfattningar) - uppdaterar
bank/opinions.md-tillförlitlighet baserat på förstärkning/motsägelse - föreslår valfritt ändringar i
memory.md(”kärnliknande” hållbara fakta)
- varje åsikt har:
- påstående
- tillförlitlighet
c ∈ [0,1] - last_updated
- evidenslänkar (stödjande + motsägande faktum-ID:n)
- när nya fakta anländer:
- hitta kandidatåsikter via entitetsöverlapp + likhet (FTS först, inbäddningar senare)
- uppdatera tillförlitlighet med små deltan; stora hopp kräver stark motsägelse + upprepat bevis
CLI-integration: fristående vs djup integration
Rekommendation: djup integration i OpenClaw, men behåll ett separerbart kärnbibliotek.Varför integrera i OpenClaw?
- OpenClaw känner redan till:
- arbetsytans sökväg (
agents.defaults.workspace) - sessionsmodellen + heartbeats
- loggning + felsökningsmönster
- arbetsytans sökväg (
- Du vill att agenten själv ska anropa verktygen:
openclaw memory recall "…" --k 25 --since 30dopenclaw memory reflect --since 7d
Varför ändå dela upp i ett bibliotek?
- hålla minneslogik testbar utan gateway/runtime
- återanvända från andra sammanhang (lokala skript, framtida desktopapp, etc.)
”S-Collide” / SuCo: när ska det användas (forskning)
Om ”S-Collide” syftar på SuCo (Subspace Collision): det är en ANN-återhämtningsmetod som siktar på starka avvägningar mellan återkallelse/latens genom att använda inlärda/strukturerade kollisioner i delrum (artikel: arXiv 2411.14754, 2024). Pragmatisk hållning för~/.openclaw/workspace:
- börja inte med SuCo.
- börja med SQLite FTS + (valfritt) enkla inbäddningar; du får de flesta UX-vinster direkt.
- överväg SuCo/HNSW/ScaNN-klassen av lösningar först när:
- korpusen är stor (tiotusentals/hundratusentals segment)
- brute-force-sökning över inbäddningar blir för långsam
- återkallelsens kvalitet i meningsfull grad flaskhalsas av lexikal sökning
- SQLite FTS5 + metadatafilter (noll ML)
- Inbäddningar + brute force (fungerar förvånansvärt långt om antalet segment är lågt)
- HNSW-index (vanligt, robust; kräver en biblioteksbindning)
- SuCo (forskningsnivå; attraktivt om det finns en solid implementation du kan bädda in)
- vilken är den bästa offline-inbäddningsmodellen för ”personlig assistent-minne” på dina maskiner (laptop + desktop)?
- om du redan har Ollama: skapa inbäddningar med en lokal modell; annars skeppa en liten inbäddningsmodell i verktygskedjan.
Minsta användbara pilot
Om du vill ha en minimal, ändå användbar version:- Lägg till
bank/-entitetssidor och ett avsnitt## Retaini dagliga loggar. - Använd SQLite FTS för återkallelse med citeringar (sökväg + radnummer).
- Lägg till inbäddningar endast om återkallelsens kvalitet eller skala kräver det.
Referenser
- Letta / MemGPT-koncept: ”core memory blocks” + ”archival memory” + verktygsdriven självredigerande minne.
- Hindsight Technical Report: ”retain / recall / reflect”, fyrnätverksminne, extraktion av narrativa fakta, utveckling av åsikters tillförlitlighet.
- SuCo: arXiv 2411.14754 (2024): ”Subspace Collision” approximativ närmaste-granne-återhämtning.