À propos du projet

Floret est un moteur Go conçu pour la construction d'agents AI interactifs pouvant utiliser des outils. Il gère la boucle de modèle et le cycle de vie complet de l'agent admis, traitant les messages canoniques, les threads, les tours, les exécutions, les outils, les approbations, les tâches, les artefacts, le contexte, les sous-agents, la récupération, l'état du fournisseur, le cache de prompts et les faits d'exécution observables. L'application hôte est responsable de l'interface utilisateur du produit, des informations d'identification, des profils de fournisseur, de l'autorisation des ressources, de la routage, de l'état de lecture, des téléchargements avant admission et des diagnostics de transport. Floret n'est explicitement pas un cadre de workflow graphique, un orchestrateur multi-agents ou une couche de persistance de produit. Les fonctionnalités clés incluent : - **Gestion durable du cycle de vie** : gère les identités de thread, de tour et d'exécution avec un journal canonique comme seule source de vérité. - **Intégration d'outils** : prend en charge les définitions d'outils locaux, les autorisations, les ressources, les effets et les résultats, y compris un outil de récupération HTTP/HTTPS sécurisé (`web_fetch`). - **Gestion du contexte** : maintient les messages canoniques, les références et les éléments de contexte, prenant en charge la compaction et la récupération. - **Passerelle de fournisseur** : abstrait les fournisseurs de modèles via un contrat `provider.Gateway`, avec des constructeurs officiels pour les fournisseurs compatibles OpenAI et DeepSeek. - **Abstraction de stockage** : fournit des interfaces de stockage opaques avec des implémentations mémoire et SQLite officielles, prenant en charge l'intégration de stockage avancée via SPI. - **Observabilité** : émet des événements d'exécution sanitisés et des projections orientées hôte pour surveiller l'exécution de l'agent. - **Sous-agents** : prend en charge les structures d'agents hiérarchiques avec des relations de thread parent-enfant explicites. - **Approbation et interaction** : gère les approbations utilisateur, les demandes d'entrée et les réponses d'interaction, y compris la gestion des secrets redactés. La limite d'exécution est définie par `runtime.Host`, qui fournit des services de cycle de vie typés pour la gestion des threads, y compris les opérations de création, de fork, de suppression, d'envoi, de réponse, d'annulation, de réessai et d'abonnement. Floret assure des lectures cohérentes via des vues canoniques et prend en charge le démarrage et la restauration coordonnés du stockage pour les environnements multi-stockage. Il comprend la gestion des métadonnées de modèle via un instantané offline de models.dev et applique une validation stricte des entrées de modèle avec des opportunités de régénération limitées pour les arguments d'outils invalides.