Files
sylvain 3575b391b6 Ajout !agentUPDATE/UPGRADE : mises à jour agents depuis git
- skills/agent_update.py : check_update (git fetch + log) et do_upgrade (git pull + systemctl restart)
- agent1.py : commandes !agentUPDATE <nom>, !agentsUPDATE, !agentUPGRADE <nom>, !agentsUPGRADE
  - _handle_agent_command retourne (handled, reply) pour gérer le self-upgrade agent1
  - !agentUPGRADE agent1 : envoie la réponse XMPP avant systemctl restart
  - !agentsUPGRADE : met à jour tous les agents puis agent1 en dernier
- agents_registry.json : ajout install_path, service_name, git_branch + entrée agent1
- README.md : documentation des nouvelles commandes
- TODO.md : tâches marquées comme terminées

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-08 15:55:31 +00:00

7.3 KiB

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.

Mises à jour git

Commande Effet
!agentUPDATE <nom> Vérifie si une mise à jour est disponible sur le dépôt git de l'agent
!agentsUPDATE Vérifie les dépôts de tous les agents enregistrés
!agentUPGRADE <nom> git pull + systemctl restart de l'agent
!agentsUPGRADE git pull + restart de tous les agents (agent1 en dernier)

!agentUPGRADE agent1 redémarre agent1 lui-même via systemd. La réponse XMPP est envoyée avant le redémarrage.

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