
Un motore di ricerca dello spazio degli stati generico basato su IA, validato per la prima volta su test di penetrazione autonomo.
Cairn è un motore di problem-solving generico.
Non definisce ruoli né flussi di lavoro. Dati un'origine e un obiettivo, cerca un percorso attraverso uno spazio degli stati sconosciuto.
Il test di penetrazione AI è uno di questi problemi — e uno comprovato.
Il test di penetrazione è fondamentalmente una ricerca diretta attraverso uno spazio degli stati quasi infinito:
Questa struttura non è unica per il test di penetrazione. Ricerca di vulnerabilità, dimostrazione matematica, sfide CTF — qualsiasi problema con un punto di partenza chiaro, una condizione di successo chiara e un percorso sconosciuto intermedio condivide la stessa forma.
Cairn è costruito per questa classe di problemi. Il test di penetrazione è il primo dominio su cui è stato validato.
Il motore è costruito su una Architettura Blackboard con un grafico esplicito fatto-intento. Sono sufficienti tre primitive:
| Concetto | Significato |
|---|---|
| Fatto | Un risultato confermato e oggettivo scritto sulla bacheca |
| Intento | Una direzione di esplorazione dichiarata, non ancora eseguita |
| Suggerimento | Giudizio umano iniettato in qualsiasi momento; assorbito dagli agenti alla successiva lettura |
Il grafico cresce da origin verso goal. Ogni nuovo Fatto è una pietra miliare; ogni Intento è un passo verso l'ignoto.
Gli Agent Workers eseguono un ciclo OODA — Observe (osserva) il grafico completo, Orient (orienta) allo stato corrente, Decide (decidi) i prossimi intenti, Act (agisci) per esplorare — e scrivono i loro risultati come nuovi Fatti. I Workers non hanno ruoli fissi. I compiti vengono generati a runtime dallo stato corrente del grafico, non da descrizioni predefinite.
Gli agenti si coordinano esclusivamente attraverso la bacheca condivisa (Stigmergia). Nessuna comunicazione diretta. Nessun silo informativo.
https://github.com/user-attachments/assets/e557b1ac-dda4-41cb-87dd-9d56dbf05133
Tre tipi di compito, tutti eseguiti dallo stesso Worker:
| Compito | Cosa fa | Output |
|---|---|---|
| Bootstrap | All'inizio del progetto, tenta di risolvere direttamente il problema | Fatto + possibile Complete |
| Reason | Legge l'intero grafico: l'obiettivo è raggiunto? Cosa esplorare dopo? | Complete / nuovi Intents / no-op |
| Explore | Prende un Intent, esegue l'esplorazione, riporta i risultati | Un Fatto |
Architettura del sistema:
┌──────────────────────────────────┐
│ Cairn Server │
│ Facts + Intents + Hints │
└─────────────────┬────────────────┘
│
Read / Write API
│
┌─────────────────┴────────────────┐
│ Dispatcher │
│ Schedules tasks, manages │
│ containers, writes protocol │
└──────────┬───────────────┬───────┘
│ │
┌───────────────┴──┐ ┌──────┴──────────────┐
│ Worker Container│ │ Worker Container │
│ (Project A) │ │ (Project B) │
│ ┌────┐ ┌────┐ │ │ ┌────┐ ┌────┐ │
│ │ W. │ │ W. │ │ │ │ W. │ │ W. │ │
│ └────┘ └────┘ │ │ └────┘ └────┘ │
└──────────────────┘ └─────────────────────┘
Cairn Server mantiene solo la coerenza del grafico.
Cairn Dispatcher legge il grafico, pianifica i compiti, avvia e arresta i container worker, ed è l'unico scrittore del protocollo. Ogni progetto ottiene il proprio Worker Container; più Agent Workers vengono eseguiti contemporaneamente al suo interno. Gli Agent Workers ricevono solo un prompt e restituiscono output strutturato.
Backend worker supportati: Claude Code, Codex e Pi.
Tencent Cloud Hackathon · Sfida di Test di Penetrazione AI · 2a Edizione
610 squadre · 1.345 partecipanti · le migliori università e aziende di sicurezza in tutta la Cina
| Metrica | Valore |
|---|---|
| Problemi risolti | 54 / 54 — unica squadra a ottenere AK |
| Classifica finale | 3° |
Il sistema non era mai stato testato prima della competizione. L'intera pipeline è diventata operativa per la prima volta alle 4 del mattino del giorno della gara. Nessun addestramento, nessuna ottimizzazione, nessuna strumentazione specifica del dominio. Zero strumenti MCP, zero RAG, zero ruoli predefiniti per agenti.
Prerequisiti
Entrambi i metodi di configurazione richiedono l'immagine del container worker:
docker pull --platform=linux/amd64 ghcr.io/oritera/cairn-worker-container:latest
Crea la tua configurazione dispatcher locale e inserisci i tuoi endpoint LLM e le chiavi API: