Zpět na domů

Konzolový AI-agent „Botinok“: Automatizace Linuxových serverů

Zjistěte o „Botinok“ — lokálním konzolovém AI-agentovi pro Linux, který automatizuje úkoly správy prostřednictvím SSH s použitím Ollama a minimálního VRAM. Ideální pro DevOps a systémové administrátory.

Konzolový AI-agent „Botinok“ pro Linuxové servery
Advertisement 728x90

Konzolový AI agent "Botinok": Automatizace Linux serverů s minimem zdrojů

„Botinok“ představuje inovativní konzolový AI agent, vyvinutý pro efektivní automatizaci rutinních úloh na Linux serverech. Zaměřený na specialisty s omezenými výpočetními zdroji, zejména co se týče VRAM, tento nástroj umožňuje integrovat sílu velkých jazykových modelů (LLM) přímo do terminálu, čímž eliminuje potřebu složitých GUI nebo na zdroje náročných služeb běžících na pozadí. Stává se nepostradatelným pomocníkem pro administrátory, DevOps inženýry a vývojáře, kteří potřebují rychlou diagnostiku a správu infrastruktury přes SSH.

Pryč s těžkopádnými řešeními: Filozofie "Botinku"

Dlouholeté zkušenosti s Linux servery ukazují, že navzdory evoluci nástrojů od ručního nastavení po Kubernetes, rutina administrace přetrvává. S příchodem LLM se objevila možnost delegovat modelům analýzu logů nebo generování konfigurací. Nicméně neustálé přepínání mezi terminálem a webovým rozhraním chatbota vytváří značné nepohodlí.

Na trhu existují AI agenti, jako je OpenClaw, nabízející komplexní řešení pro automatizaci. OpenClaw je například výkonný self-hosted agent se čtyřvrstvou architekturou, zaměřený na automatizaci životního stylu (e-mail, kalendář, rezervace) a fungující jako démon 24/7 s rozhraním přes messengery. Pro firemní úkoly a osobní asistenty to může být efektivní, ale pro systémovou administraci na serveru se takový přístup ukázal jako nadbytečný a náročný na zdroje.

Google AdInline article slot

Pro práci s konzolí na serverech přes SSH je zapotřebí jiný přístup. Je zapotřebí nástroj, který není neustále běžící službou, nevyžaduje složitou architekturu a nespotřebovává nadměrné zdroje. „Botinok“ byl vytvořen právě s tímto cílem: je to běžná aplikace, která se spouští podle potřeby, provede úkol a ukončí se. Takový přístup je analogický tomu, jak vývojáři používají AI asistenty v IDE (například Cursor), kde se AI aktivně podílí na procesu vývoje, ale nepracuje neustále na pozadí. „Botinok“ přenáší tento koncept do konzole:

# Příklad použití: nastavení prostředí na serveru
ssh [email protected]
botinok "Nakonfiguruj docker, nginx a deploy pro mou Flask aplikaci"
# ... pracujeme s agentem, který provádí úkol ...
# Po dokončení práce se agent ukončí

Pro fungování „Botinku“ je vyžadována Ollama, která může být nainstalována lokálně, na sousedním serveru nebo na výkonné pracovní stanici. Připojení k Ollamě se konfiguruje interaktivně pomocí --wizard, což zjednodušuje počáteční nastavení a ověření dostupnosti modelů. Tato architektura činí „Botinok“ ideálním pro:

  • Administrátory, kteří potřebují rychlou diagnostiku a opravu problémů na serveru přes SSH.
  • DevOps inženýry pro nastavení CI/CD pipeline nebo práci s konfiguracemi.
  • Vývojáře, kteří potřebují rychle nasadit prostředí na novém stroji.
  • Nadšence s omezeným hardwarem, umožňující používat výkonnou Ollamu na jednom počítači a spouštět lehkého klienta na jiném.

Sada nástrojů agenta: Volání funkcí (Function Calling) a klíčové možnosti

„Botinok“ využívá plnohodnotný mechanismus volání funkcí (Function Calling) přes API Ollamy, čímž agentovi poskytuje přístup k řadě specializovaných nástrojů pro interakci se systémem a sítí. To umožňuje LLM nejen generovat text, ale také provádět konkrétní akce, analyzovat data a získávat aktuální informace.

Google AdInline article slot

Seznam hlavních nástrojů:

  • 🌐 Síť a vyhledávání:

* web_search: Vyhledávání informací přes DuckDuckGo s použitím lynx.

* open_url: Extrakce obsahu z webových stránek.

Google AdInline article slot
  • 🛠 Systémové nástroje:

* file_system: Navigace, vyhledávání, čtení souborů a provádění příkazů grep.

* shell_exec: Provádění libovolných bash příkazů (vyžaduje explicitní povolení --dangerous).

* journal: Analýza logů systemd přes journalctl.

  • 💻 Vývoj:

