Onde o ledger fica
Um arquivo só de acréscimos para a máquina inteira. O que é escrito nele, quando, e o que acontece se ele se perde ou se danifica.
Um arquivo para a máquina #
O ledger é o quota.jsonl, em ~/.autodev/. Existe um para a máquina e não um para cada projeto, porque uma assinatura atravessa todos os projetos dela. É JSON Lines, e o AutoDev só acrescenta a ele.
Não é um dos índices que o AutoDev consegue reconstruir, e nunca é rotacionado. É a única cópia dos dados de medição. O log de eventos é rotacionado quando cresce, e aplicar isso ao ledger apagaria o histórico de que o painel é desenhado.
Como uma linha se parece #
Uma linha é um registro. Os três tipos estão em O que é medido, e esta é a forma deles:
{"type":"call","ts":"<time>","provider":"<provider>","root":"<project path>","ms":<n>,"ok":true,"model":"<model>","usd":null,"usdDelta":null,"tokens":null,"usage":null,"quota":[],"compactions":[],"inferences":null,"contextWindow":null,"context":null}
{"type":"limit","ts":"<time>","provider":"<provider>","root":"<project path>","retryAt":"<time>","source":"text","kind":null}
{"type":"work","ts":"<time>","provider":"<provider>","root":"<project path>","commit":"<sha>","mode":"thread","taskId":null}Todo registro leva root, o caminho absoluto do projeto. Um call também leva o modelo. Se você compartilhar o arquivo, compartilhe sabendo disso.
Como ele é escrito #
Todo provedor é construído por uma só função, então toda chamada é registrada: cada turno de cada participante, e as chamadas que conferem a execução, como a auditoria de conclusão. O registro call é escrito quando a chamada termina, e um registro limit o segue quando a chamada informou um limite. Um registro work é escrito quando o AutoDev credita um commit.
A escrita é feita no melhor esforço. Se o ledger não puder ser escrito, a chamada ainda tem sucesso e um aviso quota.record_failed vai para o log, porque a instrumentação não pode ser capaz de quebrar o que mede. Projetos concorrentes acrescentam ao mesmo arquivo, e por isso ele é JSON Lines e não um único array JSON.
Lendo você mesmo #
Toda cifra do painel é calculada a partir deste arquivo, por código que o lê e mais nada. Você pode ler os mesmos registros:
autodev quota --json
autodev report --json imprime o modelo do relatório do mesmo modo. Cada linha do quota.jsonl é JSON puro, então qualquer ferramenta que leia JSON Lines o lê.
Se ele se danifica ou se perde #
Uma linha que não pode ser lida é contada e mostrada na seção Integrity do autodev quota, e é ignorada. Uma última linha escrita pela metade é reparada no próximo acréscimo. Um arquivo apagado está perdido: nada o reconstrói, e o painel recomeça de um histórico vazio.
O AutoDev não envia o ledger a lugar nenhum. O servidor que o acesso remoto inicia pode servir a visão de cota derivada a quem tem o token ou a um navegador pareado, pelas regras do nível de telemetria dele. O que você pode fazer pelo celular as lista.
Onde o estado fica lista os outros arquivos de ~/.autodev/, e Lendo o painel de cota trata do que o painel faz com este.