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

120 lines
3.8 KiB
Markdown

# 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
```bash
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` :
```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
```