# agent_hal Agent de contrôle système complet et d'édition de code/fichiers. Remplace et étend `agent_debian` avec des capacités supplémentaires : édition avancée de fichiers, git, SSH distant, fetch web, todo list. Dispose également d'une surveillance proactive disque/RAM. ## Rôle HAL gère **ce serveur** (et les machines distantes via SSH) pour toute tâche système, devops ou édition de code. Pour l'automatisation multi-serveurs, utiliser `agent_ansible`. Pour déployer de nouveaux agents, utiliser `agent_deploy`. ## Installation ```bash cd /opt/agent_hal python3 -m venv venv source venv/bin/activate pip install -r requirements.txt systemctl enable --now agent_hal ``` ## Skills disponibles | Skill | Description | |-------|-------------| | `sysinfo` | CPU, RAM, disque, uptime | | `apt` | Gestion des paquets (install, remove, update, upgrade, search) | | `systemd` | Contrôle des services (start, stop, restart, status, enable) | | `cron` | Gestion des tâches cron (list, add, remove, clear) | | `process` | Liste, kill, surveillance des processus | | `network` | Interfaces, scan réseau, ping, traceroute, DNS, ports, firewall | | `user` | Gestion des utilisateurs et groupes | | `container` | Gestion Docker/LXC (ps, start, stop, logs, exec, stats) | | `journal` | Consultation des logs systemd (journalctl) | | `filesystem` | Lecture, écriture, édition, recherche de fichiers (`read`, `write`, `edit`, `multiedit`) | | `git` | Opérations git (status, log, diff, add, commit, push, pull, clone, branch) | | `ssh` | Exécution de commandes sur une machine distante + transfert de fichiers (`COPY`) | | `shell` | Commandes bash directes (fallback) | | `script` | Bibliothèque de scripts bash (save/list/show/edit/exec/run/delete) | | `web_fetch` | Récupérer le contenu d'une URL HTTP/HTTPS | | `todo` | Liste de tâches en mémoire (add, list, done, delete, clear) | | `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 | ## Scan réseau ``` "Liste les machines connectées au réseau" → SKILL:network ARGS:scan 192.168.7.0/24 ``` Utilise nmap (ping scan) en priorité, sinon arp-scan, sinon table ARP. La détection du subnet est automatique si non précisé. ## Bibliothèque de scripts Les scripts bash sont stockés dans `/opt/agent_hal/scripts/`. Toujours créés via `SKILL:script ARGS:save`, jamais via `filesystem write`. Variables disponibles dans les scripts : `$MQTT_BROKER`, `$MQTT_REPLY_TOPIC`, `$AGENT_ID` ```bash # Exemple d'envoi de résultat depuis un script mosquitto_pub -h "$MQTT_BROKER" -t "$MQTT_REPLY_TOPIC" -m "résultat" ``` ## 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` ## Surveillance proactive Toutes les 5 minutes : - **Disque** : alerte si un volume dépasse 85% - **RAM** : alerte si la mémoire utilisée dépasse 90% ## Configuration `config/config.json` : ```json { "agent_id": "hal", "xmpp": { "jid": "hal@xmpp.ovh", "password": "...", "admin_jid": "sylvain@xmpp.ovh", "muc_room": "agents@muc.xmpp.ovh", "use_omemo": true }, "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", "code": "qwen2.5-coder:7b", "cloud": "gpt-oss:120b-cloud" }, "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_hal.py — Point d'entrée skills/ — 20 skills scripts/ — Scripts bash persistants config/ — Configuration et system prompt agent_hal.service — Unit systemd ```