Brain: Agentiskt minne som kunskapswiki

Ett strukturerat, spårbart och självförbättrande filsystem i Markdown, kompilerat offline och navigerat vid behov.

FörfattarePerplexity Engineering

Computer-användare utför arbete som spänner över månader och hundratals sessioner. Vid den tionde sessionen bör systemet vara avsevärt mer produktivt än vid den första. Det bör samla på sig kontext om användaren, den deras preferenser och det arbete som redan har utförts.

När Computer till exempel ombeds att rita ett diagram över ett arbetsflöde som användaren tidigare har förklarat, bör Computer komma ihåg detaljerna och använda dem för att skapa och mata ut en figur i användarens föredragna stil. Användaren ska inte behöva förklara detaljerna i arbetsflödet igen eller upprepa sin preferens för PDF framför PNG-artefakter; systemet bör kunna återställa den kontexten korrekt från tidigare sessioner och tillämpa den automatiskt.

Minnet är grunden för ständiga agentförbättringar. Ett effektivt minnessystem bör vara strukturerat, spårbart och anpassningsbart, vilket gör det möjligt för agenter att söka med rätt bredd och djup för varje uppgift samtidigt som varje beslut grundar sig på den mest aktuella informationen.

Introduktion

Att ge agenter relevant kontext är ett mångfacetterat problem. För det första måste agenter veta vad som finns och hur man kommer åt det. För det andra, när de hittar en tillförlitlig bit information, måste de vara säkra på att den är fullständig, korrekt och uppdaterad. Ett isolerat faktum har ett begränsat värde om inte agenten kan hitta relaterad information, verifiera att den kommer från en betrodd källa och säkerställa att den inte behöver uppdateras med en mer nyligen gjord observation.

Att stoppa in statiska minnesfiler direkt i modellkontexten maximerar tillgängligheten för agenter, men innebär en klassisk avvägning mellan precision och återkallelse. För mycket information kommer att mätta agentens kontextfönster med objekt av allt mindre relevans, medan för lite kommer att försämra svarskvaliteten på grund av brist på relevant kontext. Däremot är on-demand-åtkomst till externa databaser mer flexibel, men lägger bördan av navigering på agenten. Vektordatabaser lagrar ofta bortkopplade fragment, och grafdatabaser kräver att agenter vet hur man ställer frågor effektivt.

Nyligen introducerade vi Brain, en kärnkomponent i Computers minnessystem som levererar det bästa av två världar. Brain är en strukturerad kunskapswiki som ligger ovanpå statiska minnesfiler och bevis. Citeringar kopplar samman påståenden med deras källor, och relaterade informationsbitar kopplas samman i sidled. Den organiserade wikin gör kontexten navigerbar på begäran, samtidigt som detaljerade artefakter behålls i lagret under den.

Kunskapswikin Brain visad som en graf, med entiteter som noder och kanter som ansluter relaterade ämnen.
Ett exempel på Brain baserat på en syntetisk personan.

Brain ansluter till ett omfattande minnessystem med tre nyckelkomponenter: beständig minneslagring, förgrundsagenter som använder minne för att besvara frågor samt bakgrundsagenter som uppdaterar och förbättrar minnet. Följande figur visar dessa komponenter placerade i Brains övergripande systemarkitektur.

Arkitekturdiagram som visar hållbar minneslagring, förgrundsagenter som läser minne och bakgrundsagenter som uppdaterar minne.
Minnessystemet består av delat beständigt minne, förgrundsagenter som använder minne och bakgrundsagenter som uppdaterar minne.

I den här artikeln beskriver vi varje lager på djupet och förklarar hur Brain organiserar minnet, hur agenter använder det och hur bakgrundsprocesser håller det uppdaterat. Vi presenterar också resultat från interna utvärderingar som validerar Brains design och visar att den förbättrar agentens prestanda till en lägre kostnad.

Minnesorganisation och lagring

Minnet behöver en representation som skalas till en användares fullständiga historik utan att tvinga in varje del av kontexten i prompten. Computers minnessystem representerar beständig kontext som ett filsystem. Brain syntetiserar kunskap över råa källor, ansluter relaterade ämnen och kopplar påståenden tillbaka till de sessioner och filer som stöder dem. Denna struktur, som beskrivs nedan, gör det möjligt för oss att organisera minnet i en form som är särskilt väl lämpad för agenter.

