Retour à l'accueil

Agent IA Console "Botinok" : Automatisation des Serveurs Linux

Découvrez "Botinok" — un agent IA console local pour Linux qui automatise les tâches d'administration via SSH, en utilisant Ollama et un VRAM minimum. Idéal pour DevOps et les administrateurs système.

Agent IA Console "Botinok" pour Serveurs Linux
Advertisement 728x90

Bootinok : Un agent IA console pour l'automatisation économe en ressources des serveurs Linux

"Bootinok" (dérivé du mot russe signifiant "botte" ou "chaussure") est un agent IA console innovant, conçu pour automatiser efficacement les tâches routinières sur les serveurs Linux. Destiné aux spécialistes disposant de ressources informatiques limitées, notamment en VRAM, cet outil intègre la puissance des grands modèles de langage (LLM) directement dans le terminal, éliminant le besoin d'interfaces graphiques complexes ou de services d'arrière-plan gourmands en ressources. Il constitue un assistant indispensable pour les administrateurs, les ingénieurs DevOps et les développeurs qui nécessitent des diagnostics rapides et une gestion d'infrastructure via SSH.

Au-delà des solutions lourdes : La philosophie Bootinok

Des années d'expérience avec les serveurs Linux montrent que, malgré l'évolution des outils, de la configuration manuelle à Kubernetes, les routines administratives persistent. Avec l'avènement des LLM, la possibilité est apparue de déléguer des tâches comme l'analyse de journaux ou la génération de configurations à des modèles. Cependant, le fait de basculer constamment entre le terminal et l'interface web d'un chatbot crée un inconvénient majeur.

Le marché propose des agents IA comme OpenClaw, qui offrent des solutions d'automatisation complètes. OpenClaw, par exemple, est un puissant agent auto-hébergé doté d'une architecture à quatre couches, axé sur l'automatisation du quotidien (e-mail, calendrier, réservations) et fonctionnant comme un démon 24h/24 et 7j/7 avec une interface de messagerie. Bien qu'efficace pour les tâches d'entreprise et les assistants personnels, une telle approche s'est avérée excessive et gourmande en ressources pour l'administration système sur un serveur.

Google AdInline article slot

L'interaction avec un serveur via SSH, basée sur la console, exige une approche différente. Il faut un outil qui ne soit pas un service constamment en cours d'exécution, qui ne nécessite pas d'architecture complexe et qui ne consomme pas de ressources excessives. "Bootinok" a été créé précisément dans ce but : c'est une application normale qui se lance au besoin, exécute une tâche, puis se termine. Cette approche est similaire à la façon dont les développeurs utilisent les assistants IA dans les IDE (par exemple, Cursor), où l'IA participe activement au processus de développement mais ne fonctionne pas en continu en arrière-plan. Bootinok transpose ce concept à la console :

# Exemple d'utilisation : configuration d'un environnement sur un serveur
ssh [email protected]
botinok "Configurez Docker, Nginx et le déploiement pour mon application Flask"
# ... interagit avec l'agent pendant qu'il exécute la tâche ...
# Une fois le travail terminé, l'agent se ferme

Bootinok nécessite Ollama, qui peut être installé localement, sur un serveur voisin ou sur une station de travail puissante. La connexion à Ollama est configurée interactivement via --wizard, simplifiant la configuration initiale et la vérification de la disponibilité des modèles. Cette architecture rend Bootinok idéal pour :

  • Les administrateurs qui ont besoin de diagnostics rapides et de résolution de problèmes sur un serveur via SSH.
  • Les ingénieurs DevOps pour la configuration de pipelines CI/CD ou le travail avec des configurations.
  • Les développeurs qui ont besoin de déployer rapidement un environnement sur une nouvelle machine.
  • Les passionnés disposant de matériel limité, leur permettant d'utiliser une instance Ollama puissante sur un ordinateur et d'exécuter le client léger sur un autre.

Outillage de l'agent : Appel de fonction et capacités clés

Bootinok exploite un mécanisme complet d'appel de fonction (Function Calling) via l'API Ollama, offrant à l'agent l'accès à une gamme d'outils spécialisés pour interagir avec le système et le réseau. Cela permet au LLM non seulement de générer du texte, mais aussi d'effectuer des actions spécifiques, d'analyser des données et de récupérer des informations à jour.

Google AdInline article slot

Liste des outils principaux :

  • 🌐 Réseau et Recherche :

* web_search : Recherche d'informations via DuckDuckGo en utilisant lynx.

* open_url : Extrait le contenu des pages web.

Google AdInline article slot
  • 🛠 Outils Système :

* file_system : Navigue, recherche, lit des fichiers et exécute des commandes grep.

