
Un moteur de recherche d'espaces d'états générique basé sur l'IA, validé d'abord sur des tests de pénétration autonomes.
Cairn est un moteur de résolution de problèmes à usage général.
Il ne définit ni rôles, ni workflows. Étant donné une origine et un objectif, il cherche un chemin à travers un espace d'états inconnu.
Le test d'intrusion IA est l'un de ces problèmes — et il est éprouvé.
Le test d'intrusion est fondamentalement une recherche dirigée à travers un espace d'états quasi infini :
Cette structure n'est pas propre au test d'intrusion. La recherche de vulnérabilités, la preuve mathématique, les défis CTF — tout problème avec un point de départ clair, une condition de succès claire et un chemin inconnu entre les deux partage la même forme.
Cairn est conçu pour cette classe de problèmes. Le test d'intrusion est le premier domaine sur lequel il a été validé.
Le moteur repose sur une architecture de tableau noir (Blackboard Architecture) avec un graphe explicite faits-intentions. Trois primitives suffisent :
| Concept | Signification |
|---|---|
| Fait | Un résultat confirmé et objectif écrit sur le tableau |
| Intention | Une direction d'exploration déclarée, pas encore exécutée |
| Indice | Jugement humain injecté à tout moment ; absorbé par les agents lors de la prochaine lecture |
Le graphe croît de l'origine vers l'objectif. Chaque nouveau Fait est une pierre angulaire ; chaque Intention est un pas dans l'inconnu.
Les Agents Ouvriers (Agent Workers) exécutent une boucle OODA — Observer l'ensemble du graphe, S'orienter vers l'état actuel, Décider des prochaines intentions, Agir pour explorer — et écrivent leurs résultats en tant que nouveaux Faits. Les ouvriers n'ont pas de rôles fixes. Les tâches sont générées à l'exécution à partir de l'état actuel du graphe, et non de descriptions de poste prédéfinies.
Les agents coordonnent exclusivement via le tableau partagé (Stigmergie). Aucune communication directe. Aucun silo d'information.
https://github.com/user-attachments/assets/e557b1ac-dda4-41cb-87dd-9d56dbf05133
Trois types de tâches, toutes exécutées par le même Ouvrier :
| Tâche | Ce qu'elle fait | Sortie |
|---|---|---|
| Bootstrap | Au démarrage du projet, tente de résoudre le problème directement | Fait + éventuel Complete |
| Reason | Lit l'ensemble du graphe : l'objectif est-il atteint ? Que faut-il explorer ensuite ? | Complete / nouvelles Intentions / no-op |
| Explore | Revendique une Intention, exécute l'exploration, rapporte les résultats | Un Fait |
Architecture du système :
┌──────────────────────────────────┐
│ Serveur Cairn │
│ Faits + Intentions + Indices │
└─────────────────┬────────────────┘
│
API Lecture / Écriture
│
┌─────────────────┴────────────────┐
│ Dispatcheur │
│ Planifie les tâches, gère │
│ les conteneurs, écrit le │
│ protocole │
└──────────┬───────────────┬───────┘
│ │
┌───────────────┴──┐ ┌──────┴──────────────┐
│ Conteneur Ouvrier│ │ Conteneur Ouvrier │
│ (Projet A) │ │ (Projet B) │
│ ┌────┐ ┌────┐ │ │ ┌────┐ ┌────┐ │
│ │ O. │ │ O. │ │ │ │ O. │ │ O. │ │
│ └────┘ └────┘ │ │ └────┘ └────┘ │
└──────────────────┘ └─────────────────────┘
Serveur Cairn maintient uniquement la cohérence du graphe.
Dispatcheur Cairn lit le graphe, planifie les tâches, lance et arrête les conteneurs ouvriers, et est le seul à écrire dans le protocole. Chaque projet possède son propre Conteneur Ouvrier ; plusieurs Agents Ouvriers s'exécutent simultanément à l'intérieur. Les Agents Ouvriers reçoivent uniquement une invite et renvoient une sortie structurée.
Backends ouvriers supportés : Claude Code, Codex et Pi.
Tencent Cloud Hackathon · Défi de test d'intrusion IA · 2e édition
610 équipes · 1 345 participants · des meilleures universités et entreprises de sécurité à travers la Chine
| Métrique | Valeur |
|---|---|
| Problèmes résolus | 54 / 54 — seule équipe à AK |
| Classement final | 3e |
Le système n'avait jamais été testé avant la compétition. L'ensemble du pipeline est entré en ligne pour la première fois à 4 heures du matin le jour de la course. Pas d'entraînement, pas de réglage, pas d'outillage spécifique au domaine. Zéro outil MCP, zéro RAG, zéro rôle d'agent prédéfini.
Prérequis
Les deux méthodes d'installation nécessitent l'image du conteneur ouvrier :
docker pull --platform=linux/amd64 ghcr.io/oritera/cairn-worker-container:latest
Créez votre configuration de dispatcheur locale et remplissez vos points de terminaison LLM et vos clés API :