Pular para o conteúdo principal
Obtenha dados de sessões, eventos e avaliações (e acione reavaliações) diretamente de um script ou agente de codificação, com JSON limpo no stdout que pode ser redirecionado para o jq. Essas receitas transformam os dados de observabilidade do AgentEye em algo que um usuário de terminal ou um agente de codificação de IA (Claude Code, Cursor) pode consultar e automatizar, sem precisar clicar pelo dashboard. Os padrões abaixo estão prontos para copiar e colar com a CLI do AgentEye (agenteye). Para instalação, autenticação e a lista completa de opções, consulte CLI; execute agenteye -h ou agenteye <command> -h para obter a ajuda integrada.

Regras de ouro

  1. As opções globais vêm antes do comando. agenteye --json sessions está correto; agenteye sessions --json não está. As opções globais são --json, --base-url, --org, --token, --insecure/--secure, --timeout, --quiet, --no-color.
  2. Use --json sempre que for processar a saída. Os dados vão para o stdout como JSON; status e erros para humanos vão para o stderr, mantendo o stdout limpo para redirecionar ao jq.
  3. Tome decisões com base no código de saída, não no texto do stderr: 0 ok · 2 argumentos inválidos · 3 não consegue alcançar o dashboard · 4 não autenticado ou sessão expirada · 5 permissão ausente.
  4. Descubra com -h. Cada comando documenta seus filtros, formatos de valor e estrutura JSON.

Configuração inicial

Confirme a autenticação antes de começar

whoami nunca retorna erro quando a sessão está ausente ou expirada; ele reporta logged_in:false, permitindo que um agente verifique o estado de autenticação com segurança. (Ainda pode sair com código não zero se nenhuma URL base estiver definida ou se o dashboard estiver inacessível.)

Encontre sessões com falhas ou pontuações baixas

O filtro por pontuação fica em evals, não em sessions. --score KEY:MIN..MAX pode ser repetido e é combinado com AND; qualquer um dos limites é opcional (..0.5 significa ≤ 0.5, 0.9.. significa ≥ 0.9). Você pode passar até 20 filtros de pontuação por requisição; mais do que isso retorna HTTP 400. sessions compartilha os filtros --env, --status, --agent-id, --session-id e de intervalo de tempo com evals, mas não possui --score.

Leia uma sessão completa

Não existe um único comando session show — combine o histórico de eventos com a avaliação da sessão:

Busque tudo (paginação)

Os resultados são retornados do mais recente para o mais antigo e paginados por cursor.

Reduza a saída com —fields

Restrinja as chaves (tanto na tabela quanto no --json) para diminuir o que um agente precisa processar.
Nomes de campos desconhecidos são rejeitados (saída 2) com a lista de valores válidos — uma forma rápida de descobrir os nomes dos campos.

Descubra valores de filtro válidos

Escolha sua organização (multi-tenant)

Se você pertence a mais de uma organização, escolha o tenant ativo no momento do login (ele é salvo):
Um login com múltiplas organizações sem --org sai com código não zero e exibe as organizações disponíveis para escolha.

Provisione uma chave de API para o SDK/coletor

Execute uma query salva ou ad-hoc

Trate um incidente de forma não interativa

Mutações ignoram automaticamente o prompt de confirmação quando --json está ativo ou quando o stdin não é um TTY, então agentes nunca ficam travados; use --yes/-y para ignorá-lo explicitamente em outros contextos.

Tratamento de códigos de saída em um script

Estruturas de saída JSON

ComandoJSON no stdout (com --json)
whoami{"logged_in": true, "id", "email", "is_instance_admin", "active_org", "permissions": [...], "memberships": [...]} ou {"logged_in": false}
orgs list{"active_org", "orgs": [{"org_slug","org_name","permission_set","permissions"}]}
events{"events": [...], "next_cursor": <cursor or null>}
evals{"evaluations": [...], "next_cursor": <cursor or null>}
sessions{"sessions": [...], "next_cursor": <cursor or null>}
errors{"errors": [...], "next_cursor": <cursor or null>}
list <kind>{"kind", "values": [...]}
keys list / keys create{"keys": [...]} / {id, name, permissions, created_at, key} (key exibida uma única vez)
query run{columns: [{name,type}], rows: [[...]], truncated, elapsed_ms}
users list / settings list{"users": [...]} / {"settings": [...]}
alerts list / incidents list{"alerts": [...]} / {"incidents": [...]}
create/update/delete (qualquer)o objeto do recurso, ou {"deleted": true, "id"} para exclusões
falha (qualquer, com --json){"error": "...", "exit_code": <n>, "status"?: <http>, "hint"?: "..."} no stdout
  • Cada item de evento (events): id, session_id, agent_id, event_type, ts, payload, environment.
  • Cada item de avaliação (evals): id, session_id, agent_id, environment, status, scores, reasoning, summary, error, attempt_count, duration_ms, completed_at, created_at.
  • Cada item de sessão (sessions): session_id, agent_id, environment, status, scores, event_count, started_at, last_event_at, first_event_id, last_event_id, latest_evaluation.
O --fields de cada comando aceita exatamente os nomes de campos do seu próprio item — o conjunto difere entre sessions e evals, portanto um nome válido para um pode ser rejeitado pelo outro.