Filsystemsbaserat minne

Datorsessioner lever redan i en sandlåda med ett filsystem, ett skal och I/O-verktyg. När vi utformade Brain ville vi introducera så lite nya maskiner som möjligt i gränssnittet mellan modellen och agentminnet. Det är därför vi byggde Brain ovanpå ett filsystems-nativt kontextlager. Minnet materialiseras som filer i sandlådan under katalogen memory/, och agenten använder helt enkelt samma verktyg på minnesfiler som den redan använder på allt annat.

Vid roten av minnesträdet finns tre toppkataloger som upprätthåller kontext på olika abstraktionsnivåer. knowledge/ är själva Brain, en syntetiserad kunskapswiki som länkar samman entiteter, koncept, aktiva projekt och tidigare inlärningar; notes/ innehåller destillerade utdrag organiserade som ämnesmappar; och sessions/ rymmer index, sammanfattningar och fullständiga transkriptioner som råa historiker. Figuren nedan visar en förenklad vy över layouten.

Katalogträd som visar memory/ med undermapparna knowledge/, notes/ och sessions/.
En exempelvy av minnesfilsystemets layout.

Ytorna är medvetet redundanta. För enkla frågor i ett enda hopp räcker det ofta att söka efter utdrag i /notes efter ett nyckelord, medan /knowledge-lagret är mest användbart för frågor som kräver att man sammanfogar bevis över veckor eller månader av Computersessioner.

Brain: Kunskapswikin

Brain är formaterad som en LLM-wiki, ett system med länkade Markdown-filer. Denna form av lätt strukturerad Markdown ger en helhetsbild av befintlig kontext, så att agenter enkelt kan förstå vilka poster som är tillgängliga, hur de hänger ihop och var de kan hittas. Varje sida är en underhållen vy över ett ämne; den bör förbli användbar när den läses ensam samtidigt som den gör ytterligare utforskning enkel genom länkar.

Länkar finns i två typer. [[wikilänkar]] är kontextkanter. De ansluter sidor i sidled; ett projekt kan länka till sin ägare, sin kund eller de koncept det är beroende av. Att följa dem besvarar "vad mer behöver jag veta?". [cite:N]-referenser är beviskanter. De ansluter påståenden nedåt till de råa sessionerna eller anslutningskällorna som stöder dem. Att följa dem besvarar "hur vet jag att detta är sant?"

Figurerna nedan visar hur en del av Brain skulle se ut för en syntetisk persona, en tillgänglighetsforskare vid namn Nadia. Hennes Brain innehåller en sida om ett exempelt projekt, en universell design-sprint i Japan, som syntetiserar kunskap från sessioner och anslutningar. Grafvyn visar hur kontexten och beviskanterna som finns på sidan länkar relaterade entiteter och källor.

En exempelsida i Brain-wikin återgiven som Markdown, som visar wikilänkar och citeringskanter infogat.
Brain är ett system av Markdown-filer.
En undergraf från en exempelsida i Brain-wikin, visualiserad som en graf över anslutna entiteter och källor.
Inbäddad kontext och beviskanter bildar en grafstruktur för enkel navigering.

Brain är Git-backad för att bevara versionshistorik, vilket stöder dess ständigt föränderliga natur. Sidor kan redigeras över tid, medan ändringsloggar registrerar viktiga uppdateringar och låter agenter enkelt granska tidigare versioner och diffar. Detta stöder också agentisk koordinering, vilket är avgörande eftersom flera agenter kan använda och uppdatera Brain samtidigt.

Använda Brain

När agenter besvarar en användarfråga måste de kunna hitta rätt kontext på rätt detaljnivå. Brains struktur gör det enkelt för agenter att utforska minnet. Agenter kan välja mellan åtgärdsbara steg som att följa kontextlänkar för att hitta relaterad information, följa bevislänkar för att verifiera påståenden eller anropa en underagent för att få fram och syntetisera ytterligare kontext. Vi styr den agentiska utforskningsprocessen på ett antal sätt som syftar till att maximera agenternas tillgänglighet till relevant information.

