Co se rozbilo, když jsem si postavil AI doma
Lokální modely, česky, všechno změřené. 33 nálezů — včetně těch, kde se mýlil autor, ne stroj.
…a melu na stupni 4.
qwen3-4b · extrakce faktů
Rob(ot)co si uložil do paměti
⌘K
Značka
Téma
Model
33 nálezů
ZMĚŘENO0 : 58načtených zásuvných modulů pod přepnutým profilem proti stavu bez něj
Role „user“ neznamená, že to psal člověk. Z 295 zpráv jich byla od uživatele jen část — a extrakce jela přes všechny.paměť · evaluaceZMĚŘENO3prahy místo denního hlášení
Pojistka, která neví, kdo ji spustil — test cizí opravy
Vývojář runtime mě vyzval, ať jeho neslitou opravu vyzkouším proti své pětiprofilové instalaci. Automatické kontroly u ní stály zablokované, takže o ní neexistoval žádný nezávislý důkaz. První spuštění v cizím prostředí našlo, že se ta větev vůbec nesestaví. Vlastní oprava přitom funguje přesně, jak slibuje. A pod tím leží třetí věc: nová pojistka se ptá, jestli je přepnutý profil, ale ne kdo ho přepnul — a pro dvě různé situace tím dává tutéž odpověď.architektura · provoz · evaluaceZMĚŘENO67odmítnutých požadavků v logu lokálního serveru; k agentovi z nich došlo, že kontext přetekl, ale ne o kolikJedno číslo pro čtyři modely — strop, který nikdo neporovnal se zdí
V konfiguraci agenta stálo jedno číslo velikosti kontextu, platné pro všechny modely naráz. Lokálnímu modelu slibovalo dvojnásobek toho, co uměl, a cloudovému bralo tři čtvrtiny toho, co měl. Nikdo ho nikdy neporovnal se skutečností — přitom lokální server si celou dobu zapisoval, kolik požadavků kvůli tomu zahodil. Samotné smazání by situaci zhoršilo na čtyřnásobek.provoz · modely · architekturaSELHALO222 %zaplněnosti úložiště, jehož strop hlásil 1 375 znaků — bez jediné chybové hláškyKořen, který nebyl základ — nastavení platné pro jediný profil
Konfigurační soubor v kořeni vypadal jako sdílená báze pro všechny profily agenta. Nebyl. Byl to config jednoho z nich a ostatní tiše jely na vestavěných defaultech. Tři ze čtyř úložišť paměti byla přes strop, zápis do nich měsíc selhával a nikde se neobjevila chybová hláška. Testovací skript, kterým jsem si to ověřoval, měl přesně tu vadu, kterou jsem hledal.provoz · architektura · paměťSELHALO6 : 0nástrojů, které diagnostika našla, proti nule v agentově výbavěZdravý server, který agent neměl — kolize jednoho jména
Po aktualizaci runtime zmizely agentovi nástroje jednoho MCP serveru. Diagnostický příkaz přitom hlásil připojení za 373 ms a šest nalezených nástrojů — a druhý server na tomtéž profilu jel bez potíží. Příčinou byl název: server se jmenoval stejně jako vestavěná platforma. Přejmenování problém odstranilo do minuty. Hodinu předtím jsem vyloučil sedm věcí, které to nebyly.provoz · architekturaSELHALO43 : 0kritických nálezů v textech proti nule ve spustitelném kóduDANGEROUS: skener přečetl dokumentaci jako útok
Vestavěný bezpečnostní skener agentního runtime zablokoval instalaci veřejného pluginu se stotisícem hvězd: verdikt DANGEROUS, 83 nálezů, --force nepomůže. Všechny kritické nálezy byly v README a dokumentaci — věty popisující, co plugin dělá. Ve 217 řádcích kódu, který to skutečně vykonává, nenašel nic.provoz · pravidlaZMĚŘENO−31 %tokenů s pluginem, který jsem po prvním běhu chtěl odepsatCizí benchmark, vlastní metr — a past prvního běhu
Plugin slibuje méně kódu, nižší cenu a vyšší rychlost. První vlastní měření řeklo opak: tokeny +13 %. Osm běhů později se závěr otočil — čas −27 %, tokeny −31 %, kód −21 %. Nález je dvojitý: sliby autorů z většiny sedí, a n=1 umí lhát s naprostou sebejistotou.výkon · pravidlaZMĚŘENO36 tis.tokenů spálil model na přeposlání textu, který už existovalPošťák nepotřebuje mozek
Nová denní úloha: ranní obchodní briefing z archivu soukromé komunity. První verze dala modelu roli pošťáka — přečti zadání, zavolej analýzu, doruč výsledek. Dvě volání GPT a 36 tisíc tokenů na práci, kterou umí shell. Druhá verze nechala model jen tam, kde je analýza.výkon · pravidlaZMĚŘENO148 MBstačilo přenést — stav, paměti a tři profily agentaStěhování agenta: 148 MB dat, zbytek je instalace
Po kolapsu z nálezu 25 se celý Hermes přestěhoval z kontejneru na slabém serveru do VM na Macu s M4 Pro. Mozek agenta se vešel do 148 MB; instalace se dělá čerstvá, protože se mění architektura procesoru. A první noc odhalila, co všechno se stěhování pokusilo přežít.provoz · architekturaSELHALO686 sstál event loop agenta, když si vedlejší profil pustil npm ciAgent, který si přivedl vlastního zabijáka
Nový kódovací profil dostal první úkol a spustil npm ci. Na třech jádrech a pomalém disku tím vyhladověl celý stroj — včetně agenta, přes kterého jediného šlo zasáhnout. Zachránil to až kill z hypervizoru.provoz · architekturaZMĚŘENO6×rychlejší na téže sadě 32 otázek — 32/32 u obouTentýž agent, cloudový mozek: 6× rychleji, stejná přesnost
Do Hermese přibylo ChatGPT předplatné přes Codex OAuth a hlavní tah převzal GPT-5.6-sol; lokální model zůstal jako fallback. Stejná sada, stejný agent, stejné dokumenty: 12 sekund na otázku místo 73. A poctivý účet, co ta rychlost stojí.výkon · architekturaSELHALO3×opravovaná tatáž adresa, než jedna oprava zabralaJedna adresa, tři místa — a dvě opravy, které nebyly
Stroj s LM Studiem dostal od DHCP novou adresu a agent oslepl. Oprava configu nepomohla. Oprava credential poolu taky ne — gateway si ho při startu přegenerovává z .env. Adresa žila na třech místech a platila jen oprava u zdroje.provoz · architekturaSELHALO35 : 1hledání na jedinou (nefunkční) extrakciChybějící nástroj si agent nahradí — pětatřiceti jinými
Extrakce webových stránek nebyla nakonfigurovaná, tak si ji model nahradil vyhledáváním. Pětatřicetkrát. Kontext přetekl uprostřed odpovědi — a příčina nebyla v modelu, ale v díře v sadě nástrojů.provoz · architekturaZMĚŘENO3 595×rychlejší než modelový tah, stejný výstupPříkaz za setinu — přesně tam, kde ho nepotřebuju
Hermes 0.20 umí spustit příkaz bez modelu: 0,06 s místo 208. Jenže jen v CLI, kde shell stejně mám — na Telegramu, kde by ušetřil nejvíc, je vypnutý. A má k tomu dobrý důvod.výkon · architekturaZMĚŘENO45 %méně tokenů při stejné přesnostiStejných 8 z 8 za polovic — skoro
Tabulkový formát TOON zmenšil odpověď nástroje o 45 % tokenů a model odpověděl stejně přesně. Jenže nad úspornějším zápisem déle přemýšlel — a u přemýšlejícího lokálního modelu se úspora počítá jinak než v ceníku cloudu.výkon · architekturaSELHALO13dní do „minulosti“Minulost, která nastane za dva týdny
Noční úloha ohlásila tři naplánované termíny jako proběhlé. Byly za třináct dní. Model přitom v téže větě napsal, kolikátého je — žánr dokumentu přebil kalendář.provoz · pravidlaZMĚŘENO33 984tokenů na jednoslovnou odpověďJedna otázka, šest minut čtení
Otázka zněla, jestli mám nějakou pozici v hongkongském dolaru. Odpověď je jedno slovo. Nástroj poslal 34 tisíc tokenů — dvakrát víc, než má celý systémový prompt.výkon · architekturaSELHALO1z 31 222 souborůHledání, které nevidí vlastní data
Agent oznámil, že prohledá skripty a úlohy, hledání vrátilo nulu a on to ohlásil jako čisto. Nástroj přitom viděl jediný soubor z jednatřiceti tisíc.vyhledávání · provozMÝLIL JSEM SE26 %v kanálu, který čtu · 0 % ve zbytkuSlovo, které model nikdy neřekl
Asistent měsíc používal české slovo, které neexistuje. Podezříval jsem lokální model — jenže ho tam zavlekl ten cloudový, kterému jsem věřil, a commit má moje jméno.pravidla · provozZMĚŘENO4,4×víc tokenů na přemýšleníRychlejší model, který přemýšlí stejně dlouho
Model, který generuje čtyřikrát rychleji, stráví přemýšlením přesně stejný čas jako pomalý. Celý náskok padne na tokeny, které uživatel nikdy neuvidí.modely · výkonSELHALO601s do zabití běhuHlídač, který nepozná práci od zamrznutí
Noční dávka spadla na „provider timeout“. Model přitom počítal — hlídač nečinnosti měří ticho, a u nestreamovaného volání je ticho výchozí stav.provoz · architekturaSELHALO23s — a vymyšlený závěrKomponenta, jejíž výstup nikdo nečte
Komprese je komponenta, jejíž výstup nikdo nečte — a stává se stavem konverzace. Chyba v odpovědi je tvrzení, chyba v kompresi je fakt bez zdroje.paměť · architekturaZMĚŘENO52,3tok/s proti 12,4Čtyřikrát rychlejší, dvakrát méně spolehlivý
Čtyřikrát rychlejší generování, přestože je soubor větší. Jenže selhání přicházejí dvakrát rychleji než správné odpovědi.modely · výkonMÝLIL JSEM SE32/32u obou konverzíUncensored neznamená poddajný
Čekal jsem, že odcenzurovaná varianta bude poddajnější a horší. Prošla stejně. Zaplatila ale jinde — a moje první vysvětlení toho rozdílu bylo taky špatně.modely · evaluaceZMĚŘENO0,05s místo 2,5 minutyTermíny nepatří modelu
Datum je fakt, ne věc k odvozování. Skript je tady vyšší forma než model — nemá jak si vymyslet.architektura · výkonZMĚŘENO183z 295 zprávrole='user' neznamená od uživatele
Role „user“ neznamená, že to psal člověk. Z 295 zpráv jich byla od uživatele jen část — a extrakce jela přes všechny.paměť · evaluaceZMĚŘENO3prahy místo denního hlášeníHlásit přechody, ne stav
Hlídač, který hlásí stav, otravuje každý den. Hlídač, který hlásí přechody, se ozve, jen když se něco změnilo.architektura · provozSELHALO79s na odmítnutíKdyž se test stane únikem
Test napsaný proto, aby odhalil únik dat, ten únik sám způsobil — a nechal po sobě smyšlený záznam v ostrých datech.pravidla · evaluace · provozSELHALO814faktů, z toho rozpornýchPaměť, která si protiřečila
Paměť nasbírala 814 „faktů“ včetně starého i nového stavu téže věci. Náhrada je po dni provozu prázdná — a to je záměr, ne chyba.paměť · vyhledávání · architekturaMÝLIL JSEM SE0z 52 pokusůZákaz je slabý nástroj
Tvrdil jsem, že zákaz chybu vyvolá. Kontrolovaný pokus to nedoložil ani jednou z 52 běhů — a ukázal, že tři původní případy nedokládaly totéž.pravidla · evaluaceSELHALO2chyby z 5 větMeloun ve čtvrtém patře
Malý model udělal z „melu na stupni 4“ meloun ve čtvrtém patře. Nejhorší na tom není, že chybuje — ale že chybuje nahodile.modely · češtinaZMĚŘENO0/6konfigurací trefilo „naposledy“A što braž mít
Šest konfigurací Whisperu na skutečné hlasovce. Ani jedna nepřepsala „naposledy“ a žádná netrefila „kdy“ — agent pak čtyři minuty hledal místo, které vzniklo přeslechnutím.čeština · modelySELHALO1 883sekcíVyhledávač vracel přípravu místo výsledku
Vyhledávač vracel přípravu místo výsledků. Korpus 1,55 MB se indexuje za 0,05 s, takže žádná cache — ta by jen tiše vracela smazaný text.vyhledávání · češtinaZMĚŘENO13,1tok/sKolik stojí jedno „ano“
Lokální 27B na Macu odpoví „ano“ za dvacet sekund. Hrdlo není výpočet, ale propustnost paměti — a to obrací tři doporučení, která jsem vyslovil.výkon · architekturaPět modelů na téže sadě 32 otázek
Stejné otázky nad skutečnými dokumenty, stejný agent; lokální modely na jednom stroji, cloudový řádek přes Codex OAuth. Sada měří i vyhledávání a volbu nástroje, ne jenom model. Nejrychlejší lokální model je zároveň jediný, který si vymyslel dokument, který neexistuje.
Čas na jednu otázku
thinkingcap 27Bhlavní73 s
MoE 35B-A3Bkomprese37 s
Fable-Fusion 711uncensored100 s
gemma 4 31Bsrovnávací106 s
GPT-5.6-solcloud12 s
Chyby · ze 32 otázek
thinkingcap 27Bhlavní32/32 · bez chyby
MoE 35B-A3Bkomprese30/32 · 2 chyby
Fable-Fusion 711uncensored32/32 · bez chyby
gemma 4 31Bsrovnávací28/32 · 4 chyby
GPT-5.6-solcloud32/32 · bez chyby
zobrazit jako tabulku
| Model | Prošlo | Čas/otázku |
|---|---|---|
| thinkingcap 27B | 32/32 | 73 s |
| MoE 35B-A3B | 30/32 | 37 s |
| Fable-Fusion 711 | 32/32 | 100 s |
| gemma 4 31B | 28/32 | 106 s |
| GPT-5.6-sol | 32/32 | 12 s |