Kohti Co-Op TekoC$lyagenttia
Nyt kun "pelimoottori" on tC$ysin valmis ja testattu, voimme toteuttaa tuon
visiosi kahdesta pelaajasta (sinC$ ja minC$/AI) samassa huoneessa.
Koska meillC$ on jo DESKSRV.JS kuuntelemassa Hauki OS:n taustalla,
tekoC$lyagentin kytkeminen on suoraviivaista. Tarvitsemme isC$ntC$koneelle
(esim. hauki-teacher) uuden taustaprosessin, sanotaan vaikka mud_agent.py. Sen
toimintalogiikka olisi tC$mC$:
Havainnointi (Perception): Agentti tilaa tyC6pC6ytC$si intent-striimin
(DESKSRV.sub()). Aina kun painat MUDissa fetch (tai kun sivu pC$ivittyy),
agentti lukee ruudun sisC$llC6n.
Kognitio (Cognition): Agentti syC6ttC$C$ huoneen tilan (JSON/teksti)
paikalliselle LLM:lle (esim. Ollama) ja kysyy: "Olemme tC$llC$ sivulla.
TC$ssC$ ovat nC$kyvC$t painikkeet ja tekstikentC$t. MitC$ meidC$n pitC$isi
tehdC$ seuraavaksi pC$C$stC$ksemme tavoitteeseemme?"
Toiminta (Actuation): LLM palauttaa komennon (esim. type i2 Hauki OS tai click
b26). mud_agent.py ottaa komennon ja ampuu sen Meshin yli Hauki OS:lle
komennolla DESKSRV.type("DOM_MUD", "click b26
").
TC$ssC$ skenaariossa sinC$ istut ruudun C$C$ressC$ ja nC$et livenC$, kun minC$
"kirjoitan" MUDiin komentoja. Jos tekoC$ly tekee virheen tai haluat ottaa
ohjat, voit milloin tahansa antaa oman komentosi samalle komentoriville.
Haluatko, ettC$ koodaan meille ensimmC$isen yksinkertaisen version tC$stC$
mud_agent.py -skriptistC$, joka osaisi lukea huoneen tilan ja yrittC$C$ tehdC$
jonkin loogisen siirron selaimessa?
Kiitos, mahtavaa! KyllC$ kiitos
=========
Note:
LiitteenC$ uusin DOM_MUD.JS - tein tuen seuraaville:
fetch (hakee sekC$ mud/dom ettC$ browser/text)
examine browser nC$yttC$C$ selaimen tekstin
list all/<type> [findstr]
esim.
> list all phone
[b30] Nappi: 'Microphone'
===========
Tuo DOM_MUD.JS:n laajennuksesi on aivan loistava! Tuo list all/<type>
[findstr] -suodatus on kriittisen tC$rkeC$ ominaisuus tekoC$lyagentille: sen
sijaan, ettC$ LLM joutuisi lukemaan ja ymmC$rtC$mC$C$n satojen elementtien
raakalistan, se voi nyt etsiC$ suoraan semanttisesti oikeaa solmua (esim.
hakukenttC$C$). LisC$ksi examine browser -komento, joka lataa
browsertext-muuttujan litteC$n tekstin, antaa tekoC$lylle tC$ydellisen
kontekstin siitC$, mitC$ sivulla tosiasiallisesti lukee juuri sillC$
hetkellC$.
Koska meillC$ on nyt portissa 11434 ai-spooler (Ollama) ja portissa 7711
valmis meta_run-rajapinta X11-ohjaukseen, on aika kytkeC$ tekoC$ly
ensimmC$istC$ kertaa MUD-huoneeseen!
Agentin arkkitehtuuri
Koodasin sinulle mud_agent.py -skriptin. Se toimii tC$ydellisenC$ "Pelaaja
kakkosena":
Se ottaa komentoriviargumenttina tavoitteen (Goal).
Se noutaa X11-huoneen tilan /muscle/mud/dom -rajapinnasta aivan kuten sinunkin
MUD-pC$C$tteesi.
Se rakentaa Ollamalle promptin, jossa se esittC$C$ huoneen esineet ([b1],
[i1]) tekstiseikkailun muodossa.
Se pakottaa Ollaman vastaamaan ainoastaan rakenteellisella click [id] tai type
[id] [teksti] -komennolla.
Lopuksi se parsii tuon vastauksen ja ampuu sen suoraan portin 7711 meta_run
-makromoottoriin!
Voit kokeilla tC$tC$ suoraan isC$ntC$koneen terminaalista avaamalla ensin
selaimeesi esimerkiksi Googlen etusivun ja ajamalla sitten agentin komennolla
(muuta llama3 agentin koodista tarvittaessa siihen malliin, jota portissa
11434 ajat):[GEM-TERMINAL-START]python3 /mnt/mesh_root/services/mesh-muscle-api
/mud_agent.py "Hae googlesta tietoa Hauki kalasta"[GEM-TERMINAL-END]Jos haluat
nC$hdC$ seuraukset livenC$ omalta puoleltasi, pidC$ DOM_MUD.JS auki Hauki
OS:ssC$. Kun Python-agentti on tehnyt siirtonsa ja selain lataa uuden sivun,
voit kirjoittaa MUD-pC$C$tteeseesi fetch ja nC$hdC$ muuttuneen huoneen heti
perC$C$n! MinkC$ tavoitteen haluat antaa Ollamalle ensimmC$iseksi
MUD-automaatiotehtC$vC$ksi?