Salta al contingut principal

Pot el vostre agent equilibrar aquests llibres?

Publicat 6 minuts de lecturaMike ThriftMike Thrift
Pot el vostre agent equilibrar aquests llibres?

Una execució d'agent enregistrada va portar un llibre major sintètic de tres files des d'un CSV bancari fins a uns llibres comprovats. El saldo inicial era 1000 USD, l'estat contenia tres files, i les respostes esperades es van derivar de l'aritmètica abans que cap informe s'executés: el compte corrent acaba en 2958.50 USD, el benefici de setembre és 1958.50 USD. L'execució va assolir exactament aquests números, després d'un error real que es va autodiagnosticar.

Entrades

El repte consisteix en tres fitxers publicats a /downloads/agent-accounting/, amb l'escenari complet a la guia de comptabilitat amb agents. Els llibres s'obren el 2026-09-01 en USD amb 1000 USD a Assets:Checking. L'extracte conté tres files de setembre: un pagament de client de 2000.00 USD el 2026-09-02, una factura d'allotjament de -29.00 USD el 2026-09-03 i una visita a un cafè de -12.50 USD el 2026-09-04. Les regles assignen el client a Income:Consulting, l'allotjament a Expenses:Software i el cafè a Expenses:Dining, i cada compte que les regles mencionen s'obre al llibre inicial a la data requerida.

Les expectatives provenen de les files més el saldo inicial, de manera independent de qualsevol sortida d'informes: 1000 + 2000 - 29 - 12.50 és 2958.50 USD de compte corrent, i 2000 - 29 - 12.50 és 1958.50 USD de benefici de setembre. Una entrada modificada o una expectativa incorrecta fa fallar la verificació en lloc d'imprimir un informe amb aparença plausible.

Metodologia

Dues capes, mantingudes separades. Primer, un verificador de CLI instal·lada (scripts/check-agent-accounting.py, fixat a bea 0.1.0) executa consultes de previsualització, aplicació, reaplicació, comprovació, balanç i estat de resultats en un directori temporal net amb configuració aïllada. Comprova que la previsualització informa de 3 preparats i no escriu res, que la primera aplicació escriu 3 entrades, que la reaplicació informa de 0 preparats amb 3 duplicats exactes i no escriu res, que la identitat de bytes sobreviu a la previsualització i als escrits rebutjats, que la comprovació és neta, i que ambdós totals coincideixen amb l'aritmètica anterior. També intenta una transacció no equilibrada (Assets:Checking -5 USD contra Expenses:Dining 4 USD), requereix la sortida 1, i verifica que els bytes del llibre no canvien.

Segon, una execució real d'agent en una còpia nova dels fitxers de descàrrega. El client era muse 1.1.1 (Muse Code) amb el model muse-spark-1.3-contributor, llançat sense capçalera amb eines de shell i d'escriptura de fitxers dins del directori de treball, eines web desactivades, i sense intervencions humanes durant l'execució. Críticament, no es va proporcionar cap rules.toml — l'agent va derivar la seva pròpia categorització a partir dels comptes oberts del llibre major.

Resultats observats

L'agent va fer 22 crides d'eines (21 de shell més 1 d'escriptura de fitxer) i va sortir amb codi 0. Va inspeccionar el CSV i els 16 comptes oberts, va llegir la superfície d'ajuda de la CLI, va escriure el seu propi rules.toml (coincidències literals en majúscules, equivalents als patrons canònics perquè la coincidència no distingeix majúscules), va previsualitzar 3 preparats sense escriure res, va aplicar 3 entrades i va executar una comprovació neta. Els seus totals informats van ser 2958.50 USD al compte corrent i 1958.50 USD de benefici de setembre. L'operador va tornar a executar les dues consultes només de lectura contra el llibre de l'agent posteriorment i va confirmar les mateixes xifres contra els valors esperats independents.

La breu demostració següent reprodueix aquest camí de treball de manera determinista a partir de les descàrregues canòniques. És una reproducció, no l'execució en directe:

$ 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.

Errors i intervencions

El transcript conserva la seqüència original, errors inclosos. Dues crides exploratòries van fallar de manera inofensiva (pip no estava instal·lat; una sonda de ruta d'instal·lació editable va trobar fonts fora de site-packages) i l'agent va continuar. Un error va ser real: el primer --apply va acabar amb Operation not permitted en un bloqueig de memòria cau fora de l'espai de treball, perquè el sandbox bloquejava l'escriptura de fitxers de bloqueig sota la memòria cau de l'usuari. L'agent va buscar a les fonts del producte, va descobrir que la memòria cau respecta XDG_CACHE_HOME, va tornar a executar amb la memòria cau redirigida al directori de treball, va escriure les mateixes 3 entrades que la previsualització havia mostrat, i va eliminar la memòria cau temporal després. Cap llibre no es va editar a mà; cada entrada va sortir de bea import --apply. Intervencions durant l'execució: cap — va ser sense supervisió amb aprovació desactivada, i un humà va revisar el registre d'esdeveniments només un cop acabada.

Limitacions

Això és una verificació de sortida de CLI d'una execució d'un client sobre dades sintètiques — no un benchmark de models. No afirma res sobre altres clients, sobre la precisió comptable en general, ni sobre l'ús de producció sense supervisió. Dues distincions importen. Primer, el judici de categoria contra la validació estructural: l'agent va decidir a quin compte pertanyia cada fila, i aquest judici només és tan bo com la seva lectura de tres files sense ambigüitat. Tot el que bea va verificar després — el balanç, l'estructura de suma zero, la detecció de duplicats — és estructural: una comprovació que passa demostra que el llibre quadra, mai que Expenses:Dining era el compte correcte per al cafè. Segon, el llibre és una joguina: tres files, una moneda, cap ambigüitat de categorització, cap historial en conflicte. Un estat més difícil posa a prova el judici; aquest prova el bucle.

Descàrregues

Totes les entrades del repte i el registre complet de l'execució, com a fitxers estàtics compartits per cada idioma:

  • main.bean — llibre inicial, es valida tal com es publica
  • statement.csv — les tres files sintètiques
  • rules.toml — patrons canònics de categorització
  • agent-run.transcript.md — el prompt real, la seqüència completa d’eines amb els errors conservats, i la verificació independent
  • demo-replay.sh — reproducció determinista etiquetada del camí que funciona (necessita bea 0.1.0 al PATH)
  • demo-replay.txt — sortida capturada de la reproducció amb llegenda, l’alternativa en text a veure la demo

Reprodueix-ho: baixa les tres entrades, previsualitza primer, aplica, i comprova els dos totals amb 1000 + 2000 - 29 - 12.50. La guia d’agents explica els mateixos passos a mà.

Comparteix aquest article

Font: https://beancount.io/ca/bean-labs/research-logs/2026/09/10/can-your-agent-balance-these-books

Publicat: 10 de setembre del 2026