Files
sylvain d3ca3eee68 feat: confirmations cron/systemd, renforcement script skill, éditeur de script
- base_agent: _pending_confirmations + intercepteur oui/non dans _on_xmpp_message
- cron: add/remove/clear demandent confirmation (requêtes XMPP directes)
- systemd: start/stop/restart/enable/disable/mask/unmask/daemon-reload demandent confirmation
- script: _safe_name strip toutes les extensions, extensions système interdites,
  contenu vide rejeté, nouvelle commande edit <nom> <ligne> | <contenu>
- README mis à jour

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-16 07:18:47 +00:00

3.8 KiB

agent_debian

Agent d'administration système. Gère les paquets, services, processus, fichiers, réseau, utilisateurs et conteneurs sur le serveur local. Répond aux délégations de Nexus via MQTT.

Rôle

Toutes les tâches système sur ce serveur passent par cet agent : apt install, systemctl restart, surveillance disque/RAM, consultation des logs, gestion des crons, exécution de scripts, etc.

Installation

cd /opt/agent_debian
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
systemctl enable --now agent_debian

Skills disponibles

Skill Description
apt Gestion des paquets (install, remove, update, upgrade, search)
systemd Contrôle des services (start, stop, restart, status, enable)
shell Exécution de commandes shell arbitraires
script Bibliothèque de scripts bash (save/list/show/edit/exec/run/delete)
sysinfo CPU, RAM, disque, uptime
process Liste, kill, surveillance des processus
filesystem Lecture, écriture, liste, recherche de fichiers
network Interfaces, connexions, ping, traceroute
journal Consultation des logs systemd (journalctl)
cron Gestion des tâches cron
container Gestion Docker/LXC (ps, start, stop, logs)
user Gestion des utilisateurs et groupes
agents_status Statut des agents du système
mqtt_send Publication sur un topic MQTT
mqtt_subscribe Souscription dynamique à un topic MQTT
muc_send Message dans le groupe XMPP

Bibliothèque de scripts

Les scripts bash sont stockés dans /opt/agent_debian/scripts/. Ils peuvent être créés et exécutés depuis Nexus :

# Via Nexus
/script save debian backup | #!/bin/bash\ntar -czf /tmp/backup.tgz /etc
/script run debian backup
/script schedule daily 03:00 debian backup
/script list debian

Chaque exécution envoie une notification XMPP à l'admin via Nexus.

Règles de nommage : les noms sont normalisés (extensions strip automatique, .service/.timer/.py… interdits). Le contenu doit contenir au moins une commande réelle.

Confirmations requises

Les actions suivantes demandent confirmation avant exécution (requêtes XMPP directes uniquement) :

  • cron : add, remove, clear
  • systemd : start, stop, restart, enable, disable, mask, unmask, daemon-reload

Répondre oui pour confirmer ou non pour annuler.

Surveillance proactive

L'agent monitore en arrière-plan (toutes les 5 minutes) :

  • Disque : alerte si un volume dépasse 85% d'utilisation
  • RAM : alerte si la mémoire utilisée dépasse 90%

Les alertes sont envoyées automatiquement à Nexus via MQTT.

Configuration

config/config.json :

{
  "agent_id": "debian.local",
  "xmpp": {
    "jid": "debian.local@xmpp.ovh",
    "password": "...",
    "admin_jid": "sylvain@xmpp.ovh",
    "muc_room": "agents@muc.xmpp.ovh"
  },
  "mqtt": { "host": "localhost", "port": 1883 },
  "llm": {
    "base_url": "http://192.168.7.119:11434",
    "model": "qwen3:8b",
    "temperature": 0.3
  },
  "llm_profiles": {
    "local": "qwen3:8b",
    "cloud": "gpt-oss:120b-cloud"
  },
  "use_omemo": true,
  "use_llm_coordinator": true
}

Commandes

/report   — Rapport système (uptime, RAM, disque, stats tâches)
/update   — Git pull + redémarrage du service
/status   — État de la queue de tâches
/pause    — Pause du traitement des tâches
/resume   — Reprise
/script   — Gestion de la bibliothèque de scripts bash

Fichiers

agent_debian.py       — Point d'entrée
skills/               — 16 skills système
scripts/              — Scripts bash persistants
config/               — Configuration et system prompt
agent_debian.service  — Unit systemd