TERMy: deterministický terminálový asistent bez LLM

TERMy mapuje věty na příkazy přes slovník, šablony a vážené porovnání textu. Je rychlý a předvídatelný, ale umí jen popsané záměry.

5. září 2026 Martin Šuránek

TERMy řeší malou, ale častou potřebu: převést jednoduchou větu typu „vytvoř soubor test.txt“ na shellový příkaz bez čekání na vzdálený model. Není to obecný konverzační model. Je to první asistent postavený nad frameworkem NPC-Forge, jehož autor si stanovil tři omezení: žádné embeddingy, strojové učení ani LLM.

Výsledkem je deterministická NLU pipeline o přibližně 1 000 řádcích, implementovaná v Pythonu i JavaScriptu. Zpracování postupuje od nejlevnějších operací k dražším: odstranění výplňových slov, analýza sentimentu, přesná shoda, shoda se šablonou a nakonec pravděpodobnostní porovnání. Poslední stupeň kombinuje IDF, bag of words a IDF-váženou Levenshteinovu vzdálenost, aby zvládl změnu pořadí slov a překlepy.

Schopnosti jsou data, ne skryté chování modelu

NPC-Forge ukládá jednotlivé záměry v datovém formátu NDF. Záznam může obsahovat vstupní věty, odpověď, název nástroje, příkaz, režim spuštění a požadovanou úroveň oprávnění. Šablony navíc používají slovníkové značky a typované proměnné. U požadavku na vytvoření souboru tak parser hledá výraz pro akci, volitelný výraz pro soubor a povinný název odpovídající regulárnímu výrazu.

Tento návrh má pozorovatelný důsledek: přidání podpory Dockeru znamená doplnění explicitních záznamů do datasetu, ne nové trénování. Stejně tak lze předem zjistit, jaký příkaz se pro konkrétní záměr spustí. To je vhodné pro úzké a opakované úlohy, kde má předvídatelnost větší cenu než schopnost improvizovat.

Bezpečnost stojí na kvalitě pravidel

Formát obsahuje pole permission; autor doporučuje pro potenciálně destruktivní příkazy hodnotu ask. To může vytvořit jasnou schvalovací bránu před spuštěním příkazu. Není to však automatická záruka bezpečnosti. Chybná šablona, nedostatečný regulární výraz nebo nesprávně označený datasetový záznam mohou stále sestavit nechtěný příkaz. Dokumentace navíc sama připouští riziko chyby v implementaci nebo datech.

Projekt vznikl poté, co autor neuspěl s vlastním tréninkem modelů o 100 až 200 milionech parametrů a nebyl spokojený ani s latencí lokálních modelů na GPU se 4 GB VRAM. To je podstatný kontext: TERMy není pokus nahradit LLM ve všech terminálových úlohách, ale přesunout omezenou množinu známých příkazů na rychlejší deterministickou cestu.

Právě rozsah datasetu je hlavní trade-off. TERMy může reagovat rychle a konzistentně pouze na záměry a proměnné, které jeho pravidla popisují. Neznámý složitý požadavek nemá odkud odvodit. Před použitím je proto důležitější audit datasetu, escapování argumentů a permission režim než tvrzení, že nástroj „rozumí“ přirozenému jazyku.