92 - AI agentic coding — praktiline seminar
Äriinfotehnoloogia töörühma seminar, TalTech 2026.
Andres Käver — courses.taltech.akaver.com
Taust: kes ma olen ja mida ma teen
Õpetan TalTechis 5 ainet (~300 tudengit semestris): C#/ASP.NET Core, JavaScript full-stack (Vue/React/Angular + NestJS), Native Mobile, ja uus magistrikursus "Agentic Software Development". Haldan GitLab CE instansi ~300 tudengile, kirjutasin ai-proxy mis ruudib päringuid kohalike HPC mudelite, OpenRouteri ja Azure frontier-mudelite vahel. Ja arvestab kulusi.
Isiklik kogemus numbrites: AI-ga suudan hoida töös 10 projekti 2–3 asemel. See on 3–4× kordistaja. Aga pudelikael pole enam kood — pudelikael on pea. Pealelõunaks olen vaimselt läbi. Ja ma tunnetan seda ära, sest mul on 35 aastat kogemust. Tudengil seda filtrit pole.
1. Mudelite võrdlus — mida mille jaoks kasutada
Frontier vs lokaalne: lühike tõde
| Võimekus | Frontier (Opus / GPT / Gemini) | Lokaalne 32B (Qwen 3.5) | Lokaalne 7B |
|---|---|---|---|
| Autocomplete | Overkill | Hea | Hea |
| Koodi chat / Q&A | Suurepärane | Hea | Rahuldav |
| Ühe faili genereerimine | Suurepärane | Hea | Talutav |
| Mitme faili redigeerimine | Suurepärane | Habras | Ebausaldusväärne |
| Agentic (planeeri → teosta → debugi) | Töötab | Puruneb 3–5 sammu järel | Ei tööta |
| Kontekstiaken | 256k–1M tokenit | 32k–128k tokenit | 8–32k tokenit |
| Tool use / function calling | Usaldusväärne | Ebaühtlane | Nõrk |
Praktiline soovitus: Lokaalsed mudelid autocomplete'iks ja chat'iks. Frontier API kõigeks, mis nõuab planeerimist, mitme sammu täitmist või suure koodibaasi mõistmist. See vahe pole ajutine — see on füüsika. Frontier-mudelid on 10–50× suuremad.
Miks lokaalne siiski loeb
- Privaatsus. Avaldamata uurimistöö, andmestikud, grantide taotlused — midagi ei lahku masinast.
- Latentsus. Autocomplete 30–50 tokenit/sek tundub kohesena. API round-trip lisab 200–500ms.
- Kulu. Null eurot per token. 24/7.
- Offline. Lennukis, serverruumis, Faraday puuris.
Mudelivalik 2026 kevadel
| Riistvara | Mis jookseb |
|---|---|
| 16–32 GB RAM | 7B–14B mudelid (Qwen 3.5 Coder 7B) |
| 48–64 GB RAM | 27B–32B mudelid (Qwen 3.5 27B) |
| 128 GB+ (Mac Ultra / X*5090 vmt.) | 70B mudelid Q4 kvantiseerimisel |
Soovitan alustada: ollama pull qwen3.5:27b-q8_0 (kui masin kannatab) või qwen3.5:27b (kui ei).
Hinnavõrdlus (frontier API)
| Mudel | Input | Output | Tüüpiline "kirjuta skript" ülesanne |
|---|---|---|---|
| Claude Opus | ~$5/MTok | ~$25/MTok | €0.50–5.00 |
| Claude Sonnet | ~$3/MTok | ~$15/MTok | €0.10–1.00 |
| Kimi K2 turbo | ~$1.15/MTok | ~$8/MTok | €0.05–0.50 |
| Deepseek 3.2 | ~$0.25/MTok | ~$0.38/MTok | €0.01–0.10 |
Benchmarkide jaoks: swe-rebench.com
2. Kulude optimeerimine
500€/kuu on palju. See viitab Opus-tasemel mudelite intensiivsele kasutusele. Konkreetsed strateeegiad:
Mudeli routing
Mitte kõik ülesanded ei vaja kallimat mudelit. LiteLLM proxy (või sarnane) võimaldab:
- Opus/GPT-o1 → ainult arhitektuuri planeerimine, keerukas multi-file refactoring
- Sonnet/GPT-4o → igapäevane agentic töö, code review, selgitused
- Haiku/Flash/Deepseek → lihtsad küsimused, boilerplate, dokumentatsioon
- Lokaalne Qwen 32B → autocomplete, privaatne chat, offline töö
See routing vähendab kulu 3–10×.
Praktilised meetodid
| Meetod | Kokkuhoid |
|---|---|
| Lokaalne mudel autocomplete'iks (ollama) | ~€50–100/kuu |
| Sonnet Opuse asemel 80% ülesannetest | ~€200–300/kuu |
| Subscription (Claude Pro $20, Copilot $10) lihtsama töö jaoks | vs API kulu |
| Kontekstiakna haldamine (väiksemad failid, fokusseeritud @mentions) | ~20–30% |
| Azure akadeemilised krediidid (kui asutus pakub) | Tasuta |
| OpenRouter free tier mudelid rutiinülesanneteks | Tasuta |
Peamine printsiip: autocomplete on odav (lokaalne), chat on keskmine (Sonnet), agentic on kallis (Opus). Enamik tööst on chat-tasemel.
3. IDE-sõltumatu lähenemine
Lühike vastus: jah, on võimalik. Cursor ja Windsurf on lock-in. Alternatiivid:
CLI tööriistad (täielikult IDE-agnostilised)
| Tööriist | Kirjeldus | Mudeli tugi |
|---|---|---|
| Claude Code | Anthropicu CLI agent. Kõige võimekam agentic tööriist 2026 seisuga. | Anthropic API |
| Aider | Avatud lähtekood, git-integratsioon, iga muudatus = commit. | Kõik suured API-d + ollama |
Mõlemad töötavad terminalis. Kõrval mis tahes editor — VS Code, JetBrains, Vim, Emacs.
VS Code pluginad (avatud lähtekood, provider-agnostilised)
| Tööriist | Tugi | Eripära |
|---|---|---|
| Kilo Code | VS Code | Agentic + approval workflow, MCP tugi, kohalikud + frontier mudelid |
| Continue.dev | VS Code + JetBrains | Autocomplete + chat, ollama integratsioon |
| Roo Code | VS Code | Cline'i fork, avatud lähtekood |
Miks MCP on oluline IDE-agnostilisuse jaoks
MCP (Model Context Protocol) on avatud standard AI ja väliste tööriistade ühendamiseks. Tööriist on vahetatav, MCP serverid (andmebaas, failisüsteem, API-d) jäävad samaks. Spec-driven development on samuti IDE-agnostiline by design — spec on markdown, implementatsioonitööriist on vahetatav.
Mida vältida
- Cursor — VS Code fork. Hea toode, aga: properitaarne, subscription lock-in, sinu sõltuvus nende ärimudelist.
- Windsurf — sama lugu.
- Nende omad mudelipakkujad — tihti routing läbi nende serverite, lisaks privaatsusküsimused.
4. SMIT-i (e-gov) rulesetid
SMIT (Siseministeeriumi Infotehnoloogia- ja Arenduskeskus) on avaldanud oma Cursor AI reeglid ja agendi konfiguratsioonid GitHubis:
github.com/e-gov/cursor-prompts (MIT litsents)
Mida see sisaldab
| Kaust | Sisu |
|---|---|
rules/common/ | Keele-agnostilised: turvalisus (OWASP), komponentide disain, integratsioonimustrid |
rules/java-common/ | Java 21+ koodistiil, SLF4J logimine, auditimine, jOOQ andmebaasipääs |
rules/java-spring-boot/ | Spring Boot mustrid, retry/circuit breaker, TestContainers testimine |
agents/ | AGENTS.md failid: Java (Spring Boot 4 + Gradle) ja Nuxt (Vue 3 + TypeScript) agendid |
commands/ | Korduvkasutatavad prompt-mallid: code review workflow, "deslop" (AI-genereeritud üleliigse eemaldamine) |
Kuidas kasutada
# Kopeeri reeglid oma projekti
cp -r rules/* your-project/.cursor/rules/
# Või agendi konfiguratsioon
cp agents/java/AGENTS.md your-project/AGENTS.md
Reeglid on .mdc failid (Cursor-spetsiifiline formaat), aga sisu on ülekantav. Sama loogika töötab:
- Claude Code →
CLAUDE.mdfail projekti juurkaustas - Kilo Code →
.kilocoderulesfail - Aider →
.aider.conf.yml+ convention-failid
Põhimõte on universaalne: defineeri koodistandardid, turvareeglid ja arhitektuurimustrid tekstifailina, mida AI agent loeb automaatselt. Tööriist on vahetatav, reeglid on püsivad.
5. Rakenduse kvaliteedi valideerimine
AI-genereeritud kood on confidently wrong. See ei märgista ebakindlust. Funktsioon, mis vaikselt vahetab kaks maatriksi dimensiooni, annab õige kuju ja tüübiga väljundi — lihtsalt valed väärtused.
Valideerimisstrateegiad
Tehniline valideerimine:
- Teadaolevad sisendid. Testi andmetega, mille tulemust saad käsitsi kontrollida.
- Võrdlus referentsimplementatsiooniga. Kui publitseeritud väärtused on olemas — kasuta neid.
- Assert-laused. Liberaalselt. Iga eeldus, mida AI-kood teeb, peaks olema eksplitsiitne.
- Sünteetilised andmed. Statistilise koodi puhul: genereeri teadaolevate omadustega andmestik enne päris andmete kasutamist.
- Loe koodi, eriti matemaatikat. Ära lihtsalt jookse seda.
Arhitektuurne valideerimine:
- Spec-driven development. Spec on kontrakt, mille vastu valideerida. Kui AI-genereeritud kood ei vasta spec'ile — spec on source of truth, mitte kood.
- Code review (ka AI-ga). Lase teisel mudelil üle vaadata. Erinevad mudelid leiavad erinevaid vigu.
- Tüübid ja linterid. TypeScript strict mode, mypy, clippy — staatilise analüüsi tööriistad püüavad kinni palju, mida silmaga ei näe.
Mis EI tööta:
- "See kompileerub" ≠ "see on õige"
- "Testid lähevad läbi" ≠ "testid on piisavad" (AI kirjutab teste, mis läbivad tema enda koodi)
- "See näeb mõistlik välja" ≠ peer review
METR RCT uuring (2025) — hoiatav lugu
16 kogenud open-source arendajat, 246 ülesannet.
- Enne: arvasid, et AI vähendab aega 24%
- Pärast: arvasid, et AI vähendas aega 20%
- Tegelikkus: AI-ga oldi 19% aeglasemad
Tajuline lõhe enesehinnangu ja reaalsuse vahel on massiivne — ja see eksisteerib kogenud professionaalide juures.
6. Spetsifikatsioonimallid — spec-driven development
Põhimõte
Enamik arendajaid kirjutab koodi enne ja dokumenteerib hiljem. Spec-driven development pöörab selle ümber: spec on source of truth, AI kirjutab koodi.
Workflow: intent → spec → plaan → implementatsioon
Kolm peamist raamistikku
| OpenSpec | Spec-Kit | BMAD | |
|---|---|---|---|
| Repo | github.com/Fission-AI/OpenSpec | github.com/github/spec-kit | github.com/bmad-code-org/BMAD-METHOD |
| Setup-aeg | 5 minutit | 30 minutit | Pikk |
| Parim | Olemasolev koodibaas (brownfield) | Uus projekt (greenfield) | Suur ettevõtte projekt |
| Keerukus | Madal | Keskmine | Kõrge |
| Sammu arv | 2 | 4 | Multi-agent |
Vali OpenSpec kui töötad legacy koodiga (90% meist). Vali Spec-Kit kui alustad nullist ja tahad GitHubi toega lihtsat struktuuri. Vali BMAD kui projekt on päriselt suur.
Näidisspetsifikatsioon teadlasele
## Task: IMU Data Processor
**Input:** CSV files from MPU6050 IMU sensor. Columns: timestamp_ms,
accel_x, accel_y, accel_z, gyro_x, gyro_y, gyro_z.
Sample rate ~100 Hz but not perfectly regular.
**Processing:**
1. Resample to exactly 100 Hz using linear interpolation
2. Apply complementary filter (alpha=0.98) to get roll and pitch
3. Detect "impact events" where total acceleration exceeds 3g
4. For each impact event, extract ±500ms window
**Output:**
- Cleaned CSV with added roll/pitch columns
- Matplotlib plot showing acceleration magnitude over time
with impact events marked
- JSON summary: number of impacts, timestamps, peak magnitudes
**Constraints:** Must handle files up to 2 GB. Single-threaded is fine.
See spec ON prompt. Mida konkreetsem spec, seda parem tulemus. Ebamäärane spec = drift regenereerimisel.
Kolm implementatsioonitaset
- Spec-first — kirjuta spec, kasuta AI-arenduses, kustuta spec pärast. Kood on source of truth.
- Spec-anchored — spec jääb alles ka pärast implementeerimist. Kasuta edasi evolutsiooniks ja hoolduseks.
- Spec-as-source — ainult spec'i redigeerib inimene. Inimene ei puutu kunagi koodi.
7. Genereeritud koodist kiire ülevaate saamine
Diagrammid
| Tööriist | Pluss | Miinus |
|---|---|---|
| PlantUML | Detailne, standardiseeritud, lai tugi | Eraldi renderdamine, keerukam süntaks |
| Mermaid | Renderdub otse markdownis (GitHub, GitLab, Docusaurus), lihtsam | Vähem detailne kui PlantUML |
| D2 | Ilusam väljund, layouti kontroll | Vähem tuntud |
Praktiline soovitus: lase AI-l genereerida Mermaid diagramme — need renderduvad otse README-s ja dokumentatsioonis ilma lisatöötluseta.
Prompt: "Generate a Mermaid class diagram showing the main entities and their relationships in this codebase."
AI-põhised ülevaate meetodid
| Meetod | Käsk / prompt |
|---|---|
| Koodibaasi selgitus | claude "Explain the architecture of this project" (Claude Code) |
| Küsi ilma muudatusteta | Kilo Code Ask mode / aider /ask |
| ADR post-hoc | "Generate Architecture Decision Records for the key design decisions in this project." |
| Dependency ülevaade | "List all external dependencies, their versions, and what they're used for." |
| End-to-end flow | "Trace the complete request-response flow from the API endpoint /api/users to the database and back, referencing specific files and line numbers." |
"Let the AI Explain" lähenemine
Struktureeritud promptid end-to-end selgituste saamiseks oma koodibaasi kohta. Eesmärk: mitte koodi genereerimine, vaid olemasoleva koodi mõistmine. See on eriti kasulik siis, kui keegi teine (või AI) on koodi kirjutanud ja sina pead sellest aru saama.
8. Praktiline alustamine — otsustuspuu
Kas vajad AI abi koodiga?
│
├─ Ainult autocomplete kirjutamise ajal?
│ └─ Continue.dev + ollama (Qwen 7B) — tasuta, lokaalne.
│
├─ Tahad olemasolevat koodi mõista / debugida?
│ └─ Continue.dev chat / Kilo Code Ask mode + ollama (32B) — tasuta.
│
├─ Kirjutad ühe skripti / funktsiooni?
│ ├─ Lihtne? → Kilo Code + lokaalne 32B
│ └─ Keerukas? → Kilo Code + Sonnet API (~€0.20)
│
├─ Mitme faili projekt?
│ └─ Claude Code / Kilo Code + Sonnet/Opus API. Lokaalsed frustreerivad.
│
├─ Tundlikud / piiratud andmed?
│ └─ Ainult lokaalsed mudelid. Erandeid ei ole.
│
└─ "Tahan lihtsalt koodist rääkida"
└─ claude.ai / ChatGPT tasuta tier. Setup pole vaja.
9. Quick start (5 minutit)
# Paigalda ollama
curl -fsSL https://ollama.ai/install.sh | sh
# Tõmba mudel (vali RAM-i järgi)
ollama pull qwen3.5:27b-q8_0 # 20+ GB RAM
# või
ollama pull qwen3.5:27b # 16+ GB RAM
# või
ollama pull qwen2.5-coder:7b # 5+ GB RAM
# Proovi kohe
ollama run qwen3.5:27b-q8_0
Seejärel paigalda VS Code'is Continue.dev ja suuna see ollama peale.
Agentic koodi jaoks: paigalda Kilo Code VS Code'is, lisa provider http://localhost:11434/v1. Alusta Ask režiimist.
Viited ja lingid
Tööriistad
- ollama.ai — lokaalsete mudelite haldus
- Claude Code — Anthropicu CLI agent
- Kilo Code — VS Code agentic plugin
- Continue.dev — VS Code/JetBrains autocomplete + chat
- Aider — CLI agentic tööriist git-integratsiooniga
Spec-driven raamistikud
- Spec-Kit (GitHub)
- OpenSpec (Fission AI)
- BMAD Method
e-gov rulesetid
- github.com/e-gov/cursor-prompts — SMIT-i Cursor AI reeglid ja agendi konfiguratsioonid (MIT litsents)
Benchmarkid
- swe-rebench.com — mudelite hinna/jõudluse võrdlus
Kursuse materjalid
- Agentic Software Development kursus — loengumaterjalid, ülesanded
- Programming in C# — C#/ASP.NET Core kursus
- Martin Fowler / Birgitta Böckeler: Spec-Driven Development Tools
Uuringud
- Bastani et al. (2025). Generative AI without guardrails can harm learning. PNAS, 122(26).
- Becker et al. (2025). Measuring the Impact of Early-2025 AI on Experienced Open-Source Developer Productivity. arXiv:2507.09089.
- Bjork & Bjork (2020). Desirable difficulties in theory and practice. JARMAC, 9(4).
Viimati uuendatud: märts 2026. Lokaalsete mudelite maastik muutub kiiresti — kontrolli soovitusi praeguste benchmarkide vastu enne otsustamist.