* shell_exec : Exécute des commandes bash arbitraires (nécessite une permission explicite --dangerous).

* journal : Analyse les journaux systemd via journalctl.

  • 💻 Développement :

* code_editor : Outils pour lire, écrire et modifier du code.

* github : Opérations de base sur les dépôts (cloner, log, status, diff).

  • 📚 Compétences et Expérience :

* skills : Charge les instructions et les invites depuis le dépôt ClawHub.

* experience : Une base de données d'expériences positives et négatives pour améliorer la prise de décision de l'agent.

Approche de la recherche web : Pourquoi Lynx ?

Une attention particulière a été portée à l'implémentation des outils réseau, notamment web_search et open_url. Au lieu des bibliothèques Python standard ou des moteurs de navigateur lourds, Bootinok utilise le navigateur de texte console lynx. Cette solution peut sembler non conventionnelle, mais elle est motivée par plusieurs avantages clés pour un scénario de serveur :

Raisons du choix de lynx :

  • Léger et Accessible : lynx est préinstallé dans la plupart des distributions Linux, ne nécessite aucune dépendance supplémentaire et consomme un minimum de ressources.
  • Rapidité : L'absence de rendu JavaScript, CSS, d'images et de polices garantit une récupération rapide du contenu textuel.
  • Texte Propre : Le paramètre -dump permet à lynx de produire un contenu textuel structuré sans balises HTML, ce qui simplifie considérablement son analyse ultérieure par le LLM.
  • Compatibilité SSH : Parfaitement adapté au travail à distance sur un serveur où une interface graphique n'est pas disponible.

Exemple d'appel web_search via 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)

Limitations et solutions de lynx :

| Problème | Exemple | Solution |

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

| Pas de JavaScript | Les sites SPA (React, Vue) peuvent apparaître vides | L'agent reconnaît le contenu vide et le signale |

| Captchas | DDG bloque parfois | Repli sur une autre URL, réessai avec un délai d'attente |

| Pas d'autorisation | Les pages restreintes sont inaccessibles | Limitation de conception : ne fonctionne qu'avec du contenu public |

| Perte de contexte visuel | Les tableaux, diagrammes deviennent du texte brut | L'agent s'adapte au format texte |

| Taille du contenu | Troncation à N caractères | Le dump complet est enregistré dans la session ; l'agent peut le lire si nécessaire |

Ce compromis entre simplicité, rapidité et fonctionnalité fait de lynx un choix optimal pour un accès rapide à la documentation, aux articles et aux READMEs GitHub dans un environnement console.

Système de fichiers : Les "yeux et les mains" de l'agent sur le serveur

L'outil file_system est central à l'interaction de l'agent avec le système d'exploitation du serveur. Il permet à Bootinok de comprendre l'état du système de fichiers, de diagnostiquer les problèmes et de récupérer les informations nécessaires. Toutes les actions de file_system sont en lecture seule par défaut, garantissant un niveau de sécurité élevé.

Actions clés de file_system :

  • list : Affiche une liste de fichiers et de répertoires avec leur taille et leur date de modification. Exemple : list /etc/nginx.
  • search : Recherche des fichiers par masque. Exemple : search /var/log "*.log".
  • grep : Recherche du texte dans les fichiers. Exemple : grep /etc "server_name" "*.conf".
  • read : Lit le contenu d'un fichier avec prise en charge de la pagination pour les fichiers volumineux. Exemple : read /var/log/syslog offset=0 limit=500.
  • info : Récupère les métadonnées d'un fichier. Exemple : info /etc/passwd.

De plus, il existe un puissant ensemble de commandes inspect qui fournissent des informations système agrégées :

inspect command="fs.tree" path="/var/www" depth=3       # Arborescence des répertoires
inspect command="du.top_files" path="/var/log"          # Fichiers les plus volumineux
inspect command="du.dir_total" path="/home/user"        # Taille du dossier
inspect command="sys.meminfo"                           # Infos mémoire de /proc/meminfo
inspect command="sys.disk_free" path="/"                # Espace disque libre
inspect command="proc.list"                             # Liste des processus en cours
inspect command="proc.info" pid=1234                    # Détails d'un processus spécifique
inspect command="svc.status" unit="nginx"               # Statut du service systemd
inspect command="env.os_release"                        # Version du système d'exploitation

Un scénario de diagnostic typique utilisant ces outils pourrait ressembler à ceci :

botinok "Déterminez pourquoi Nginx renvoie une erreur 502"