* code_editor: Nástroje pro čtení, zápis a modifikaci kódu.

* github: Základní operace s repozitáři (clone, log, status, diff).

  • 📚 Dovednosti a zkušenosti:

* skills: Načítání instrukcí a promptů z repozitáře ClawHub.

* experience: Databáze pozitivních a negativních zkušeností pro zlepšení rozhodování agenta.

Přístup k webovému vyhledávání: Proč Lynx?

Zvláštní pozornost je věnována implementaci síťových nástrojů, zejména web_search a open_url. Místo standardních Python knihoven nebo těžkopádných prohlížečových enginů používá „Botinok“ konzolový textový prohlížeč lynx. Toto řešení se může zdát netradiční, ale je odůvodněno několika klíčovými výhodami pro serverové prostředí:

Důvody pro volbu lynx:

  • Lehkost a dostupnost: lynx je předinstalován ve většině Linuxových distribucí, nevyžaduje další závislosti a spotřebovává minimum zdrojů.
  • Rychlost: Absence vykreslování JavaScriptu, CSS, obrázků a fontů zajišťuje vysokou rychlost získávání textového obsahu.
  • Čistý text: Parametr -dump umožňuje lynxu vypisovat strukturovaný textový obsah bez HTML tagů, což výrazně zjednodušuje jeho následné parsování LLM.
  • Práce přes SSH: Ideální pro vzdálenou práci na serveru, kde grafické rozhraní není dostupné.

Příklad volání web_search přes subprocess:

result = subprocess.run([
    "lynx", "-dump", "-number_links",
    "-display_charset=utf-8",
    f"-useragent={user_agent}",
    f"https://html.duckduckgo.com/html/?q={encoded_query}"
], capture_output=True, text=True, timeout=15)

Omezení lynx a jejich řešení:

| Problém | Příklad | Řešení |

| :------------------------- | :----------------------------------- | :---------------------------------------------------------------------- |

| Žádný JavaScript | SPA weby (React, Vue) mohou být prázdné | Agent rozpozná prázdný obsah a nahlásí to |

| Captcha | DDG někdy blokuje | Fallback na jinou URL, opakovaný pokus s timeoutem |

| Žádná autorizace | Uzavřené stránky nedostupné | Designové omezení: práce pouze s veřejným obsahem |

| Ztráta vizuálního kontextu | Tabulky, diagramy se mění v text | Agent se přizpůsobí textovému formátu |

| Velikost obsahu | Zkrácení na N znaků | Úplný dump se ukládá do relace, agent si jej může v případě potřeby přečíst |

Tento kompromis mezi jednoduchostí, rychlostí a funkčností činí lynx optimální volbou pro rychlý přístup k dokumentaci, článkům a GitHub README v konzolovém prostředí.

Souborový systém: "Oči a ruce" agenta na serveru

Nástroj file_system je klíčový pro interakci agenta s operačním systémem serveru. Umožňuje „Botinku“ porozumět stavu souborového systému, diagnostikovat problémy a získávat potřebné informace. Všechny akce file_system jsou ve výchozím nastavení pouze pro čtení (read-only), což zajišťuje vysokou úroveň bezpečnosti.

Hlavní akce file_system:

  • list: Zobrazí seznam souborů a adresářů s jejich velikostí a datem změny. Příklad: list /etc/nginx.
  • search: Vyhledávání souborů podle masky. Příklad: search /var/log "*.log".
  • grep: Vyhledávání textu uvnitř souborů. Příklad: grep /etc "server_name" "*.conf".
  • read: Čtení obsahu souboru s podporou stránkování pro velké soubory. Příklad: read /var/log/syslog offset=0 limit=500.
  • info: Získání metadat souboru. Příklad: info /etc/passwd.

Kromě toho existuje výkonná sada inspect příkazů, které umožňují získat agregované systémové informace:

inspect command="fs.tree" path="/var/www" depth=3       # Strom adresářů
inspect command="du.top_files" path="/var/log"          # Největší soubory
inspect command="du.dir_total" path="/home/user"        # Velikost složky
inspect command="sys.meminfo"                           # Informace o paměti z /proc/meminfo
inspect command="sys.disk_free" path="/"                # Volné místo na disku
inspect command="proc.list"                             # Seznam spuštěných procesů
inspect command="proc.info" pid=1234                    # Detaily konkrétního procesu
inspect command="svc.status" unit="nginx"               # Status systemd-služby
inspect command="env.os_release"                        # Verze operačního systému

Typický scénář diagnostiky s použitím těchto nástrojů může vypadat takto:

botinok "Zjisti, proč nginx vrací 502"