Utforskningsstrategi

Vi inkluderar ett kompakt index över Brain i det initiala användarmeddelandet, så att agenten startar med arbetskunskap om vad som redan finns. Agenten interagerar sedan med Brain med hjälp av bekanta åtgärder: att läsa specifika objekt som refereras av indexet, att använda grep för att söka över sidor, att följa länkar och inspektera citeringar, att jämföra Git-revisioner och att gå ner i sessioner eller råa banor. Kodblocket nedan visar exempel på kommandon för en syntetisk persona.

bash
# 1. Orient: the index is a map of everything known cat memory/knowledge/index.md # 2. Target: find pages that touch the question grep -Ril "kyoto\|sendai" memory/knowledge/ # 3. Read the page; follow context edges as needed cat memory/knowledge/projects/japan-universal-design-sprint.md cat memory/knowledge/entities/sora-city-laboratory.md # via [[wikilink]] cat memory/knowledge/entities/sapphir-mobility-coop.md # via [[wikilink]] # 4. Only if the claim must be verified: resolve evidence # city bases → [cite:1], [cite:10] → pplx://sessions/<id> # # Example (pseudo, replace with your real tool): # pplx-session-fetch 1eaf53d4-09e0-5823-bb96-c8662f582708 --slice <slice-id> # 5. Some evidence lives outside the sessions # meeting slots → [cite:15] → connector://google-calendar # # pplx-connector-fetch google-calendar --query "japan-sprint"

Agenter utforskar denna kontext genom en självstyrd loop i stället för en fast pipeline. Därför kan agenten fortsätta att söka tills den är nöjd med den kontext som hittats. Agenten kan också välja när den ska inspektera citeringar och bevis för att hitta eller verifiera detaljer. En mindre preferensfråga kan antas direkt från en enda Brain-sida, medan ett avgörande beslut eller en konflikt mellan källor kan motivera att man följer citeringen och läser den ursprungliga posten. Den grafbaserade strukturen låter agenten välja mellan konkreta nästa steg i stället för att söka mållöst efter relaterad information.

Flödesschema för en agent som utforskar Brain progressivt genom att följa länkar mellan sidor och citeringar till råa källor.
Agenten kan följa Brain-länkar till nya Brain-sidor eller beviskällor tills den är nöjd med att den har tillräckligt med kontext för uppgiften.

Filmaterialisering

För att agentisk utforskning ska fungera behöver agenten ha tillgång till hela memory/-trädet via sandlådans filsystem. Att kopiera hela trädet lokalt varje gång en sandlåda startas är kostsamt och onödigt, eftersom agenten inte kommer att röra den stora majoriteten av dessa filer. Ett annat alternativ skulle vara att använda ett fjärrfilsystem så att agenter kan komma åt vilken fil som helst utan att kopiera dem lokalt. Agenter utför dock ofta tusentals filsystemsåtgärder i ett enda kommando; om var och en blir en nätverksbegäran börjar tur-och-retur-kostnaden dominera utforskningsloopen. Vid interna tester var enkla grep-arbetsbelastningar över en FUSE-baserad sökväg på distans ungefär 400 till 500 gånger långsammare än motsvarande åtgärder över lokala filer.

I stället bygger vi upp en lokal arbetsmängd av materialiserade filer, medan den större korpusen ligger bakom ett minneshämtningssystem. Computer förladdar en initial karta (hämtad från senaste minnen, sessioner, sammanfattningar och tillgänglig kunskap) till sandlådan när den startar. Computer-agenter har tillgång till en minnesagent, en underagent som kan utföra semantisk sökning och läsa in en ny uppsättning filer. När den kontext som behövs saknas kan Computer anropa minnesagenten med en beskrivning av den information som krävs. Minnesagenten söker igenom filer, returnerar en omedelbar textsyntes och materialiserar de stödjande posterna som filer under minnesträdet. På detta sätt expanderar arbetsmängden naturligt och gradvis över tid, vilket bevarar stabila sökvägar och källrelationer för bevis som redan finns.

