Salta al contenuto principale

Il tuo agente riesce a quadrare questi libri contabili?

Pubblicato 6 minuti di letturaMike ThriftMike Thrift
Il tuo agente riesce a quadrare questi libri contabili?

Un'esecuzione registrata dell'agente ha portato un registro sintetico di tre righe da un CSV bancario a libri contabili verificati. Il saldo di apertura era 1000 USD, l'estratto conto conteneva tre righe e le risposte attese sono state derivate con l'aritmetica prima di eseguire qualsiasi report: il conto corrente chiude a 2958.50 USD, l'utile di settembre è 1958.50 USD. L'esecuzione ha raggiunto esattamente quei numeri, dopo un vero errore che l'agente ha diagnosticato da solo.

Input

La sfida consiste in tre file pubblicati in /downloads/agent-accounting/, con lo scenario completo nella guida alla contabilità con agenti AI. I libri si aprono il 2026-09-01 in USD con 1000 USD in Assets:Checking. L'estratto conto contiene tre righe di settembre: un pagamento cliente di 2000.00 USD il 2026-09-02, una fattura di hosting di -29.00 USD il 2026-09-03 e una visita al bar di -12.50 USD il 2026-09-04. Le regole mappano il cliente su Income:Consulting, l'hosting su Expenses:Software e il bar su Expenses:Dining, e ogni conto nominato dalle regole viene aperto nel registro iniziale alla data richiesta.

Le aspettative derivano dalle righe più il saldo di apertura, indipendentemente da qualsiasi output di report: 1000 + 2000 - 29 - 12.50 fa 2958.50 USD di conto corrente, e 2000 - 29 - 12.50 fa 1958.50 USD di utile di settembre. Un input modificato o un'aspettativa sbagliata fa fallire la verifica invece di stampare un report dall'aspetto plausibile.

Metodologia

Due livelli, tenuti separati. Primo, un verificatore CLI installato (scripts/check-agent-accounting.py, vincolato a bea 0.1.0) esegue preview, apply, repeat apply, check, balance e query di conto economico in una nuova directory temporanea con configurazione isolata. Afferma che la preview riporta 3 pronti e non scrive nulla, che il primo apply scrive 3 registrazioni, che il repeat apply riporta 0 pronti con 3 duplicati esatti e non scrive nulla, che l'identità dei byte sopravvive a preview e scritture rifiutate, che il check è pulito e che entrambi i totali corrispondono all'aritmetica precedente. Tenta anche una transazione non bilanciata (Assets:Checking -5 USD contro Expenses:Dining 4 USD), richiede exit 1 e verifica che i byte del registro siano invariati.

Secondo, una vera esecuzione dell'agente su una copia fresca dei download. Il client era muse 1.1.1 (Muse Code) con modello muse-spark-1.3-contributor, avviato headless con strumenti shell e scrittura file all'interno della workdir, strumenti web disabilitati e nessun intervento umano durante l'esecuzione. Fondamentalmente, nessun rules.toml è stato fornito — l'agente ha derivato la propria categorizzazione dai conti aperti nel registro.

Risultati osservati

L'agente ha effettuato 22 chiamate di strumento (21 shell più 1 scrittura file) ed è uscito con codice 0. Ha ispezionato il CSV e i 16 conti aperti, ha letto la superficie di aiuto della CLI, ha scritto il proprio rules.toml (corrispondenze letterali maiuscole, equivalenti ai pattern canonici perché il matching non fa distinzione tra maiuscole e minuscole), ha mostrato in anteprima 3 pronti senza scrivere nulla, ha applicato 3 registrazioni ed eseguito un check pulito. I totali riportati sono stati 2958.50 USD nel conto corrente e 1958.50 USD di utile di settembre. L'operatore ha rieseguito entrambe le query di sola lettura sul registro dell'agente successivamente e ha confermato le stesse cifre rispetto ai valori attesi indipendenti.

La breve demo qui sotto ripropone in modo deterministico quel percorso funzionante dai download canonici. È una riproduzione, non l'esecuzione dal 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.

Errori e interventi

La trascrizione mantiene la sequenza originale, errori inclusi. Due chiamate esplorative sono fallite in modo innocuo (pip non era installato; un tentativo di percorso per installazione modificabile ha trovato fonti fuori da site-packages) e l'agente è andato avanti. Un errore era reale: il primo --apply è terminato con Operation not permitted su un lock di cache fuori dall'area di lavoro, perché la sandbox bloccava i file di lock nella cache home. L'agente ha cercato nei sorgenti del prodotto, ha scoperto che la directory della cache rispetta XDG_CACHE_HOME, ha rilanciato puntandola all'interno della workdir, ha scritto le stesse 3 registrazioni mostrate in anteprima e ha rimosso la cache temporanea successivamente. Nessun registro è mai stato modificato a mano; ogni registrazione è arrivata da bea import --apply. Interventi durante l'esecuzione: nessuno — era headless con approvazione disattivata e un essere umano ha esaminato il log degli eventi solo a posteriori.

Limiti

Questa è una verifica di output CLI di un'unica esecuzione di un client su dati sintetici — non un benchmark di modelli. Non afferma nulla su altri client, sull'accuratezza contabile in generale o sull'uso di produzione senza supervisione. Due distinzioni contano. Primo, giudizio di categoria versus validazione strutturale: l'agente ha scelto a quale conto apparteneva ogni riga, e quel giudizio è valido solo quanto la sua lettura di tre righe inequivocabili. Tutto ciò che bea ha verificato successivamente — il saldo, la struttura a somma zero, il rilevamento dei duplicati — è strutturale: un check superato dimostra che i libri quadrano, mai che Expenses:Dining fosse il conto giusto per il bar. Secondo, il registro è un giocattolo: tre righe, una valuta, nessuna ambiguità di categorizzazione, nessuna storia in conflitto. Un estratto conto più difficile metterebbe alla prova il giudizio; questo mette alla prova il ciclo.

Download

Tutti gli input della sfida e la registrazione completa dell'esecuzione, come file statici condivisi da ogni locale:

  • main.bean — registro iniziale, valido come pubblicato
  • statement.csv — le tre righe sintetiche
  • rules.toml — categorie deterministiche
  • agent-run.transcript.md — il prompt effettivo, la sequenza completa degli strumenti con gli errori mantenuti e la verifica indipendente
  • demo-replay.sh — riproduzione deterministica etichettata del percorso funzionante (richiede bea 0.1.0 nel PATH)
  • demo-replay.txt — output di riproduzione catturato con didascalia, l'alternativa testuale alla visione della demo

Riproducila: scarica i tre input, fai prima la preview, poi apply, e verifica i due totali rispetto a 1000 + 2000 - 29 - 12.50. La guida agli agenti illustra gli stessi passaggi manualmente.

Condividi questo articolo

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

Pubblicato: 10 settembre 2026