Uma execução registrada de agente levou um ledger sintético de três linhas de um CSV bancário a livros verificados. O saldo inicial era 1000 USD, a declaração tinha três linhas, e as respostas esperadas foram derivadas por aritmética antes de qualquer relatório: o saldo de verificação termina em 2958.50 USD, o lucro de setembro é 1958.50 USD. A execução alcanzou exatamente esses números, após uma falha real que o agente diagnosticou por conta própria.
Entradas
O desafio consiste em três arquivos publicados sob /downloads/agent-accounting/, com o cenário completo no guia de contabilidade com agentes de IA. Os livros abrem em 2026-09-01 em USD, com 1000 USD em Assets:Checking. A declaração contém três linhas de setembro: um pagamento de cliente de 2000.00 USD em 2026-09-02, uma factura de hospedagem de -29.00 USD em 2026-09-03, e uma visita a café de -12.50 USD em 2026-09-04. As regras mapeam o cliente a Income:Consulting, a hospedagem a Expenses:Software, e o café a Expenses:Dining, e cada conta mencionada nas regras é aberta no ledger inicial na data requerida.
As expectativas vêm das linhas mais a abertura, independentemente de qualquer saída de relatório: 1000 + 2000 - 29 - 12.50 é 2958.50 USD de verificação, e 2000 - 29 - 12.50 é 1958.50 USD de lucro de setembro. Uma entrada alterada ou uma expectativa errada falha na verificação em vez de imprimir um relatório de apariência plausível.
Metodologia
Duas camadas, mantidas separadas. Primeiro, um verificador CLI instalado (scripts/check-agent-accounting.py, fixado a bea 0.1.0) executa preview, apply, repeat apply, check, balance e consultas de income statement em um diretório temporário limpo com configuração isolada. Ele afirma que preview reporta 3 prontos e não escreve nada, o primeiro apply escreve 3 entradas, o repeat apply reporta 0 prontos com 3 duplicados exatos e não escreve nada, identidade de bytes sobrevive a preview e escrituras rejeitadas, check está limpo, e ambos totais correspondem à aritmética acima. Também tenta uma transação desequilibrada (Assets:Checking -5 USD contra Expenses:Dining 4 USD), exige código de saída 1, e verifica que os bytes do ledger estão inalterados.
Segundo, uma execução real de agente em uma cópia limpa dos downloads. O cliente era muse 1.1.1 (Muse Code) com modelo muse-spark-1.3-contributor, lançado headless com ferramentas de shell e de escrita de arquivos dentro do diretório de trabalho, ferramentas web desativadas, e nenhuma intervenção humana durante a execução. Críticamente, nenhuna rules.toml foi fornecida — o agente derivou sua própria categorização das contas abertas do ledger.
Resultados observados
O agente fez 22 chamadas de ferramenta (21 de shell mais 1 de escrita de arquivo) e saiu com código 0. Inspeccionou o CSV e as 16 contas abertas, leu a superfície de ajuda do CLI, escreveu sua própria rules.toml (correspondências maiúsculas literais, equivalentes aos padrões canónicos porque a correspondência não diferencia maiúsculas), previsualizó 3 prontos sem escrever nada, aplicó 3 entradas, e executó um check limpo. Seus totais reportados foram 2958.50 USD em verificação e 1958.50 USD de lucro de setembro. O operador re-executó ambas consultas de só-lectura contra o ledger do agente depois, e confirmó as mesmas cifras contra os valores esperados independentes.
O demo curto abaixo reencena ese caminho funcional de forma determinista desde los downloads canónicos. É uma reprodução, não a execução ao vivo:
$ bea --version
bea 0.1.0
$ bea import (preview)
csv → Assets:Checking: 3 ready, 0 exact duplicates, 0 possible duplicates
$ bea import --apply
Wrote 3 entries to $WORK/books/main.bean.
$ bea check
$WORK/books/main.bean: no errors
$ bea balance Assets:Checking
Checking 2,958.50 USD
$ bea report income-statement -t 2026-09
Net Profit: 1,958.50 USD
checking: 2958.50 USD (expected)
profit: 1958.50 USD (expected)
REPLAY OK: preview 3/0, applied 3, check clean, 2958.50 / 1958.50 USD.Falhas e intervenciones
La transcripción mantiene la secuencia original, incluídas las fallas. Dos llamadas exploratorias fallaron de forma inofensiva (pip no estaba instalado; una sonda de ruta de instalación editable encontró fuentes fuera de site-packages) y el agente siguió adelante. Una falla fue real: el primer --apply murió con Operación no permitida en un bloqueo de caché fuera del espacio de trabajo, porque el sandbox bloqueó archivos de bloqueo bajo la caché del hogar. El agente buscó en los fuentes del producto, encontró que el directorio de caché honra XDG_CACHE_HOME, lo re-ejecutó apuntando a dentro del directorio de trabajo, escribió las mismas 3 entradas que el preview había mostrado, y eliminó la caché temporal después. Ningún ledger fue editado a mano; cada entrada vino de bea import --apply. Intervenciones durante la ejecución: ninguna — fue headless con aprobación desactivada, y un humano revisó el registro de eventos solo después del hecho.
Limitaciones
Esto es verificación de salida CLI de una ejecución de un cliente en datos sintéticos — no un benchmark de modelo. No afirma nada sobre otros clientes, sobre precisión contable en general, o sobre uso de producción sin supervisión. Dos distinciones son importantes. Primero, juicio de categoría versus validación estructural: el agente eligió a qué cuenta pertenecía cada fila, y ese juicio es tan bueno como su lectura de tres filas sin ambigüedad. Todo lo que bea verificó después — el saldo, la estructura de suma cero, la detección de duplicados — es estructural: un check que pasa prueba que el ledger está equilibrado, nunca que Expenses:Dining era la cuenta correcta para el café. Segundo, el ledger es un juguete: tres filas, una moneda, sin ambigüedad de categorización, sin historial conflictivo. Una declaración más difícil probaría el juicio; esta prueba el bucle.
Downloads
Todos los insumos del desafío y el registro completo de la ejecución, como archivos estáticos compartidos por cada localidad:
- main.bean — ledger inicial, válida como se publica
- statement.csv — las tres filas sintéticas
- rules.toml — categorías deterministas
- agent-run.transcript.md — el prompt real, secuencia completa de herramientas con fallas mantenidas y verificación independiente
- demo-replay.sh — reproducción determinista etiquetada del camino funcional (necesita
bea 0.1.0en PATH) - demo-replay.txt — salida de reproducción capturada con leyenda, alternativa textual a ver el demo
Reprodúcelo: descarga los tres insumos, previsualiza primero, aplica, y verifica los dos totales contra 1000 + 2000 - 29 - 12.50. El guía de agentes recorre los mismos pasos a mano.