Diagram som visar initial förladdning av filer samt on-demand-hämtning av minnesagenten som materialiserar filer i sandlådan.
Sessionsförladdning och semantisk hämtning av minnesagenten laddar en initial karta över filer som agenten troligen kommer att behöva.

Denna design löser latensflaskhalsen på ett rent sätt. Att lagra relevanta filer lokalt säkerställer att de filsystemsåtgärder som krävs för utforskning förblir snabba, och satsvis hämtning gör att poolen av materialiserade filer kan växa utan att det krävs separata anrop för varje fil eller att ett stort antal irrelevanta filer läses in. Den kapslade agentdesignen ger också Computer fördelarna med agentisk hämtning utan att huvudagenten behöver söka i hela backend-korpusen direkt varje gång, vilket bevarar dess eget kontextfönster för information med högst värde.

Underhålla Brain

Användare lär sig ständigt av det arbete de utför och de konversationer de har, så agentiskt minne måste göra detsamma. För att Brain ska förbli användbar bör den vara en koncis representation av den viktigaste kunskapen. Nya sidor bör skapas för viktiga nya entiteter, ny information bör läggas till på relevanta Brain-sidor och föråldrad kontext bör tas bort i rätt tid. Om en användares jobb till exempel ändras bör Brain återspegla den förändringen; den bör innehålla användarens nya jobb och prioritera information som är relaterad till deras nya ansvarsområden och projekt.

Brain underhålls av bakgrundsagenter som vi kallas för Dream. Dream-agenter körs offline över filbaserat minne och syntetiserar ny information till Brain-uppdateringar. Vi definierade noggrant omfattningen och beteendet hos Dream-agenter för att effektivt utföra denna uppgift, tillsammans med Dream-specifika skyddsräcken för att säkerställa att Brain-uppdateringarna är konsekventa och korrekta.

Dream: Bakgrundsagenter för minnesförfining

Dream-agenter körs i sandlådor med tillgång till samma filsystem och skrivskyddade verktyg som en interaktiv Computersession skulle ha, men deras enda mål är att förbättra kontexten för framtida sessioner. Varje körning börjar från den Brain som producerades av tidigare körningar i stället för att bygga om användarens kontext från början. Den använder sedan den aktuella Brain för att orientera sig och producerar en uppdaterad Brain som framtida körningar kan använda.

Loop-diagram: interaktiva sessioner matar Dream, som uppdaterar Brain, vilket förbättrar framtida sessioner.
Dream-agenter arbetar i bakgrunden för att uppdatera Brain, vilket bildar en självförbättringsslinga.

En Dream-agent tar emot en miljö och bestämmer hur den ska utforskas, i stället för att ta emot en fast indata som har plattats ut till en enda prompt. Den kan navigera i filbaserat minne, använda godkända skrivskyddade anslutningsverktyg för att verifiera en kunskapsbit och delegera avgränsade delar av arbetet till underagenter, inklusive minnesagenten. Omfattningen och ansvarsområdena för Dream-agenten anges som en Skill.

Övergripande består en Dream-körning av 4 faser:

  1. Orientera: Agenten slutför en ordnad orienteringsprocedur. Den identifierar den auktoritativa omfattningen, stående instruktioner, raderingslogg, ytterligare indata och stoppvillkor.
  2. Sammanfatta sessioner: För varje session som är ny (eller har haft nya vändningar) sedan den senaste uppdateringen skriver (eller uppdaterar) agenten en kort sammanfattning av sessionen.
  3. Koppla fakta till ämnen: Agenten lägger till varje observation som den anser vara betydelsefull till sin rätta plats, vilket oftast är en wiki-sida. Den sonderar och frågar efter autentiserade anslutningar när sådana finns tillgängliga.
  4. Uppdatera kunskapswikin: Agenten uppdaterar wikin baserat på sina fynd. Den kan producera nya sidor för bestående ämnen, revidera sidor när den nuvarande syntesen har förändrats eller lägga till nya länkar eller citeringar som stöder ett faktapåstående. Den kan också välja att inte göra några ändringar när den nuvarande grafen redan är korrekt.

