Moduulissa 2 käytimme aliagentteja (Documentation Agent, Spec Agent, Review Agent) — erikoistuneita rooleja selkeillä rajoilla. Nyt siirrymme täysiin AI-agentteihin, jotka suunnittelevat, toimivat ja oppivat itsenäisesti.
Aliagenteista täysiin agentteihin
AI-agentti
AI-agentti on LLM-silmukka, joka pystyy suunnittelemaan vaiheita, kutsumaan työkaluja, tallentamaan hyödyllistä tilaa ja jatkamaan, kunnes tavoite on saavutettu. Toisin kuin aliagentit, jotka suorittavat yhden vaiheen, täysi agentti hallitsee koko tehtävän alusta loppuun.
Aliagentin ja täyden agentin ero
| Aspekti | Aliagentti (Moduuli 2) | Täysi agentti (Moduuli 3) |
|---|---|---|
| Laajuus | Yksi työnkulun vaihe | Koko tavoite alusta loppuun |
| Työkalut | Luku/kirjoitus tiedostot | CLI, API:t, haku, koodin suoritus |
| Muisti | Session-konteksti | Pysyvä muisti suoritusten välillä |
| Autonomia | Ihminen käynnistää jokaisen vaiheen | Suunnittelee ja suorittaa itsenäisesti |
Agentin ydinkyvykkyydet
1. Suunnittelu (Planning)
Agentti pilkkoo tavoitteen toimenpiteiksi:
"Korjaa autentikaatiobugi"
→ Tutki virheilmoitus
→ Etsi relevantti koodi
→ Ymmärrä juurisyy
→ Ehdota korjaus
→ Toteuta + testaa
2. Työkalu (Tool use)
Agentti käyttää ulkoisia työkaluja:
- Tiedoston luku/kirjoitus
- Shell-komentojen suoritus
- API-kutsut
- Tietokantakyselyt
- Web-haku
3. Muisti (Memory)
Agentti muistaa kontekstin ja aiemmat päätökset:
- Työmuisti — nykyinen tehtävä ja havainnot
- Episodinen muisti — aiemmat suoritukset ja opitut asiat
- Tietomuisti — indeksoidut dokumentit ja data (RAG)
4. Delegointi (Delegation)
Agentti voi antaa alitehtäviä erikoistuneille agenteille:
Pääagentti: "Korjaa tämä bugi"
→ Tutkija-agentti: "Kartoita koodipolku"
→ Korjaaja-agentti: "Tee muutos"
→ Testaaja-agentti: "Aja testit"
Pro-vinkki
Hyvä agentti on auditoitava: jokaiselle toiminnolle pitäisi pystyä vastaamaan "miksi agentti teki tämän?". Jos et voi seurata agentin päättelyketjua, agentti ei ole tuotantovalmis.
Milloin käyttää agenttia?
| Tilanne | Ratkaisu |
|---|---|
| Yksinkertainen koodin generointi | Copilot/Cursor riittää |
| Yksittäinen tiedoston muokkaus | AI-IDE riittää |
| Monivaiheinen tehtävä (tutkimus → toteutus → testit) | Agentti |
| Koko feature alusta loppuun | Agentti |
| Jatkuva monitorointi ja reagointi | Agentti |
Agentin turvallisuus
Autonomia tuo riskejä. Agentin turvallisuus perustuu:
- Sääntöihin — AGENTS.md rajoittaa, mitä agentti saa tehdä
- Estettyihin toimintoihin — Tietyt komennot ovat kiellettyjä
- Hyväksyntäportteihin — Kriittiset toiminnot vaativat ihmisen hyväksynnän
- Iteraatiorajoihin — Agentti ei saa luupata loputtomasti
- Yhdistelmän välttämiseen — Agentti ei saa pitää hallussaan kaikkia kolmea vaarallista ominaisuutta yhtä aikaa (alla)
Kohtalokas kolmikko
Kielimalli ei erota ohjetta datasta: molemmat tulevat samana token-virtana. Siksi mikä tahansa teksti, jonka agentti lukee, voi sisältää ohjeen — ja agentti saattaa noudattaa sitä. Tätä kutsutaan prompt injectioniksi, eikä se ole korjattavissa promptilla, koska vika on rakenteessa eikä sanamuodossa.
Vaarallinen on nimenomaan yhdistelmä:
| # | Ominaisuus | Esimerkki |
|---|---|---|
| 1 | Pääsy yksityiseen dataan | lukee sähköpostit, repon, tietokannan |
| 2 | Altistuminen epäluotetulle sisällölle | lukee saapuvia viestejä, verkkosivuja, issue-kommentteja |
| 3 | Kyky viestiä ulos | lähettää postia, tekee HTTP-kutsun, pushaa repoon |
Yksi tai kaksi näistä on hallittavissa. Kaikki kolme yhdessä tekee agentista vuotokanavan: injektoitu ohje epäluotetussa sisällössä saa agentin lukemaan yksityistä dataa ja lähettämään sen ulos — ilman että kukaan huomaa mitään poikkeavaa.
Kahden sääntö
Käytännön nyrkkisääntö: agentti, joka ajaa ilman ihmisen hyväksyntää, saa täyttää enintään kaksi kolmesta ominaisuudesta. Jos tarvitset kaikki kolme, väliin tulee ihminen — tai kaksi eri agenttia niin, ettei se agentti, joka lukee epäluotettua sisältöä, ole sama, jolla on vaaralliset työkalut.
Pro-vinkki
Testaa tämä omaan viikon 2 agenttiisi: listaa sen työkalut ja merkitse jokaisen kohdalle, mihin kolmesta se kuuluu. Jos saat kaikki kolme rastia, olet rakentanut juuri sen, mitä ei pitäisi — ja korjaus on yleensä helppo: poista ulospäin viestivä työkalu tai laita sen eteen hyväksyntä. Tämä on myös hyvä kysymys vertaispalautteeseen: mitkä kolmesta tämä agentti täyttää?
# Estetyt komentokuviot
BLOCKED_PATTERNS = [
"rm -rf",
"drop table",
"delete from",
"git push --force",
"chmod 777",
]
def is_blocked(command: str) -> bool:
"""Tarkista onko komento estetty."""
lower = command.lower()
return any(pattern in lower for pattern in BLOCKED_PATTERNS)Agentin turvallisuuskerrokset
Agentin turvallisuus rakennetaan kerroksittain: 1) Projektisäännöt (AGENTS.md), 2) Estetyt komennot (blocklist), 3) Hyväksyntäportit (kriittiset toiminnot), 4) Iteraatiorajat (max kierrokset). Jokainen kerros on itsenäinen — vaikka yksi pettäisi, muut suojaavat.
Mikä erottaa täyden AI-agentin aliagenteista?
Suunnittele oma agentti
Suunnittele AI-agentti todelliseen tarpeeseen: 1) Mikä on agentin tavoite? 2) Mitä työkaluja se tarvitsee? 3) Mitä muistia se käyttää? 4) Mitkä ovat turvallisuusrajoitteet? 5) Milloin se tarvitsee ihmisen hyväksyntää? Kirjoita suunnitelma 1 sivulle.
Yhteenveto
- AI-agentti = LLM-silmukka + suunnittelu + työkalut + muisti
- Aliagentit ovat osa agenttia, eivät sen korvike
- Autonomia vaatii turvallisuuskerroksia
- Jokaisen agentin toiminnon pitää olla auditoitava
- Seuraavaksi pureudumme agenttisilmukkaan ja sen arkkitehtuuriin