Skip to content

Vedvarende minne ​

Triggerfish-agenter har vedvarende kryssesjonelt minne. Agenten kan lagre fakta, preferanser og kontekst som overlever på tvers av samtaler, omstarter og til og med trigger-oppvåkninger. Minnet er klassifiseringsgatert — agenten kan ikke lese over sin session taint eller skrive under den.

Verktøy ​

memory_save ​

Lagre et faktum eller en informasjonsbit i vedvarende minne.

ParameterTypePåkrevdBeskrivelse
keystringJaUnik identifikator (f.eks. bruker-navn, prosjekt-frist)
contentstringJaInnholdet som skal huskes
tagsarrayNeiTagger for kategorisering (f.eks. ["personlig", "preferanse"])

Klassifisering settes automatisk til den gjeldende sesjonens taint-nivå. Agenten kan ikke velge hvilket nivå et minne lagres på.

memory_get ​

Hent et spesifikt minne med nøkkelen.

ParameterTypePåkrevdBeskrivelse
keystringJaNøkkelen til minnet som skal hentes

Returnerer minneinnholdet hvis det finnes og er tilgjengelig på gjeldende sikkerhetsnivå. Høyere-klassifiserte versjoner skygger lavere.

Søk på tvers av alle tilgjengelige minner med naturlig språk.

ParameterTypePåkrevdBeskrivelse
querystringJaSøkespørring på naturlig språk
max_resultsnumberNeiMaksimalt antall resultater (standard: 10)

Bruker SQLite FTS5 fulltekstsøk med stemming. Resultater filtreres etter gjeldende sesjons sikkerhetsnivå.

memory_list ​

List alle tilgjengelige minner, eventuelt filtrert etter tagg.

ParameterTypePåkrevdBeskrivelse
tagstringNeiTagg å filtrere etter

memory_delete ​

Slett et minne etter nøkkel. Posten mykt-slettes (skjules men beholdes for revisjon).

ParameterTypePåkrevdBeskrivelse
keystringJaNøkkelen til minnet som skal slettes

Kan bare slette minner på gjeldende sesjons sikkerhetsnivå.

Slik fungerer minnet ​

Automatisk utvinning ​

Agenten lagrer proaktivt viktige fakta brukeren deler — personlige detaljer, prosjektkontekst, preferanser — ved hjelp av beskrivende nøkler. Dette er atferd på prompt-nivå styrt av SPINE.md. LLM-en velger hva som lagres; policy-laget tvinger på hvilket nivå.

Klassifiseringsgating ​

Hver minnepost bærer et klassifiseringsnivå lik session taint på tidspunktet den ble lagret:

  • Et minne lagret under en CONFIDENTIAL-sesjon klassifiseres som CONFIDENTIAL
  • En PUBLIC-sesjon kan ikke lese CONFIDENTIAL-minner
  • En CONFIDENTIAL-sesjon kan lese både CONFIDENTIAL- og PUBLIC-minner

Dette håndheves av canFlowTo-sjekker på alle leseoperasjoner. LLM-en kan ikke omgå dette.

Minneskygge ​

Når samme nøkkel finnes på flere klassifiseringsnivåer, returneres bare den høyest-klassifiserte versjonen som er synlig for gjeldende sesjon. Dette forhindrer informasjonslekkasje på tvers av klassifiseringsgrenser.

Eksempel: Hvis bruker-navn finnes på både PUBLIC (satt under en offentlig chat) og INTERNAL (oppdatert under en privat sesjon), ser en INTERNAL-sesjon INTERNAL-versjonen, mens en PUBLIC-sesjon bare ser PUBLIC-versjonen.

Lagring ​

Minner lagres via StorageProvider-grensesnittet (den samme abstraksjonen som brukes for sesjoner, cron-jobber og todos). Fulltekstsøk bruker SQLite FTS5 for raske naturlige spørringer med stemming.

Sikkerhet ​

  • Klassifisering tvinges alltid til session.taint i PRE_TOOL_CALL-hooken — LLM-en kan ikke velge et lavere klassifiseringsnivå
  • Alle lesninger filtreres av canFlowTo — ingen minner over session taint returneres noen gang
  • Slettinger er mykt-slettinger — posten skjules men beholdes for revisjon
  • Agenten kan ikke eskalere minneklassifisering ved å lese høy-klassifisert data og lagre det på nytt på et lavere nivå (no-write-down-beskyttelse gjelder)

SIKKERHET LLM-en velger aldri minneklassifisering. Det tvinges alltid

til gjeldende sesjons taint-nivå av policy-laget. Dette er en hard grense som ikke kan konfigureres bort. :::