För att säkerställa att eventuella uppdateringar av Brain är fullständiga och konsekventa skriver agenter föreslagna tillstånd till ett etappdelat utdataträd. Inga permanenta ändringar görs förrän agenten har gjort alla de uppdateringar som den anser är nödvändiga. Att samordna dessa beslut i en enda agentisk process gör det möjligt att uppdatera grafen som helhet snarare än som oberoende sidor.

Swimlane-diagram över en Dream-körning som producerar föreslagna uppdateringar av Brain-sidor.
Dream-agenter använder den befintliga Brain och ny information för att föreslå och skriva uppdateringar.

Eventuella ändringar måste klara två typer av verifieringskontroller. Deterministiska valideringskontroller säkerställer att sidorna är välformade och uppfyller objektiva kriterier, såsom obligatorisk frontmatter och citeringsformat. Semantiska verifieringskontroller säkerställer att en föreslagen syntes stöds av de insamlade bevisen och förblir konsekvent med resten av grafen. När agenten är klar utförs ett kontrollerat synkroniseringssteg som jämför den etappdelade utdata med det tidigare tillståndet och tillämpar ändringarna i arkivet. När ett synkroniseringssteg är slutfört kan den slutliga uppsättningen ändringar inspekteras via Gits versionshistorik.

Validering av Brain

Ett användbart minnessystem måste bevara relevanta bevis, visa dem vid behov och hjälpa agenten att omvandla dessa bevis till ett korrekt svar. Vi utvärderar därför Brain på flera nivåer: kontrollerade offline-ablationer, kontinuerlig parad uppspelning och randomiserade produktionsexperiment.

Offlineutvärderingar

Vår primära offlineutvärdering använder en intern datauppsättning med 640 frågor fördelade på 44 syntetiska personor. Personorna återskapar produktionshärledda mönster i sessionskadens, antal vändningar, ämnesblandning och faktainnehåll, samtidigt som de inte innehåller någon produktionsfrågetext för att bevara användarnas integritet. Varje konto fylls i via produktionsminnespipelinen, inklusive minnesextrahering, konversationssammanfattningar och Dreams sammanställning av kunskapswikin. För varje fråga är det korrekta svaret mekaniskt kopplat till specifika bevis som finns i kontots historik.

Till exempel, för Nadia, den syntetiska personan för tillgänglighetsforskare som introducerades tidigare, innehåller datauppsättningen frågan: "Vilka organisationer träffar jag i Kyoto och Sendai?" Svaret (Sora City Lab i Kyoto och Sapphir Mobility Coop i Sendai) visas direkt på motsvarande wiki-sida.

Vi jämför samma frågor och konton med den kompilerade kunskapswikin aktiverad respektive undanhållen. Andra minnesytor förblir tillgängliga i båda tillstånden. Detta isolerar Brains inkrementella bidrag i stället för att jämföra minne med inget minne. Sammantaget ökade Brain svarens korrekthet från 0,600 till 0,661, vilket är en ökning med 6,1 procentenheter, och bevisåterkallelsen från 0,573 till 0,625, vilket är en ökning med 5,2 procentenheter. Effekten var störst för frågor om preferenser (+10,2 pp), tidsresonemang (+8,6 pp) och extrahering av detaljer från tidigare aktivitet (+6,9 pp). På 84 % av frågorna vidrörde agenten verifierbart en källa bunden till det faktiska beviset.

Stapeldiagram som jämför svarsskorrekthet och bevisåterkallelse med och utan Brain i olika frågekategorier.
Brain förbättrar prestandan för vår interna riktmärke.

Vi körde också matchade Brain-ablationer på delmängder av två offentliga riktmärken. På LoCoMo minskade borttagningen av wikin svarens korrekthet med 4,6 procentenheter i genomsnitt, över tre körningar med olika modeller. På LongMemEval-S gav det ingen statistiskt signifikant förändring. Detta resultat stämmer överens med Brains avsedda roll. LongMemEval-S testar i första hand återställning av fakta från enskilda sessioner, där de underliggande transkriptionerna ger en redundant väg till svaret. LoCoMo lägger större vikt vid bevis utspridda över konversationer, talare och datum, vilket skapar fler möjligheter för wikins korssessionssyntes att bidra.

