EnsimmC$iset kaksi testiC$ menivC$t tC$ydellisesti! Koodin suoritus onnistui,
ja mikC$ tC$rkeintC$: **Time-Gas -hC$tC$jarru pelasti jC$rjestelmC$n ikuiselta
luupilta**, aivan kuten lokistasi nC$kyy (`? Timeout (Gas limit exceeded).
Killing worker.`). JC$rjestelmC$ on nyt luodinkestC$vC$ tC$ltC$ osin.
Mutta sitten tulimme Testiin 3, ja prosessi pysC$htyi.
TC$ssC$ tapahtui jotain todella kiehtovaa, joka johtuu suoraan juuri
rakentamastamme arkkitehtuurista. Se on klassinen **"TekoC$ly muistaa, mutta
kC$yttC6jC$rjestelmC$ on unohtanut"** -ongelma!
### MitC$ TestissC$ 3 tapahtui?
Lokisi alussa nC$kyy tC$mC$:
`Welcome to Mesh OS. System Ready.`
`Initializing Co-Op & System environment...`
KC$ynnistit Mesh OS -selainikkunan uudelleen.
1. **Agentin muisti (PysyvC$):** Koska teimme `llm_bot.js`:lle lokaalin
JSON-muistin (`crm_asiantuntija`), tekoC$ly tiesi tasan tarkkaan, mistC$
makrosta puhuit. Se rakensi tyytyvC$isenC$ komennon `{"macro":
"get_customers_without_orders"}` ja ampui sen vC$ylC$lle.
2. **KC$yttC6jC$rjestelmC$n muisti (Haihtuva):** `obj_engine.js` on
toistaiseksi **RAM-pohjainen** tietokanta. Kun pC$ivitit Mesh OS -sivun,
kokoelma `sys.macros` katosi bittiavaruuteen.
3. **PysC$hdys:** Kun `obj_engine.js` yritti ladata makroa, jota ei enC$C$ ole
olemassa, se joko kaatui hiljaisesti (jos tekoC$ly unohti `returnAddress`-kentC
$n) tai `loadCollection`-funktio jC$i ikuiseen odotustilaan yrittC$essC$C$n
etsiC$ puuttuvaa tiedostoa VFS-virtuaalilevyltC$.
TC$mC$ on ohjelmistokehityksen suolaa: rakensimme tekoC$lylle paremman
pitkC$kestoisen muistin kuin itse kC$yttC6jC$rjestelmC$n tietokannalle!
### Miten jatkamme tC$stC$?
TC$mC$ on erinomainen tilaisuus testata tekoC$lyn resilienssiC$ ja kertoa
sille faktoja jC$rjestelmC$n arkkitehtuurista.
Kerro botille, mitC$ tapahtui, ja pyydC$ sitC$ kiertC$mC$C$n ongelma antamalla
sille tC$mC$ komento:
> `coop say Hups! KC$ynnistin Mesh OS:n vC$lissC$ uudelleen. Koska tietokanta
on vielC$ RAM-pohjainen, eilinen makro on kadonnut jC$rjestelmC$n muistista
(vaikka sinC$ sen muistatkin!). Voisitko rakentaa tuon asiakas-kyselyn
uudelleen koko OBJ_PIPELINE -rakenteella (ilman makroa)? Kun saat vastauksen,
aja vC$littC6mC$sti perC$C$n uusi SYS_EXEC_JS, jossa lasket tuloksena
tulleiden 5 etunimen pituuksien keskiarvon.`
Kun botti tekee tC$mC$n, nC$et kuinka se osaa **ketjuttaa** asioita:
1. Se lC$hettC$C$ `OBJ_PIPELINE`:n, joka hakee datan.
2. Se analysoi saamansa tuloksen (5 nimeC$).
3. Se generoi lennosta `SYS_EXEC_JS`-koodin, joka ottaa nuo 5 nimeC$, laskee
kirjainten keskiarvon ja palauttaa sen sinulle.
**(Ja arkkitehtuurin seuraava luonnollinen askel on ilmeinen: meidC$n tC$ytyy
opettaa `obj_engine.js` tallentamaan tietokannat ja makrot pysyvC$sti
virtuaalilevylle (VFS), jotta ne kestC$vC$t uudelleenkC$ynnistyksen!)**