Lendo os logs

Onde o AutoDev escreve o que fez e por quê, os arquivos que ele guarda, os eventos que explicam uma parada e como os arquivos são rotacionados.

events.jsonl #

events.jsonl é o registro só de acréscimo de tudo o que o AutoDev fez. Ele fica no lado da máquina, em ~/.autodev/<project>-<hash>/, onde a pasta é o nome da pasta do seu projeto seguido de um hash do caminho completo dela. Onde o estado fica lista o que mais há nela.

Cada linha é um objeto JSON com estes campos: ts, level (info, warn ou error), type, message e, quando se aplicam, role, task e data. Um rótulo task é cortado em 200 caracteres. O motivo de uma execução ter pausado ou parado é um destes eventos, e o relatório lê o último deles para imprimir a primeira linha.

Estes são os tipos que explicam uma parada ou uma espera:

TipoO que ele diz
loop.budget, loop.max, loop.stuck, loop.wait_expiredUm limite: gasto ou tempo de execução, iterações, falta de progresso, ou uma espera longa demais.
loop.infra_retry, loop.infra_giveup, thread.turn_failedUm turno que falhou, a nova tentativa que vem depois e a pausa após 12 seguidas.
thread.no_post, thread.silent_participant, loop.silent_participantUm turno que terminou sem post, e a pausa após três.
loop.accept_exhausted, loop.talk_exhausted, loop.no_teamUma pausa para revisão: a auditoria, uma thread sem trabalho nela, ou nenhum time.
loop.gated, gate.requested, gate.approved, gate.denied, gate.auto_approved, loop.gate_failedUm gate, e o que aconteceu com ele.
loop.awaiting_user, loop.completed, loop.stopped, loop.pausedA execução passou o turno para você, terminou, ou foi parada ou pausada.
step.error, loop.error, supervisor.restart, supervisor.giveupUma queda, o reinício depois dela e o ponto em que o AutoDev para de reiniciar.
failover.switched, failover.routed, failover.exhausted, provider.unreachable, provider.reachableUm limite de uso, ou uma queda, e para onde o turno foi.
quota.record_failedO ledger de cota não pôde ser escrito. A chamada deu certo mesmo assim.
serve.tunnel, serve.tunnel_failed, serve.tunnel_down, serve.port_takenO servidor do celular e o túnel dele.

A execução parou e por quê lista as mensagens dos que param uma execução.

daemon.log #

logs/daemon.log, na mesma pasta, espelha os eventos para uma pessoa ler. Uma linha é um evento:

daemon.log
<ts> [WARN] <type> (<role> · <task>): <message>

Um evento info não tem marca de nível, e um evento warn ou error tem [WARN] ou [ERROR]. A parte (<role> · <task>) é omitida quando o evento não tem nenhum dos dois. O que o próprio processo destacado imprime, um erro não tratado inclusive, é acrescentado ao mesmo arquivo. Para ler o fim dele num terminal:

powershell
Get-Content <folder>\logs\daemon.log -Tail 50

Os dois arquivos são rotacionados quando events.jsonl passa de 10 MiB. Cada um é renomeado para o mesmo nome terminado em .1, e o .1 anterior é apagado, então uma geração mais antiga é mantida. Um autodev serve destacado, e o servidor que o painel inicia, escrevem no próprio logs/serve.log, que não é rotacionado.

O ledger de cota é outro arquivo, em ~/.autodev/, e nunca é rotacionado. Onde o ledger fica o descreve.

O canal de saída do VS Code #

A extensão escreve as próprias notas num canal Output chamado AutoDev. Ele registra que a extensão ativou, e de onde carregou o núcleo. Registra também erros das atualizações periódicas dela, com o prefixo status tick: e fleet tick:, erros ao mover o estado, com o prefixo migrate:, da sonda de provedores, com o prefixo probe:, e do pareamento, com o prefixo pairing:. chrome disabled: could not load ... e FAILED to load the core significam que o núcleo da extensão não pôde ser carregado. Esse canal é o log da extensão, e é separado dos arquivos acima.

Esta página não descreve todas as mensagens que a extensão escreve ali.