- system_prompt: section scripts bash (commandes interdites, mosquitto_pub, bonnes pratiques) - script.py: nettoyage guillemets échappés à la sauvegarde - network.py: nouvelle action scan (nmap/arp-scan/arp fallback), auto-détection subnet - cron.py: _get_current_crontab() évite d'écrire "(aucune sortie)" dans le crontab - README créé Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
4.2 KiB
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
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
# 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 :
{
"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