8j. Orchestration Multi-Agents
Le module agent_orchestration_tool.py est le centre névralgique de la cognition distribuée du framework ECHO. Il s'appuie sur la délégation asynchrone pour coordonner de multiples agents experts dans le but de résoudre des problématiques complexes, via le protocole Delphi ou une supervision par critique itérative.
- Skill (Expertise) : Un profil d'instruction système pré-compilé et forcé. L'outil
forge_skillpermet de créer dynamiquement des experts (ex: lead_dev_rust, analyste_cyber). - Council (Conseil) : Une assemblée d'experts indépendants délibérant en plusieurs tours de parole (Table Ronde Delphi).
- Supervision : Un workflow dirigé où un agent critique évalue de manière itérative les livrables d'autres agents (Workers).
1. Table Ronde Delphi (Consult Council)
La fonction consult_council permet de convoquer entre 2 et 5 experts pour délibérer sur une question complexe. Au fil des différents tours, chaque participant prend connaissance des arguments des autres et ajuste son analyse, garantissant l'émergence d'un consensus solide et nuancé.
sequenceDiagram
participant U as User / Orchestrator
participant CC as consult_council
participant E1 as Expert 1 (Skill A)
participant E2 as Expert 2 (Skill B)
participant SY as Synthesizer (FLASH)
U->>CC: Convoque Conseil (Q, Participants, Rounds)
loop Tour 1 à N
Note over CC, E2: Délégation Parallèle (Budget Outils: 3 max/tour)
CC->>E1: Contexte (Q + Contributions N-1)
CC->>E2: Contexte (Q + Contributions N-1)
E1-->>CC: Analyse Expert 1
E2-->>CC: Analyse Expert 2
end
CC->>SY: Transcription des N Tours
SY-->>CC: Synthèse Actionnable (Consensus/Divergences)
CC-->>U: Résultat Synthétisé
Spécificités Techniques
- Parallélisme : Les appels à
delegate_to_agents'effectuent viaasyncio.gather, optimisant drastiquement les délais de réflexion. - Robustesse : Si un expert échoue lors d'un tour (Timeout/Crash), le Conseil l'ignore gracieusement avec un message de prévention et continue ses travaux.
- Limitation d'Outils : Par défaut, chaque expert dispose d'un budget réduit (
COUNCIL_EXPERT_MAX_CALLS_PER_ROUND) pour éviter la récursion infinie ou les surcoûts d'API en boucle.
2. Supervision & Critique Itérative (Supervised Workers)
Contrairement au Conseil qui est horizontal et consultatif, la fonction consult_supervised_workers est verticale et coercitive. Elle distribue des tâches spécifiques à plusieurs Workers, puis confie la validation de tous les livrables à un Critique omniscient.
stateDiagram-v2
[*] --> Delegation: Distribution des tâches
Delegation --> Evaluation: Les Workers produisent (FLASH)
state Evaluation {
[*] --> Critique
Critique --> APPROVED
Critique --> REJECTED: Feedback précis
}
Evaluation --> Consolidation: Si Verdict == APPROVED
Evaluation --> Correction: Si Verdict == REJECTED
Correction --> Evaluation: Les Workers corrigent leurs erreurs (Max Rounds)
Consolidation --> [*]: Synthèse finale (PRO)
Processus en 4 Phases
- Délégation Initiale : Chaque Worker (développeur, rédacteur, etc.) reçoit sa mission avec le contexte de l'objectif global.
- Évaluation (Critique) : Un agent de rang supérieur (généralement
MODEL_PRO) analyse l'intégralité des livrables et rend un verdict JSON strict :APPROVEDouREJECTED, en joignant un feedback ciblé par Worker défaillant. - Correction (Boucle Critique) : Si le verdict est
REJECTED, les Workers fautifs sont rappelés dans la même session (préservation du thread) pour appliquer la correction suggérée par le critique, dans la limite définie parSUPERVISOR_MAX_CORRECTION_ROUNDS. - Consolidation : Une fois tous les livrables approuvés (ou après l'épuisement des rounds de correction), une synthèse finale est produite.
3. Outils d'Administration et Purge
Les conseils et les supervisions créent de nombreux sous-threads (sessions persistantes). Le système met à disposition des outils pour éviter l'encombrement des bases de données de session :
| Outil | Description |
|---|---|
list_councils / list_supervised_tasks |
Interroge EchoStateManager pour lister les assemblées ou tâches de supervision en cours dans le chat actuel. |
close_council / close_supervised_task |
Détruit définitivement le Conseil/Supervision spécifié et purge instantanément les données contextuelles (SQLite) de tous les agents liés. Par défaut, ces fonctions sont invoquées en fin d'orchestration (flag close_on_finish=True). |