
Um motor de busca de espaço de estados de propósito geral de IA, validado inicialmente em testes de penetração autônomos.
Cairn é um mecanismo de resolução de problemas de propósito geral.
Ele não define papéis, nem fluxos de trabalho. Dados uma origem e um objetivo, ele busca um caminho através de um espaço de estados desconhecido.
Testes de Penetração em IA são um desses problemas — e um já comprovado.
Testes de penetração são fundamentalmente uma busca direcionada através de um espaço de estados quase infinito:
Essa estrutura não é exclusiva dos testes de penetração. Pesquisa de vulnerabilidades, prova matemática, desafios CTF — qualquer problema com um ponto de partida claro, uma condição de sucesso clara e um caminho desconhecido no meio compartilha a mesma forma.
O Cairn foi construído para essa classe de problemas. Testes de penetração são o primeiro domínio no qual foi validado.
O mecanismo é baseado em uma Arquitetura de Quadro Negro com um grafo explícito de fato-intenção. Três primitivas são tudo o que ele precisa:
| Conceito | Significado |
|---|---|
| Fato | Uma constatação objetiva e confirmada escrita no quadro |
| Intenção | Uma direção de exploração declarada, ainda não executada |
| Dica | Julgamento humano injetado a qualquer momento; absorvido pelos agentes na próxima leitura |
O grafo cresce da origem em direção ao objetivo. Cada novo Fato é um degrau; cada Intenção é um passo no desconhecido.
Os Agentes de Trabalho executam um ciclo OODA — Observar o grafo completo, Orientar-se para o estado atual, Decidir as próximas intenções, Agir para explorar — e escrevem suas descobertas como novos Fatos. Os trabalhadores não têm papéis fixos. As tarefas são geradas em tempo de execução a partir do estado atual do grafo, não a partir de descrições de cargo predefinidas.
Os agentes coordenam exclusivamente através do quadro compartilhado (Estigmergia). Sem comunicação direta. Sem silos de informação.
https://github.com/user-attachments/assets/e557b1ac-dda4-41cb-87dd-9d56dbf05133
Três tipos de tarefa, todos executados pelo mesmo Trabalhador:
| Tarefa | O que faz | Saída |
|---|
Arquitetura do sistema:
┌──────────────────────────────────┐
│ Servidor Cairn │
│ Fatos + Intenções + Dicas │
└─────────────────┬────────────────┘
│
API de Leitura/Escrita
│
┌─────────────────┴────────────────┐
│ Despachante │
│ Agenda tarefas, gerencia │
│ contêineres, escreve protocolo │
└──────────┬───────────────┬───────┘
│ │
┌───────────────┴──┐ ┌──────┴──────────────┐
│ Contêiner Trabalh.│ │ Contêiner Trabalh. │
│ (Projeto A) │ │ (Projeto B) │
│ ┌────┐ ┌────┐ │ │ ┌────┐ ┌────┐ │
│ │ Tr.│ │ Tr.│ │ │ │ Tr.│ │ Tr.│ │
│ └────┘ └────┘ │ │ └────┘ └────┘ │
└──────────────────┘ └─────────────────────┘
Servidor Cairn mantém apenas a consistência do grafo.
Despachante Cairn lê o grafo, agenda tarefas, inicia e encerra contêineres de trabalho, e é o único escritor do protocolo. Cada projeto recebe seu próprio Contêiner de Trabalhador; vários Agentes de Trabalho são executados simultaneamente dentro dele. Os Agentes de Trabalho apenas recebem um prompt e retornam saída estruturada.
Backends de trabalhador suportados: Claude Code, Codex e Pi.
Hackathon Tencent Cloud · Desafio de Testes de Penetração em IA · 2ª Edição
610 equipes · 1.345 participantes · principais universidades e empresas de segurança em toda a China
| Métrica | Valor |
|---|---|
| Problemas resolvidos | 54 / 54 — única equipe a AK |
| Classificação final | 3º lugar |
O sistema nunca havia sido testado antes da competição. O pipeline completo entrou em operação pela primeira vez às 4 da manhã no dia da competição. Nenhum treinamento, nenhum ajuste, nenhuma ferramenta específica de domínio. Zero ferramentas MCP, zero RAG, zero papéis de agente predefinidos.
Pré-requisitos
Ambos os métodos de configuração exigem a imagem do contêiner do trabalhador:
docker pull --platform=linux/amd64 ghcr.io/oritera/cairn-worker-container:latest
Crie sua configuração local do despachante e preencha seus endpoints de LLM e chaves de API:
cp dispatch.example.yaml dispatch.yaml
Baixe a imagem base usada para construir o Cairn:
docker pull ghcr.io/astral-sh/uv:python3.13-trixie
docker compose up --build
Isso inicia o cairn-server na porta 8000 e o cairn-dispatcher assim que o servidor passar na verificação de integridade. O despachante monta o dispatch.yaml da raiz do projeto e se conecta ao Docker através do socket do host. Os dados são persistidos em ./datas/cairn/.
# Iniciar o servidor
uv run --project cairn cairn serve
# Executar o despachante
uv run --project cairn cairn dispatch --config dispatch.yaml
# Executar apenas verificações de integridade na inicialização
uv run --project cairn cairn dispatch --config dispatch.yaml --startup-healthcheck-only
Execute o conjunto de regressão rápido sem Docker ou endpoints de modelo ativos:
uv run --project cairn --group dev pytest
O Cairn é um mecanismo de resolução de problemas de propósito geral. Embora suporte fluxos de trabalho de testes de penetração, resolução de CTF, avaliação de segurança e pesquisa de vulnerabilidades, ele deve ser usado apenas em ambientes onde você tenha autorização explícita para operar.
Você é o único responsável por como usa este projeto. Não use o Cairn contra sistemas, redes, aplicativos ou dados sem permissão prévia clara do proprietário ou operador. Testes de segurança não autorizados, exploração ou acesso a dados podem ser ilegais e podem causar danos.
Os desenvolvedores e contribuidores deste projeto não endossam nem aceitam responsabilidade por qualquer uso indevido, abuso, dano, perda ou consequências legais decorrentes de seu uso. Ao usar este projeto, você concorda em garantir que suas atividades estejam em conformidade com todas as leis, regulamentos, obrigações contratuais e políticas profissionais ou organizacionais aplicáveis em sua jurisdição.
Este projeto está licenciado sob GNU AGPLv3 para uso pessoal e educacional.
Uso Comercial: Se você deseja usar este projeto em um ambiente comercial ou proprietário sem as obrigações de código aberto do AGPL-3.0, entre em contato comigo para obter uma licença comercial.
Contribuições: Ao enviar um Pull Request, você concorda que suas contribuições podem ser usadas tanto sob a AGPL-3.0 quanto sob a licença comercial do projeto.
| Inicializar | No início do projeto, tenta resolver o problema diretamente | Fato + possível Conclusão |
| Raciocinar | Lê o grafo completo: o objetivo foi alcançado? O que deve ser explorado a seguir? | Conclusão / novas Intenções / nenhuma operação |
| Explorar | Reivindica uma Intenção, executa a exploração, relata descobertas | Um Fato |