README : ajout commandes contrôle, queue, rapport journalier
This commit is contained in:
@@ -1,13 +1,31 @@
|
|||||||
# Agent2_Debian13 — Spécialiste Debian
|
# Agent2_Debian13 — Spécialiste Debian
|
||||||
|
|
||||||
Agent spécialisé dans l'administration de systèmes Debian. Reçoit ses tâches d'agent1 via MQTT et peut aussi être contacté directement par l'utilisateur via XMPP.
|
Agent spécialisé dans l'administration de systèmes Debian. Reçoit ses tâches d'agent1 via MQTT (file d'attente FIFO persistante) et peut aussi être contacté directement par l'utilisateur via XMPP.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Rôle
|
## Rôle
|
||||||
|
|
||||||
- Administration système Debian (paquets, services, réseau, sécurité)
|
- Administration système Debian (paquets, services, réseau, sécurité)
|
||||||
- Exécution de commandes shell sur le système hôte
|
- Exécution de commandes shell sur le système hôte
|
||||||
|
- File d'attente SQLite : aucune tâche perdue même en cas de pause ou de redémarrage
|
||||||
- Rapporte les résultats à agent1 via MQTT
|
- Rapporte les résultats à agent1 via MQTT
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Commandes de contrôle (via agent1)
|
||||||
|
|
||||||
|
Envoyées par agent1 sur le topic `agents/agent2_debian13/control` :
|
||||||
|
|
||||||
|
| Commande XMPP (à agent1) | Effet sur cet agent |
|
||||||
|
|---|---|
|
||||||
|
| `!agentOFF agent2_debian13` | Pause — tâches en attente conservées dans queue.db |
|
||||||
|
| `!agentON agent2_debian13` | Reprise — traitement des tâches en attente |
|
||||||
|
| `!agentsOFF` | Pause (avec tous les autres agents) |
|
||||||
|
| `!agentsON` | Reprise (avec tous les autres agents) |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Skills disponibles
|
## Skills disponibles
|
||||||
|
|
||||||
| Trigger | Description |
|
| Trigger | Description |
|
||||||
@@ -19,6 +37,8 @@ Agent spécialisé dans l'administration de systèmes Debian. Reçoit ses tâche
|
|||||||
| `RECALL: <clé>` | Récupération mémoire |
|
| `RECALL: <clé>` | Récupération mémoire |
|
||||||
| `MQTT_PUBLISH: <topic> \| <msg>` | Publication MQTT |
|
| `MQTT_PUBLISH: <topic> \| <msg>` | Publication MQTT |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Exemples de tâches
|
## Exemples de tâches
|
||||||
|
|
||||||
```
|
```
|
||||||
@@ -29,9 +49,58 @@ EXEC: df -h
|
|||||||
EXEC: docker ps -a
|
EXEC: docker ps -a
|
||||||
```
|
```
|
||||||
|
|
||||||
## Déploiement via agent2_deploy (recommandé)
|
---
|
||||||
|
|
||||||
Depuis agent1, demander à agent2_deploy de déployer cet agent :
|
## File d'attente (`queue.db`)
|
||||||
|
|
||||||
|
Chaque tâche MQTT reçue est immédiatement enregistrée en base avec son horodatage avant d'être exécutée.
|
||||||
|
|
||||||
|
| Champ | Description |
|
||||||
|
|---|---|
|
||||||
|
| `received_at` | Heure de réception du message MQTT |
|
||||||
|
| `started_at` | Heure de début d'exécution |
|
||||||
|
| `completed_at` | Heure de fin |
|
||||||
|
| `task` | Contenu de la tâche |
|
||||||
|
| `status` | `pending` / `running` / `success` / `error` |
|
||||||
|
| `result` | Résultat (tronqué à 2000 chars) |
|
||||||
|
| `duration_s` | Durée d'exécution en secondes |
|
||||||
|
|
||||||
|
Les tâches en status `pending` lors d'une pause sont reprises au `resume`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Rapport journalier
|
||||||
|
|
||||||
|
À l'heure configurée dans `reports_schedule.json`, agent1 envoie `{"command": "report"}` sur `agents/agent2_debian13/control`. L'agent répond sur `agents/daily_report` avec :
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"agent": "agent2_debian13",
|
||||||
|
"timestamp": "2026-03-08T22:00:00",
|
||||||
|
"uptime_s": 86400,
|
||||||
|
"paused": false,
|
||||||
|
"tasks_today": 12,
|
||||||
|
"success": 11,
|
||||||
|
"errors": 1,
|
||||||
|
"avg_duration_s": 4.2,
|
||||||
|
"last_error": "...",
|
||||||
|
"pending": 0
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Plage horaire (`work_hours` dans agents_registry.json)
|
||||||
|
|
||||||
|
Agent1 vérifie cette plage avant chaque délégation. Hors plage → tâche refusée avec message d'indisponibilité.
|
||||||
|
|
||||||
|
```json
|
||||||
|
"work_hours": { "start": "07:00", "end": "23:00", "days": ["mon","tue","wed","thu","fri","sat","sun"], "enabled": true }
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Déploiement via agent2_deploy (recommandé)
|
||||||
|
|
||||||
```
|
```
|
||||||
# Via XMPP avec sylvain@xmpp.ovh :
|
# Via XMPP avec sylvain@xmpp.ovh :
|
||||||
@@ -39,51 +108,18 @@ Depuis agent1, demander à agent2_deploy de déployer cet agent :
|
|||||||
# Suivre le guide interactif
|
# Suivre le guide interactif
|
||||||
```
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Déploiement manuel
|
## Déploiement manuel
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Prérequis
|
|
||||||
apt-get install -y python3 python3-pip python3-venv git
|
apt-get install -y python3 python3-pip python3-venv git
|
||||||
|
|
||||||
# Cloner et installer
|
|
||||||
git clone https://git.piaf.im/sylvain/agent2_debian13.git /opt/agent2_debian13
|
git clone https://git.piaf.im/sylvain/agent2_debian13.git /opt/agent2_debian13
|
||||||
cd /opt/agent2_debian13
|
cd /opt/agent2_debian13
|
||||||
python3 -m venv venv
|
python3 -m venv venv
|
||||||
venv/bin/pip install slixmpp paho-mqtt requests ddgs beautifulsoup4 chromadb
|
venv/bin/pip install slixmpp paho-mqtt requests ddgs beautifulsoup4 chromadb
|
||||||
|
|
||||||
# Configurer
|
|
||||||
nano config/config.json
|
nano config/config.json
|
||||||
|
systemctl daemon-reload && systemctl enable agent2_debian13 && systemctl start agent2_debian13
|
||||||
# Service systemd
|
|
||||||
cat > /etc/systemd/system/agent2_debian13.service << 'EOF'
|
|
||||||
[Unit]
|
|
||||||
Description=Agent2 Debian13
|
|
||||||
After=network.target mosquitto.service
|
|
||||||
Wants=mosquitto.service
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=simple
|
|
||||||
WorkingDirectory=/opt/agent2_debian13
|
|
||||||
ExecStart=/usr/bin/python3 /opt/agent2_debian13/agent2_debian13.py
|
|
||||||
Restart=always
|
|
||||||
RestartSec=5
|
|
||||||
StandardOutput=journal
|
|
||||||
StandardError=journal
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
EOF
|
|
||||||
|
|
||||||
systemctl daemon-reload
|
|
||||||
systemctl enable agent2_debian13
|
|
||||||
systemctl start agent2_debian13
|
|
||||||
```
|
|
||||||
|
|
||||||
## Déploiement depuis le dépôt git (sur la machine cible)
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git clone https://git.piaf.im/sylvain/agent2_deploy.git /tmp/agent2_deploy
|
|
||||||
python3 /tmp/agent2_deploy/deploy.py --local agent2_debian13
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Configuration (`config/config.json`)
|
## Configuration (`config/config.json`)
|
||||||
|
|||||||
Reference in New Issue
Block a user