Moduuli 09

Miten agentti muistaa oikein

Agentti ilman muistia tekee saman työn uudelleen. Agentti huonolla muistilla tekee vielä pahempaa: se sekoittaa lähteen, tulkinnan ja arvauksen. Tässä moduulissa rakennat muistikerrokset, joissa alkuperäinen tieto, agentin tekemä työ ja päivän tapahtumat pysyvät erillään.

Tarkat komennot ja tekninen sanasto ovat moduulin lopussa.

Kolme muistikerrosta

Lähteet, tulkinnat ja päivittäinen muisti pidetään erillään.
Lähteet, tulkinnat ja päivittäinen muisti pidetään erillään.

Ensimmäinen kerros on lähdekerros. Sinne laitetaan alkuperäiset tiedot, joita agentti saa lukea. Sitä ei muuteta hiljaa.

Toinen kerros on työmuisti. Sinne agentti kirjoittaa yhteenvedot, luonnokset ja päätösten taustat. Tämä kerros on hyödyllinen mutta ei pyhä. Siinä pitää näkyä päivämäärä, lähteet ja epävarmuus.

Kolmas kerros on ihmisen muistipinta. Se on kansio tai sovellus, josta sinä luet päivän synteesin, seuraavat tehtävät ja tärkeät päätökset. Oma Digitiimi ei muista itseään varten. Se muistaa, jotta ihminen voi jatkaa.

Päivittäinen synteesi

flowchart LR
  A[activity.log] --> E[MUISTAJA-agentti]
  B[errors.log] --> E
  C[cost-awareness.log] --> E
  D[päivän muistiinpanot] --> E
  E --> F[päivittäinen synteesi]
  F --> G[Obsidian vault]
  G --> H[seuraavan päivän aamuraportti]
  classDef main fill:#162126,stroke:#98A7A1,color:#F2F5F3
  classDef key fill:#19392F,stroke:#3FB88C,color:#F2F5F3
  class A,B,C,D,G,H main
  class E,F key
Päivittäinen synteesi estää agenttityötä katoamasta lokeihin.

Päivittäinen synteesi on lyhyt kooste siitä, mitä agentit tekivät. Se ei ole kaiken kopioimista. Se on päivän jäljen muuttamista luettavaksi: tapahtumat, päätökset, epävarmat kohdat, huomisen tehtävät ja lähteet.

Hyvä synteesi on tarkistettava. Jos siinä väitetään, että kahvilaketjun tilaushelppari löysi kolme puutetta, lähteen pitää löytyä. Jos pienen toiminimen kirjanpidon esikäsittelijä merkitsi kuitit tarkistetuiksi, pitää näkyä kuka hyväksyi.

Muistin laatu

Muisti on laadukas, kun se vastaa neljään kysymykseen:

  1. Mistä tieto tuli?
  2. Kuka tai mikä kirjoitti tulkinnan?
  3. Milloin tämä tapahtui?
  4. Mitä ihminen päätti?

Jos jokin näistä puuttuu, muisti on hauras. Agentti voi kuulostaa varmalta, vaikka se nojaa tulkintaan. Siksi lähteet ja tulkinnat pidetään erillään.

Näkyvyys ilman näytösteatteria

Tarvitset pienen näkymän, et komentokeskusta. Hyvä näkymä kertoo:

  • mitkä ajot onnistuivat
  • mikä epäonnistui
  • mikä odottaa ihmistä
  • montako malliajoa tehtiin
  • mitä päätöksiä jäi auki

Pienpanimon vuosikatsauksen koostaja ei tarvitse suurta valotaulua. Se tarvitsee varman listan: mitä aineistoa luettiin, mitä koottiin, mitä jäi tarkistettavaksi ja kuka hyväksyy luvut.

Muistin korjaaminen

Muistiin tulee virheitä. Tärkeää on, ettei niitä korjata niin hiljaa, että historia katoaa. Korjausmerkintään kuuluu päivä, korjattu kohta, mikä oli väärin, mikä on oikea tieto, mihin lähteeseen korjaus perustuu ja kuka hyväksyi.

Tämä tuntuu muodolliselta, mutta se estää agenttia oppimasta väärää versiota huomaamatta.

Mitä muistiin ei laiteta

Älä laita työmuistiin:

  • salaisia tunnuksia
  • tarpeettomia henkilötietoja
  • arkaluonteisia terveys- tai taloustietoja
  • lasten tietoja ilman erityistä perustetta
  • kokonaisia lähteitä, jos viittaus riittää
  • asioita, joita et osaa myöhemmin tarkistaa

Tietosuoja ei ole erillinen lisäosa. Se on muistirakenteen perusominaisuus.

Ennen seuraavaa moduulia: päätä mitä saa ilmoittaa

Puhelinhälytys kannattaa lisätä vasta, kun tiedät mitä saa lähteä ulos. Kirjoita, mitä saa ilmoittaa, mitä ei saa ilmoittaa, esimerkki hyvästä ilmoituksesta, esimerkki liian paljastavasta ilmoituksesta ja kuka hyväksyy muutoksen.

Tämä valmistaa viimeiseen moduuliin. Hyvä hälytys kertoo, että ihmisen pitää katsoa jotain. Se ei paljasta koko asiaa lukitusruudulla.

Tarkat komennot ja vaiheet (valinnainen)

Luo muistikerrokset:

mkdir -p ~/Agentit/{groundtruth,wiki,logs}
chmod 700 ~/Agentit/groundtruth

Luo pieni SQLite-muisti faktoille:

sqlite3 ~/Agentit/wiki/muisti.db <<'SQL'
CREATE TABLE IF NOT EXISTS facts (
  id INTEGER PRIMARY KEY,
  created_at TEXT NOT NULL,
  category TEXT NOT NULL,
  title TEXT NOT NULL,
  content TEXT NOT NULL,
  source TEXT NOT NULL
);
SQL

Lisää merkintä:

sqlite3 ~/Agentit/wiki/muisti.db \
  "INSERT INTO facts (created_at, category, title, content, source)
   VALUES (datetime('now'), 'event', 'Aamuraportti syntyi', 'Aamuraporttiskripti loi markdown-tiedoston.', 'activity.log');"

Laske päivän LLM-ajot lokista:

grep "$(date '+%Y-%m-%d')" ~/Agentit/logs/cost-awareness.log | wc -l

Päivitä ihmisen muistipinta Obsidianissa avaamalla ~/Agentit/wiki Obsidian vaultiksi. Sana vault tarkoittaa tässä vain tavallista kansiota, jota Obsidian lukee.

Viikkosiivous:

cat > ~/Agentit/wiki/viikkosiivous.md <<'EOF'
# Muistin viikkosiivous

- [ ] Lähteet ja tulkinnat erillään
- [ ] Korjausmerkinnät lisätty
- [ ] Salaisuuksia ei ole wikissä
- [ ] Päivittäiset synteesit tehty
- [ ] Avoimet päätökset näkyvät
EOF

Tiivistelmä

  • Hyvä muisti erottaa lähteet, tulkinnat ja ihmisen päätökset.
  • Päivittäinen synteesi tekee agenttityöstä luettavaa.
  • Virheitä ei korjata hiljaa, vaan korjaus kirjataan.
  • Muistiin ei laiteta tarpeettomia henkilötietoja tai salaisuuksia.
  • Puhelinhälytykset rajataan vasta, kun muisti on järjestyksessä.