À propos du projet
Adrastea est un projet Python sous licence MIT (3.10+) qui propose une architecture de « moteur dual symbiotique » pour l'orchestration autonome de tâches. Son idée centrale est de répartir le travail entre une couche d'exécution prévisible et une couche de raisonnement qui n'intervient qu'en cas de problème.
**Système Alpha — moteur d'exécution déterministe**
Alpha est décrit comme le processus hôte qui démarre en premier. Il gère le cycle de vie et l'amorçage, puis vérifie et stabilise son environnement avant de lancer Beta. Ses responsabilités incluent un ordonnanceur de tâches qui distribue des scripts locaux, des binaires et des définitions de tâches, ainsi qu'un exécuteur de programmes locaux qui gère les E/S standard, la journalisation des erreurs et la durée de vie des processus, avec un accent sur l'exécution reproductible.
Un planificateur RL guide les séquences de tâches à l'aide de fonctions de score liées aux résultats tels que la latence, les codes de sortie, l'utilisation des ressources et la validité des sorties, et utilise des heuristiques de recherche de chemin pour choisir les branches d'exécution basées sur des poids historiques et ajustés. Alpha se connecte également à un runtime d'inférence local (Ollama sur `http://127.0.0.1:11434`) pour des opérations hors ligne à faible surcharge, telles que l'analyse syntaxique, l'extraction de format et l'analyse textuelle de base.
**Système Beta — moteur de décision et de raisonnement probabiliste**
Beta est lancé par Alpha après la stabilisation et agit comme la couche de décision pour les problèmes non déterministes. Il surveille la télémétrie d'Alpha, les métriques de santé et la progression des tâches, et intervient lorsqu'Alpha rencontre des exceptions non gérées, une dérive de l'environnement, des états d'échec répétitifs ou des boucles d'exécution. Beta est également responsable de l'ajustement des poids de récompense et de pénalité utilisés par le planificateur RL d'Alpha, redirigeant ainsi l'exécution vers des chemins plus productifs.
Beta exécute une boucle autonome avec quatre modes définis : idle/observe (surveillance passive), triage & unstick (diagnostic des conditions de blocage), optimize (suppression des redondances dans les chemins d'exécution terminés), et discover & innovate (hypothèses de nouvelles séquences de tâches et objectifs). Il s'intègre aux serveurs Model Context Protocol (MCP) pour les outils externes et le contexte en direct, et peut consulter des LLM de pointe ou externes pour le raisonnement profond, les décisions stratégiques, la génération de code et le dépannage.
**Communication inter-processus**
Alpha et Beta fonctionnent comme des processus concurrents communiquant via un canal bidirectionnel à faible latence tel que des sockets de domaine, des pipes nommés ou un bus de messages, transportant des enveloppes JSON structurées ou Protocol Buffer. Les signaux de contrôle documentés incluent `SIG_SPAWN`, `SIG_HEARTBEAT`, `SIG_SLEEP`, `SIG_WAKE`, `SIG_TELEMETRY`, `SIG_STUCK`, `SIG_INTERRUPT`, `SIG_DISPATCH`, `SIG_MUTATE` et `SIG_TUNE_WEIGHTS`. Ensemble, ils couvrent l'amorçage des processus, les pings de présence, les transitions sommeil/réveil, le rapport de résultats, la notification d'état bloqué, l'avortement des tâches, l'injection de file d'attente, la mutation de paramètres en cours et les mises à jour des poids RL.
**Mode Keep-alive et sommeil prolongé**
Un coordinateur `KeepAliveProcess` permet au système de dormir pendant des périodes prolongées pour réduire l'utilisation du CPU, de la mémoire et des tokens, tout en maintenant actif le serveur TCP IPC d'Alpha sur `127.0.0.1:8765`, les canaux clients et les surveillants de `DIRECTIVES.txt`. Le routage des signaux pour le heartbeat, le réveil, le sommeil et le dispatch est conçu pour répondre rapidement ; les sous-processus Beta et les exécuteurs de tâches en arrière-plan restent supervisés et sont relancés s'ils se terminent inopinément, et les directives entrantes ou les signaux de dispatch réveillent le système immédiatement plutôt que d'attendre la minuterie de sommeil.
**CLI**
Le README documente des commandes telles que `python -m adrastea.cli keepalive --sleep-interval 300`, `ping`, `sleep --duration 600` et `wake`. Les prérequis mentionnés sont un serveur Ollama local (avec des modèles tels que `qwen3-coder:30b` ou des modèles d'instruction plus légers), une configuration de client MCP, un runtime d'exécution local tel que PowerShell, Bash, Python ou Node, et un transport asynchrone inter-processus. Notez que le README décrit l'intention architecturale et inclut une formulation « rudimentaire » pour le keep-alive ; aucun benchmark ni chiffre de performance n'est fourni, les comportements décrits doivent donc être traités comme des objectifs de conception du projet plutôt que comme des résultats mesurés. Les contributions sont bienvenues via fork, branche de fonctionnalité et pull request contre `main`.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.