Inteligencia nie je len LLM. Je to aj software okolo neho.

Inteligencia nie je len LLM. Je to aj software okolo neho.

Inteligencia nie je len LLM. Je to aj software okolo neho.

Dlho som mal z praxe pocit, že pri AI agentoch sa príliš veľa pozornosti venuje samotnému modelu.

Koľko má parametrov. Aký má benchmark. Koľko tokenov zvládne. Či je o pár percent lepší než minulá verzia.

Lenže pri reálnom používaní som postupne dochádzal k inému záveru:

Schopnosť agenta nie je iba vlastnosť LLM. Veľká časť jeho praktickej inteligencie vzniká v softvéri okolo neho.

Model potrebuje dostať správny kontext, správne knowledge, správne nástroje a primitíva na správnej úrovni abstrakcie. A zároveň musí existovať vrstva, ktorá kontroluje, čo sa z jeho rozhodnutí naozaj vykoná.

Presne na tomto princípe vzniká OS Layer.

Jeho úloha nie je robiť LLM „múdrejším“ ďalším kilometrovým system promptom.

Jeho úloha je vytvoriť prostredie, v ktorom model nemusí byť múdry tam, kde to vie deterministicky vyriešiť software.


 
LLM

├─ Context → čo má model vedieť
├─ Skills → procedural knowledge
├─ Tools → čo môže model požadovať
├─ Runtime → čo sa skutočne smie vykonať
├─ Policy → permissions / approvals
└─ Components → deterministická implementácia

Jeden malý experiment

Chcel som, aby lokálny GPT-OSS 20B iba overil, či sa Rust komponent capabilities/ai skompiluje.

Prompt bol jednoduchý:


 
Skontroluj, či capabilities/ai kompiluje.
Použi knowledge a model-facing development tools dostupné
v tomto projekte.
Vráť mi presné compiler diagnostics a nič neopravuj.

Model mal k dispozícii nový high-level primitive:


 
rust_check

Prvý pokus dopadol katastrofálne.

Model okamžite správne zavolal:


 
{
"path": "capabilities/ai"
}

Lenže tool contract požadoval absolútnu cestu.

Výsledok:


 
15 tool calls
15 rounds
105.8 sekundy

Model začal hľadať projekt, skúšal relatívne cesty, /home/pihi/.local, dokonca /, kde search dvakrát timeoutol.

Na prvý pohľad by sa dalo povedať:

Model je hlúpy.

Lenže to by bola nesprávna diagnóza.

Jeho úplne prvé rozhodnutie bolo správne.

Chybný bol software okolo neho.

Opravili sme prostredie, nie model

OS Layer dostal jednoduchý execution-context kontrakt.

Caller pošle Runtime svoj workspace:


 
/home/pihi/os_layer

Runtime stále spúšťa Component vo vlastnom izolovanom adresári, ale zároveň mu poskytne:


 
OS_RUNTIME_CALLER_CWD=/home/pihi/os_layer

Takže:


 
capabilities/ai

sa deterministicky vyrieši ako:


 
/home/pihi/os_layer/capabilities/ai

Model sa nezmenil.

Prompt sa nezmenil.

Rust compiler sa nezmenil.

Zmenil sa iba software okolo LLM.

Výsledok

Ten istý benchmark som následne pustil päťkrát.

Výsledok bol zakaždým:


 
1 round
1 tool call

rust_check {
"path": "capabilities/ai"
}

exit_code: 0
diagnostics: []

Časy:


 
4.664 s
3.759 s
4.966 s
3.590 s
5.257 s

Priemer približne:


 
4.45 sekundy

Z pôvodných:


 
105.8 s / 15 calls

sme sa teda dostali na:


 
4.45 s / 1 call

Približne 24× kratší wall time.

Bez väčšieho modelu.

Bez prompt engineeringu.

Bez hardcoded workflow.

Bez fine-tuningu.

Model zrazu vyzerá múdrejší

A pritom nie je.

To je podľa mňa dôležitý rozdiel.


 
predtým:

LLM → správne rozhodnutie

zlý primitive

recovery reasoning

chaos

Po úprave:


 
LLM → správne rozhodnutie

správny primitive

deterministická execution

výsledok

Model nemusí premýšľať nad tým, ako funguje filesystem layout OS Layeru.

Nemusí hádať absolute path.

Nemusí vedieť presnú syntax cargo check.

Nemusí parsovať stovky riadkov compiler outputu.

Jeho úloha je:

„Potrebujem overiť Rust projekt.“

A software mu poskytne operáciu presne na tejto úrovni:


 
rust_check

Čím menej musí model vedieť, tým menej môže pokaziť

To je paradox, ktorý sa mi pri vývoji OS Layeru objavuje stále častejšie.

Silnejší agent nemusí nevyhnutne znamenať model, ktorému dáme ešte viac možností.

Často je lepšie zobrať modelu zbytočnú mechaniku.

Namiesto:


 
spusti shell
nájdi Cargo.toml
vyber cargo
zostav argv
spusti proces
parsuj stderr
pochop exit code

dostane:


 
rust_check(path)

Model rozhoduje čo.

Software rozhoduje ako.

Runtime rozhoduje či sa to smie.

A tu začína byť zaujímavý aj malý model

Toto celé nie je iba optimalizácia GPT-OSS 20B.

Už predtým sme podobný jav videli pri skill routingu.

Keď mal model spraviť:


 
vyber skill
→ načítaj SKILL.md
→ pochop, ktorý reference dokument potrebuješ
→ zavolaj tool druhýkrát

8B model druhý reasoning hop často neurobil.

Po zmene primitive na:


 
skill_load(
name="component-v2",
route="architecture"
)

rovnaký model začal správny workflow robiť stabilne jedným callom.

Dokonca 0.6B model už dokázal v časti behov správne vybrať celý skill + route.

A to je moment, keď začne byť zaujímavá otázka:

Koľko „inteligencie“ skutočne musí byť vo weights a koľko jej môžeme presunúť do architektúry systému?

Moja pracovná hypotéza

Čím ďalej OS Layer staviam a používam, tým viac mi sedí približne toto:


 
effective agent intelligence

LLM intelligence

Skôr:


 
effective agent intelligence

model capability
×
environment quality

Zlé prostredie vie veľmi schopný model utopiť v mechanike.

Dobré prostredie vie výrazne zvýšiť praktickú schopnosť menšieho modelu.

A veľmi dobrý model v kvalitnom prostredí?

To bude ďalší experiment.

Preto je pre mňa GPT-OSS 20B momentálne referenčný model OS Layeru. Je to najväčší model, ktorý sa mi ešte rozumne zmestí lokálne, a zároveň je dostatočne schopný na to, aby ukázal, kde už končí problém infraštruktúry a začína limit samotného reasoning engine.

Ďalší krok bude vo VM.

Dostane rozbitý Rust projekt, development tools a jednoduchú úlohu:


 
Oprav to.
Dokáž, že to funguje.
Skonči.

A potom uvidíme, čo sa stane.

Možno si opraví celý projekt.

Možno podpáli VM.

V oboch prípadoch to bude dobrý benchmark. ????

Marek Mihók