1c951f46f1b898d366b6b01ec2438c931f89e8a2
Agent1 — Orchestrateur XMPP/MQTT
Agent principal du réseau. Il reçoit les instructions de l'utilisateur (via XMPP ou CLI MQTT), les analyse avec un LLM, et délègue les tâches aux agents spécialisés.
Commandes XMPP (sylvain@xmpp.ovh → agent1)
Contrôle des agents
| Commande | Effet |
|---|---|
!agentsOFF |
Agent1 en veille + pause de tous les agents |
!agentsON |
Agent1 actif + reprise de tous les agents |
!agentOFF <nom> |
Pause d'un agent spécifique (ex: !agentOFF agent2_debian13) |
!agentON <nom> |
Reprise d'un agent spécifique |
!agentOFF agent1 |
Agent1 en veille uniquement (les autres agents continuent) |
!agentON agent1 |
Agent1 sort de veille |
En mode veille, agent1 reste connecté XMPP et répond uniquement aux commandes
!agentON.
Affichage des configurations
| Commande | Effet |
|---|---|
!reports |
Afficher reports_schedule.json (horaires des rapports) |
!tasks |
Afficher tasks_schedule.json (tâches planifiées) |
!blackout |
Afficher blackout_hours.json (plages d'inactivité) |
Divers
| Commande | Effet |
|---|---|
!reset |
Réinitialiser l'historique de conversation |
Skills LLM (utilisables en XMPP ou CLI)
Ces commandes sont générées par le LLM en réponse à une instruction en langage naturel.
Délégation et planification
| Trigger | Syntaxe | Description |
|---|---|---|
DELEGATE: |
DELEGATE: <agent> | <tâche> |
Délègue une tâche à un agent (avec vérif. plage horaire + blackout) |
PLAN: |
PLAN: <agent>|<tâche> ;; <agent>|<tâche> |
Exécute plusieurs tâches en séquence |
SCHEDULE: |
SCHEDULE: <cron> | <agent> | <tâche> |
Planifie une tâche récurrente |
PLAN_LIST: |
PLAN_LIST: |
Lister les tâches planifiées |
PLAN_CANCEL: |
PLAN_CANCEL: <id> |
Annuler une planification |
Expressions cron supportées :
daily 03:00 → tous les jours à 03h00
every 6h → toutes les 6 heures
every 30min → toutes les 30 minutes
weekly lun 08:00 → chaque lundi à 08h00
Rapports
| Trigger | Syntaxe | Description |
|---|---|---|
REPORT: |
REPORT: [agent] |
Rapport des 20 dernières exécutions |
REPORT_ERRORS: |
REPORT_ERRORS: [agent] |
Rapport des 20 dernières erreurs |
DAILY_REPORT: |
DAILY_REPORT: [agent] |
Rapport journalier compilé (stats de tous les agents) |
Mémoire et recherche
| Trigger | Syntaxe | Description |
|---|---|---|
SEARCH: |
SEARCH: <requête> |
Recherche DuckDuckGo |
READ: |
READ: <url> |
Lecture de page web |
REMEMBER: |
REMEMBER: <clé> | <valeur> |
Mémoriser une information (SQLite) |
RECALL: |
RECALL: <clé> |
Récupérer une information mémorisée |
MQTT direct
| Trigger | Syntaxe | Description |
|---|---|---|
MQTT_PUBLISH: |
MQTT_PUBLISH: <topic> | <message> |
Publier un message MQTT |
MQTT_SUBSCRIBE: |
MQTT_SUBSCRIBE: <topic> |
Écouter un topic MQTT |
CLI (cli.py)
python3 /opt/agent/cli.py # parler à agent1
python3 /opt/agent/cli.py agent2_debian13 # accès direct à un agent
python3 /opt/agent/cli.py --plans # voir les planifications
Commandes dans la CLI :
| Commande | Effet |
|---|---|
/reset |
Réinitialiser la conversation |
/plans |
Lister les tâches planifiées |
/report |
Rapport des dernières exécutions |
/errors |
Rapport des erreurs |
/agent <nom> |
Basculer vers un autre agent |
/quit |
Quitter la CLI |
Fichiers de configuration
| Fichier | Rôle | Modifié par |
|---|---|---|
config/config.json |
Paramètres XMPP, MQTT, Ollama | Utilisateur |
config/agents_registry.json |
Registre des agents (auto-mis à jour) | Agent1 au démarrage des agents |
config/blackout_hours.json |
Plages horaires d'inactivité totale | Utilisateur directement |
config/reports_schedule.json |
Horaires de sollicitation des rapports | Agent1 (avec confirmation) |
config/tasks_schedule.json |
Tâches planifiées par agent | Agent1 (avec confirmation) |
blackout_hours.json
Aucun agent ne travaille pendant ces plages, quelle que soit la planification :
[
{ "start": "02:00", "end": "05:00", "label": "maintenance nuit", "enabled": true }
]
reports_schedule.json
{
"agents": {
"agent2_debian13": { "report_time": "22:00", "enabled": true },
"agent2_ansible": { "report_time": "22:05", "enabled": true },
"agent2_deploy": { "report_time": "22:10", "enabled": true }
},
"daily_report_time": "22:30",
"daily_report_enabled": true
}
tasks_schedule.json
{
"tasks": [
{
"agent": "agent2_debian13",
"task": "apt update && apt upgrade -y",
"cron": "weekly lun 03:00",
"enabled": true
}
]
}
agents_registry.json — champ work_hours
Plage horaire de travail par agent (vérifiée avant chaque DELEGATE) :
"work_hours": {
"start": "07:00",
"end": "23:00",
"days": ["mon","tue","wed","thu","fri","sat","sun"],
"enabled": true
}
Topics MQTT
| Topic | Direction | Rôle |
|---|---|---|
agents/agent1/inbox |
CLI / agents → agent1 | Tâches pour agent1 |
agents/<name>/inbox |
Agent1 → agent2_* | Tâches pour les agents |
agents/<name>/control |
Agent1 → agent2_* | Pause / Resume / Report |
agents/daily_report |
Agent2_* → agent1 | Rapports journaliers |
agents/errors |
Agent2_* → agent1 | Erreurs (notif XMPP) |
agents/register |
Agent2_* → agent1 | Enregistrement au démarrage |
agents/status/<name> |
Agent2_* → agent1 | Statut en ligne / hors ligne (LWT) |
agents/cli/outbox |
Agent1 → CLI | Réponses vers la CLI |
agents/scheduler/notifications |
Scheduler → agent1 | Notifications planificateur |
Lancer les agents
# Agent1
python3 /opt/agent/agent1.py > /tmp/agent1.log 2>&1 &
# Agents spécialisés
python3 /opt/agent2_debian13/agent2_debian13.py > /tmp/agent2_debian13.log 2>&1 &
python3 /opt/agent2_ansible/agent2_ansible.py > /tmp/agent2_ansible.log 2>&1 &
python3 /opt/agent2_deploy/agent2_deploy.py > /tmp/agent2_deploy.log 2>&1 &
# Via systemd
systemctl start agent agent2_debian13 agent2_ansible agent2_deploy
Logs
journalctl -u agent -f
journalctl -u agent2_debian13 -f
Déploiement manuel
apt-get install -y python3 python3-pip python3-venv git mosquitto
git clone https://git.piaf.im/sylvain/agent1.git /opt/agent
cd /opt/agent
python3 -m venv venv
venv/bin/pip install slixmpp paho-mqtt requests ddgs beautifulsoup4 chromadb apscheduler
# Configurer
cp config/config.json.example config/config.json # adapter les valeurs
# Service systemd
cp agent.service /etc/systemd/system/
systemctl daemon-reload && systemctl enable agent && systemctl start agent
Description
Languages
Python
100%