Sammantaget, med Brain aktiverat, uppnådde produktionsagenten 0,91 i svarskorrekthet på LongMemEval-S och 0,83 på LoCoMo. Eftersom dessa experiment använde riktmärkesdelmängder är de inte slutgiltiga riktmärkesresultat. Ablationerna ger dock fortfarande en stark signal om att wikin förbättrar prestandan, särskilt när bevis måste integreras över konversationer. Eftersom Brain är en del av Computer, i stället för ett optimerat, riktmärkespecifikt hämtningssystem, tror vi att konkurrenskraften bara kommer att öka med uppgifter som mer liknar produktionsarbetsflöden.

Onlineutvärderingar

Offline-datauppsättningar kan inte fånga upp varje funktion i verkliga användarhistoriker, så vi kör också en daglig parad utvärdering över färska produktionshärledade kohorter. Samma fasta frågor besvaras mot matchade användartillstånd med Brain aktiverat och inaktiverat, och bedöms sedan för korrekthet, aktualitet och återkallelse.

Preliminära resultat som rapporterades den 18 juni visade att Brain ökar svarskvaliteten med 25 % och återkallelsen med 16 %. Dessa prestandavinster har fortsatt att hålla i sig; under de senaste 30 dagarna presterade Brain-aktiverade sessioner bättre än kontrollgruppen vid varje körning och varje bedömd dimension. I absoluta tal gynnades Computer-användare av förbättringar på 9,3 poäng i korrekthet, 8,0 poäng i aktualitet och 8,9 poäng i återkallelse. De Brain-aktiverade banorna använde också ungefär 15 % färre tokens, kostade 10 % mindre och slutförde genereringen 10 % snabbare.

Diagram över resultat från parad utvärdering online som visar vinster i korrekthet, aktualitet och återkallelse vid sidan av minskningar av tokens, kostnad och latens.
Brain ökar svarskvaliteten och minskar kostnaden.

Kontinuerlig förbättring

Vi har fortsatt att förfina Brain för att ge användarna den bästa minnesupplevelsen. En nyligen gjord ändring placerar Brains kompakta index direkt i agentens initiala kontext i stället för att kräva att agenten upptäcker och läser det senare. I ett randomiserat experiment ökade denna förfyllda behandling användningen av Brain och minskade den minnesrelaterade otillfredsställelsen med 6,9 %.

Det offlinebaserade utvärderingsverktyget fungerar också som en del av en autonom förbättringspipeline. Föreslagna ändringar av Brains minnesunderagent, hämtningsfärdigheter och prompter körs genom de matchade ablationerna på vår interna datauppsättning och offentliga riktmärken. Computer-agenter kan iterera över resultaten autonomt, vilket bevarar varje iterations ändring, delta och kostnad som en hållbar post och endast behåller de ändringar som flyttar siffrorna. Resultatet är ett system där Brains utvärderare också är dess optimerare, vilket driver framtida förbättringar.

Slutsats

Kontinuerligt lärande är en av de definierande utmaningarna för att bygga agentsystem som fungerar under veckor och månader. Vi anser att minnesarkitekturer bäst exponeras som miljöer som agenter direkt kan utforska med hjälp av sina vanliga verktygssatser. Att exponera minne som ett filsystem, med Brain som en strukturerad kunskapswiki ovanpå, gör kontexten effektivt navigerbar genom enkla och bekanta verktyg.

Brain är utformad för självförbättring så att minnessystemet kan fortsätta att bli bättre i takt med att användningen växer. Bakgrundsagenterna Dream destillerar ny information till Brain-uppdateringar, vilket säkerställer att förgrundsagenterna alltid startar en ny session med en organiserad vy över den senaste kontexten. Utvärderingsverktyget fungerar också som en testbädd för självutforskande loopar på kärnminnesarkitekturen och de agentinriktade gränssnitten.

Redan har Brain resulterat i mer exakta och prestandastarka agentsessioner samtidigt som förbrukade tokens har minskats. Vår noggranna samdesign av Brain med Computers produktionsstack säkerställer att dessa vinster översätts direkt till verkliga fördelar för användarna.

Vi fortsätter att bygga ut fler funktioner för att förbättra kvaliteten på Computers minne. Under tiden kommer minnet att förbättras för varje session för användare med Brain aktiverat.