# L'agent peut automatiquement effectuer les étapes suivantes :
# 1. inspect command="svc.status" unit="nginx"        # Vérifier l'état du service Nginx
# 2. journal action="unit_tail" unit="nginx"          # Afficher les derniers journaux Nginx
# 3. read /etc/nginx/sites-enabled/default            # Lire le fichier de configuration Nginx
# 4. grep /var/log/nginx "error" "*.log"              # Rechercher les erreurs dans les journaux Nginx
# 5. inspect command="proc.list" | grep "php-fpm"     # Vérifier si le backend (ex: PHP-FPM) est en cours d'exécution

Cela permet à l'agent de sélectionner et d'appliquer de manière autonome les outils nécessaires pour résoudre la tâche donnée, minimisant ainsi l'intervention manuelle.

Diagnostic avec Journal : Analyse approfondie des journaux

Pour travailler avec les journaux système, Bootinok utilise un outil journal spécialisé qui interagit avec systemd-journald. C'est nettement plus efficace qu'un simple grep sur /var/log, car journalctl fournit un accès structuré aux journaux avec des capacités de filtrage par heure, priorité, unité et autres paramètres.

Actions clés de journal :

  • tail : Récupère les N dernières lignes de journaux. Exemple : tail lines=100.
  • unit_tail : Affiche les journaux pour une unité systemd spécifique. Exemple : unit_tail unit="docker" lines=200.
  • since : Filtre les journaux par heure de début. Exemple : since since="2 hours ago".
  • query : Combine divers filtres pour récupérer des journaux spécifiques. Exemple : query unit="nginx" grep="error" since="today".
  • stats : Récupère les statistiques de niveau de journalisation pour une unité spécifique sur une période donnée. Cela permet à l'agent d'évaluer rapidement l'image globale des erreurs et des avertissements.

Exemple de statistiques que l'agent peut obtenir :

{
  "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
  }
}

De telles informations détaillées permettent à l'agent non seulement de trouver des erreurs spécifiques, mais aussi d'évaluer la stabilité globale du système, en identifiant les tendances et les problèmes potentiels avant qu'ils ne s'aggravent.

Architecture et Sécurité : Aspects clés

La philosophie de Bootinok en tant qu'outil, plutôt qu'un service fonctionnant en continu, sous-tend son architecture. Cette application se lance à la demande de l'utilisateur, exécute la tâche assignée en utilisant les outils disponibles, puis se termine. Cette approche réduit considérablement la consommation de ressources système, en particulier la VRAM, car le LLM n'a pas besoin de résider constamment en mémoire.

Aspects clés de sécurité et de conception :

  • Opérations en lecture seule par défaut : La plupart des outils, tels que file_system et journal, fonctionnent en mode lecture seule, empêchant les modifications accidentelles ou malveillantes du système. La capacité d'exécuter shell_exec nécessite un drapeau --dangerous explicite.
  • Gestion contextuelle : Pour gérer de grands volumes de données (par exemple, des journaux ou des pages web), la pagination et la troncation de contenu avec un marqueur [TRUNCATED] sont utilisées. Les données complètes sont enregistrées dans la session, permettant à l'agent d'y accéder si nécessaire sans surcharger la fenêtre de contexte du LLM.
  • Dépendances minimales : La dépendance aux utilitaires console natifs comme lynx et journalctl minimise le nombre de dépendances externes et simplifie le déploiement.
  • Flexibilité d'Ollama : L'utilisation d'Ollama permet aux utilisateurs de sélectionner et d'exécuter divers modèles LLM en fonction des ressources disponibles et des tâches spécifiques, des modèles plus petits pour le travail local aux plus grands sur des serveurs distants.

Bootinok démontre comment le potentiel des LLM peut être efficacement utilisé pour automatiser des tâches d'administration système complexes et routinières, tout en maintenant le contrôle, la sécurité et une consommation minimale de ressources. C'est un outil fiable pour ceux qui valorisent l'efficacité et travaillent dans un environnement console.

Points clés à retenir

  • Bootinok est un agent IA console conçu pour automatiser les tâches sur les serveurs Linux via SSH, fonctionnant avec des ressources VRAM limitées.
  • Il fonctionne comme un outil à la demande, plutôt qu'un démon constamment actif, minimisant la consommation de ressources système.
  • Il utilise Ollama pour l'intégration des LLM et fournit une large gamme d'outils via l'appel de fonction, y compris la recherche web (via lynx), la navigation dans le système de fichiers et l'analyse des journaux systemd.
  • Il assure la sécurité grâce à des opérations en lecture seule par défaut et nécessite une confirmation explicite pour les commandes potentiellement dangereuses.
  • Il est optimisé pour les administrateurs système, les ingénieurs DevOps et les développeurs qui ont besoin d'une automatisation efficace et légère dans le terminal.

— Editorial Team

Advertisement 728x90

Lire ensuite