# Agent může automaticky provést následující kroky:
# 1. inspect command="svc.status" unit="nginx"        # Zkontrolovat status služby Nginx
# 2. journal action="unit_tail" unit="nginx"          # Prohlédnout poslední logy Nginx
# 3. read /etc/nginx/sites-enabled/default            # Přečíst konfigurační soubor Nginx
# 4. grep /var/log/nginx "error" "*.log"              # Vyhledat chyby v logách Nginx
# 5. inspect command="proc.list" | grep "php-fpm"     # Zkontrolovat, zda běží backend (například PHP-FPM)

To umožňuje agentovi samostatně vybírat a používat potřebné nástroje k řešení zadaného úkolu, čímž se minimalizuje ruční zásah.

Diagnostika s Journal: Hloubková analýza logů

Pro práci se systémovými logy používá „Botinok“ specializovaný nástroj journal, který interaguje se systemd-journald. To je mnohem efektivnější než jednoduchý grep přes /var/log, protože journalctl poskytuje strukturovaný přístup k logům s možností filtrování podle času, priority, jednotky a dalších parametrů.

Hlavní akce journal:

  • tail: Získání posledních N řádků logů. Příklad: tail lines=100.
  • unit_tail: Zobrazení logů konkrétní jednotky systemd. Příklad: unit_tail unit="docker" lines=200.
  • since: Filtrování logů podle počátečního času. Příklad: since since="2 hours ago".
  • query: Kombinace různých filtrů pro získání specifických logů. Příklad: query unit="nginx" grep="error" since="today".
  • stats: Získání statistik podle úrovní logování pro určitou jednotku za zadané období. To umožňuje agentovi rychle posoudit celkový obraz chyb a varování.

Příklad statistik, které může agent získat:

{
  "action": "stats",
  "unit": "nginx",
  "since": "1 hour ago",
  "levels": {
    "emerg": 0, "alert": 0, "crit": 0,
    "err": 12,
    "warning": 45,
    "notice": 120,
    "info": 340,
    "debug": 0
  }
}

Takto detailní informace dávají agentovi možnost nejen nacházet konkrétní chyby, ale také posuzovat celkovou stabilitu systému, odhalovat trendy a potenciální problémy před jejich eskalací.

Architektura a bezpečnost: Klíčové aspekty

Filozofie „Botinku“ jako nástroje, nikoli neustále běžící služby, je základem jeho architektury. Tato aplikace se spouští na požadavek uživatele, provede zadaný úkol s využitím dostupných nástrojů a ukončí se. Takový přístup výrazně snižuje spotřebu systémových zdrojů, zejména VRAM, jelikož LLM nemusí být neustále v paměti.

Klíčové aspekty bezpečnosti a designu:

  • Operace pouze pro čtení (read-only) ve výchozím nastavení: Většina nástrojů, jako jsou file_system a journal, pracuje v režimu čtení, čímž zabraňuje náhodným nebo škodlivým změnám v systému. Možnost spuštění shell_exec vyžaduje explicitní příznak --dangerous.
  • Kontextová správa: Pro práci s velkými objemy dat (například logy nebo webovými stránkami) se používá stránkování a zkracování obsahu s označením [TRUNCATED]. Úplná data se přitom ukládají do relace, což umožňuje agentovi se k nim v případě potřeby vrátit, aniž by přetěžoval kontextové okno LLM.
  • Minimální závislosti: Spoléhání se na nativní konzolové utility, jako jsou lynx a journalctl, minimalizuje počet externích závislostí a zjednodušuje nasazení.
  • Flexibilita Ollamy: Použití Ollamy umožňuje uživateli vybírat a spouštět různé modely LLM v závislosti na dostupných zdrojích a konkrétních úkolech, od malých modelů pro lokální práci až po větší na vzdálených serverech.

„Botinok“ demonstruje, jak lze efektivně využít potenciál LLM pro automatizaci složitých a rutinních úkolů systémové administrace, přičemž si zachovává kontrolu, bezpečnost a minimální spotřebu zdrojů. Je to spolehlivý nástroj pro ty, kteří si cení efektivity a pracují v konzolovém prostředí.

Co je důležité

  • „Botinok“ je konzolový AI agent, určený pro automatizaci úloh na Linux serverech přes SSH, fungující s omezenými zdroji VRAM.
  • Funguje jako nástroj na vyžádání, nikoli jako neustále aktivní démon, což minimalizuje spotřebu systémových zdrojů.
  • Využívá Ollamu pro integraci LLM a poskytuje širokou sadu nástrojů přes volání funkcí (Function Calling), včetně webového vyhledávání (přes lynx), navigace v souborovém systému a analýzy logů systemd.
  • Zajišťuje bezpečnost díky operacím pouze pro čtení (read-only) ve výchozím nastavení a vyžaduje explicitní potvrzení pro spuštění potenciálně nebezpečných příkazů.
  • Optimalizován pro systémové administrátory, DevOps inženýry a vývojáře, kteří potřebují efektivní a lehkou automatizaci v terminálu.

— Editorial Team

Advertisement 728x90

Číst dál