/autoresearch — Otimização de Prompt Auto-Melhorável
Padrão de autoresearch Karpathy: Gerar → Avaliar → Pontuar → Manter/Descartar → Mutar → Repetir
Arquitetura
Motor principal: crates/sgr-agent/src/autoresearch.rs (módulo Rust, recurso genai).
Painel: skills/autoresearch/dashboard.py (Python, visualizador independente).
Casos de teste: skills/autoresearch/test_cases/*.json (embutidos em tempo de compilação via include_str!).
Alvos
| Alvo | O que otimiza | Métrica de avaliação |
|---|---|---|
tool-selection | Descrições de ferramentas no agente | % de ferramenta correta escolhida para 66 tarefas de teste |
system-prompt | Prompt de sistema do agente (SOUL.md) | Qualidade da decisão: ferramenta certa + raciocínio coerente (4 critérios) |
skill | Qualquer arquivo SKILL.md | Taxa de aprovação de critérios binários (4 critérios) |
decision-parser | Esquema de saída estruturada | Sucesso de análise + qualidade dos campos (5 critérios) |
Uso (API Rust)
use sgr_agent::autoresearch::{AutoResearch, Config, Target};
let config = Config {
target: Target::ToolSelection,
batch_size: 10,
cycle_secs: 120,
gen_model: "gemini-2.5-flash".into(),
eval_model: "claude-sonnet-4-6".into(),
data_dir: "autoresearch_data/tool-selection".into(),
};
let ar = AutoResearch::new(config);
ar.run(20).await?; // 20 ciclos
Início Rápido (CLI — quando conectado ao rc-cli)
# Otimização de seleção de ferramentas (mais impactante)
cargo run -- autoresearch tool-selection --cycles 20
# Otimização de prompt de sistema
cargo run -- autoresearch system-prompt --cycles 10
# Otimizar um skill específico
cargo run -- autoresearch skill --name delegate --cycles 15
# Otimizar análise de decisão
cargo run -- autoresearch decision-parser --cycles 10
# Painel (Python, independente)
python3 skills/autoresearch/dashboard.py --target tool-selection --port 8501
Como Funciona
Cada ciclo:
- Gerar N saídas com o prompt atual (via Gemini — mesmo modelo que o agente usa)
- Avaliar cada saída contra critérios binários (via Claude Sonnet — modelo diferente para objetividade)
- Pontuar = soma dos critérios aprovados em todas as saídas
- Manter se pontuação > melhor_pontuação, descartar caso contrário
- Mutar o prompt vencedor para tentar melhorias
- Registrar em JSONL para rastreamento no painel
- Aguardar o próximo ciclo (padrão 2 min)
Ambiente
GEMINI_API_KEY— para geração (testa com o mesmo modelo que o agente usa)ANTHROPIC_API_KEY— para avaliação e mutação (modelo diferente para objetividade)
Dicas
- Avaliações binárias — critérios sim/não funcionam melhor. Evite escalas Likert.
- Não restrinja demais — muitos critérios estreitos fazem o modelo jogar com a avaliação.
- 10-20 ciclos geralmente suficientes para melhoria significativa.
- Aplique resultados — melhor prompt salvo em
data/<target>/best_prompt.txt.
Custo
- Seleção de ferramentas: ~$0,05/ciclo (barato — uma chamada LLM por teste, avaliação por correspondência de string)
- Prompt de sistema: ~$0,20/ciclo (geração + avaliação LLM por teste)
- Skill: ~$0,30/ciclo (geração + avaliação LLM por teste, saídas mais longas)
- Analisador de decisão: ~$0,15/ciclo (geração + avaliação local parcial)
- 20 ciclos ≈ $1-6 dependendo do alvo. Melhoria permanente.