Concepts fondamentaux de Kova
D’Agent, Workflow et Swarm jusqu’à la persistance WAL — comprendre les composants architecturaux fondamentaux de Kova et sa philosophie de conception.
Unité d’exécution de base : Prompt + Model + Tools + Memory
Orchestre plusieurs Agents en un pipeline d’exécution ordonné
Collaboration autonome de plusieurs Agents, communication directe via le protocole A2A
Journal d’écriture anticipée + contrôle CRC32, récupération automatique après crash
Agent
L’Agent est l’unité d’exécution de base, composée des éléments suivants :
| Élément | Description |
|---|---|
| System PromptSystem PromptInvite système qui définit le rôle, les limites de capacité et les règles de comportement de l'IA. Elle est placée en première position du tableau de messages. | Définit le rôle de l’Agent, les limites de ses capacités et ses règles de comportement |
| Model | Le modèle LLM utilisé (commutable à l’exécution) |
| Tools | L’ensemble d’outils que l’Agent peut appeler |
| Memory | L’historique de conversation et l’état persistant de l’Agent |
Cycle de vie de l’Agent
graph LR
Created --> Idle
Idle --> Running
Running --> Completed
Running --> Paused
Running --> Failed
Running --> Recovering
Paused -.reprise.-> Running
Recovering -.rejouer WAL.-> Running| État | Signification |
|---|---|
| Idle | Agent créé, en attente d’une tâche |
| Running | Exécution d’une tâche en cours |
| Paused | Mis en pause manuellement, reprise possible |
| Completed | Tâche terminée |
| Failed | Échec de l’exécution (nombre de tentatives dépassé) |
| Recovering | Enregistrement WAL incomplet détecté, récupération automatique |
Boucle de décision de l’Agent
graph LR
A[Réception de la tâche / résultat de l’étape précédente] --> B[Raisonnement LLM<br/>analyse + planification]
B --> C{Un outil est-il nécessaire ?}
C -->|Yes| D[Appel de l’outil] --> E[Résultat de l’outil] --> B
C -->|No| F[Génération de la réponse finale] --> G[Renvoi du résultat]Chaque tour est écrit sur disque
Workflow
Le Workflow orchestre plusieurs Agents ou étapes en un pipeline d’exécution ordonné.
Types d’étapes
| Type | Description |
|---|---|
| Étape Agent | Déléguée à un Agent désigné pour exécution |
| Branche conditionnelle | Choisit un chemin différent selon le résultat de l’étape précédente |
| Étape parallèle | Plusieurs étapes s’exécutent simultanément |
| Étape d’attente | Attend un événement externe ou une approbation manuelle |
| Étape en boucle | Répète l’exécution jusqu’à ce qu’une condition soit satisfaite |
Transmission des données
Les données sont transmises entre les étapes via des variables de modèle :
{{input.topic}} → 工作流输入参数
{{steps.research.output}} → "research" 步骤的输出
{{steps.research.metadata}} → "research" 步骤的元数据Gestion des erreurs
Chaque étape peut configurer une stratégie d’erreur indépendante :
| Stratégie | Comportement |
|---|---|
retry | Réessaie N fois (3 par défaut, backoff exponentiel) |
skip | Ignore l’étape en échec et continue l’exécution |
abort | Termine l’ensemble du workflow |
fallback | Bascule vers une étape de secours |
SwarmSwarmMode d'intelligence collective où plusieurs agents reçoivent leurs tâches d'un coordinateur et collaborent de façon autonome, sans flux fixe prédéfini.En savoir plus → (intelligence collective)
Le mode Swarm permet à plusieurs Agents de collaborer de façon autonome, sans flux fixe prédéfini.
Fonctionnement
graph LR
U[Tâche utilisateur] --> C[Agent coordinateur]
C --> S[Décomposition en sous-tâches]
S --> R[Agent de recherche]
S --> D[Agent de codage]
S --> T[Agent de test]
R --> M[Collecte des résultats]
D --> M
T --> M
M --> O[Sortie synthétisée]Les Agents communiquent directement entre eux via le protocole A2A (Agent-to-Agent)A2AProtocole Agent-to-Agent, qui permet à plusieurs agents de communiquer directement, de déléguer des tâches et d'échanger des informations. :
{
"from": "coordinator",
"to": "researcher",
"type": "task_delegate",
"payload": {
"task": "调研 WebAssembly 在服务端的性能基准",
"constraints": {
"max_tokens": 2000,
"deadline": "5min"
}
}
}WALWALWrite-Ahead Log (journal d'écriture anticipée). Tout changement d'état est d'abord écrit dans le journal puis exécuté, garantissant une reprise après crash à partir du journal.En savoir plus → (Write-Ahead Log)
Le WAL est le mécanisme central de persistance de Kova, inspiré de la conception des systèmes de bases de données.
Processus d’écriture
graph LR
A[Changement d’état de l’Agent] --> B[Sérialisation + CRC32<br/>calcul de la somme de contrôle]
B --> C[Écriture dans le fichier WAL<br/>journal d’abord]
C --> D[Exécution de l’opération réelle]
D --> E[Marquage WAL terminé<br/>confirmation du commit]Processus de récupération
Au démarrage, le WAL est automatiquement scanné pour récupérer les opérations incomplètes :
- Enregistrements terminés —— ignorés.
- Échec du contrôle CRC32 —— marqués comme corrompus et ignorés.
- Enregistrements incomplets —— réexécutés.
Tampon circulaireRing BufferTampon circulaire : structure de stockage cyclique de taille fixe. Lorsque le pointeur d'écriture atteint la fin, il revient au début et écrase les anciennes données ; le WAL utilise un tampon circulaire de taille en puissance de 2.
Le WAL utilise un tampon circulaire dont la taille est une puissance de 2 :
- Le pointeur d’écriture revient au début lorsqu’il atteint la fin
- Les anciens enregistrements confirmés sont écrasés par les nouveaux
- Une compaction est déclenchée lorsque le tampon est plein
Modes de synchronisation
| Mode | Description | Performance | Durabilité |
|---|---|---|---|
normal | Le système d’exploitation décide quand effectuer le fsync | Élevée | Quelques secondes de données peuvent être perdues |
full | fsync à chaque écriture | Faible | Aucune perte de données |
Options de chiffrement
Dans les scénarios sensibles, le chiffrement du WAL peut être activé :
| Algorithme | Description |
|---|---|
aes-256-gcm | Chiffrement AES-256 standard |
sm4 | Algorithme national chinois SM4 |
Un contrôle d’intégrité HMAC peut également être activé pour empêcher toute altération du fichier WAL.
Ordre de verrouillage
Kova utilise en interne un ordre strict d’acquisition des verrous, éliminant fondamentalement les interblocages :
graph LR
A[Buffer Lock] --> B[Queue Lock] --> C[Transaction Lock]Prévention des interblocages à la compilation
Système d’outils
Outils intégrés
| Outil | Fonction |
|---|---|
web_search | Recherche sur Internet |
file_read | Lecture de fichiers |
file_write | Écriture de fichiers |
http_request | Envoi de requêtes HTTP |
shell_exec | Exécution de commandes Shell (environnement sandbox) |
db_query | Requêtes de base de données |
Outils MCP
Connectez des services d’outils externes via le Model Context Protocol :
# kova.toml
[[mcp.servers]]
name = "github"
command = "npx"
args = ["-y", "@modelcontextprotocol/server-github"]
env = { GITHUB_PERSONAL_ACCESS_TOKEN = "ghp_xxx" }
[[mcp.servers]]
name = "postgres"
command = "npx"
args = ["-y", "@modelcontextprotocol/server-postgres"]
env = { DATABASE_URL = "postgres://..." }L’Agent peut appeler les outils MCP comme s’il s’agissait d’outils intégrés.
Protocole A2A
Protocole de communication Agent-to-Agent, qui prend en charge :
- Délégation de tâches : un Agent confie une sous-tâche à un autre
- Requête d’informations : les Agents échangent directement des informations
- Notification de résultat : notification de l’initiateur une fois la tâche terminée
- Découverte de capacités : interroger ce que les autres Agents peuvent faire
Niveaux de fonctionnalités
Kova contrôle la portée de la compilation à l’aide des feature flags de Rust. Une compilation minimale ne nécessite que pure-rust, à laquelle s’ajoutent selon les besoins : serde (sérialisation), workflow (orchestration de workflows) → agent (moteur d’Agent) → swarm (intelligence collective), encrypt (chiffrement) → sm4 (cryptographie nationale chinoise) / wal-hmac (contrôle d’intégrité), etc.