Naar hoofdinhoud springen

Kan jouw agent deze boeken sluitend krijgen?

Gepubliceerd 5 min leestijdMike ThriftMike Thrift
Kan jouw agent deze boeken sluitend krijgen?

Eén opgenomen agentrun bracht een synthetisch grootboek met drie rijen van een bank-CSV naar gecontroleerde boeken. Het beginsaldo was 1000 USD, het afschrift bevatte drie rijen, en de verwachte antwoorden werden afgeleid uit rekenkunde vóór enig rapport draaide: controle eindigt op 2958.50 USD, septemberwinst is 1958.50 USD. De run haalde die getallen exact, na één echte mislukking die het zelf diagnoseerde.

Invoer

De uitdaging bestaat uit drie gepubliceerde bestanden onder /downloads/agent-accounting/, met het volledige scenario in de gids voor boekhouden met AI-agents. De boeken openen op 2026-09-01 in USD met 1000 USD op Assets:Checking. Het afschrift bevat drie septemberregels: een 2000.00 USD klantbetaling op 2026-09-02, een -29.00 USD hostingrekening op 2026-09-03, en een -12.50 USD cafébezoek op 2026-09-04. De regels koppelen klant aan Income:Consulting, hosting aan Expenses:Software, en café aan Expenses:Dining, en elke rekening die de regels noemen wordt geopend in het startgrootboek op de vereiste datum.

De verwachtingen komen voort uit de rijen plus de opening, onafhankelijk van enige rapportuitvoer: 1000 + 2000 - 29 - 12.50 is 2958.50 USD aan betaalrekening, en 2000 - 29 - 12.50 is 1958.50 USD aan septemberwinst. Een gewijzigde invoer of een verkeerde verwachting zorgt dat verificatie faalt in plaats van een plausibel ogend rapport te printen.

Methodologie

Twee lagen, gescheiden gehouden. Ten eerste draait een verificateur via geïnstalleerde CLI (scripts/check-agent-accounting.py, vastgezet op bea 0.1.0) preview, apply, repeat apply, check, balance en income-statement queries in een verse tijdelijke map met geïsoleerde configuratie. Deze stelt vast dat preview 3 gereed rapporteert en niets schrijft, de eerste apply 3 boekingen schrijft, de herhaalde apply 0 gereed rapporteert met 3 exacte duplicaten en niets schrijft, byte-identiteit overleeft preview en afgewezen writes, check schoon is, en beide totalen overeenkomen met de bovenstaande rekenkunde. De verificateur probeert ook een niet-sluitende transactie (Assets:Checking -5 USD tegen Expenses:Dining 4 USD), vereist exit-code 1, en controleert dat de grootboekbytes ongewijzigd blijven.

Ten tweede één echte agentrun op een verse kopie van de downloads. De client was muse 1.1.1 (Muse Code) met model muse-spark-1.3-contributor, headless gestart met shell- en bestandsschrijftools binnen de werkmap, webtools uitgeschakeld, en geen menselijke interventies tijdens de run. Belangrijk: er werd geen rules.toml meegeleverd — de agent leidde zijn eigen categorisering af uit de open rekeningen van het grootboek.

Waargenomen resultaten

De agent deed 22 tooloproepen (21 shell plus 1 bestandsschrijf) en eindigde met exit 0. Het inspecteerde de CSV en de 16 open rekeningen, las de CLI-help, schreef zijn eigen rules.toml (letterlijke hoofdlettergevoelige overeenkomsten, gelijkwaardig aan de canonieke patronen omdat matching hoofdletterongevoelig is), previewde 3 gereed met niets geschreven, paste 3 boekingen toe, en draaide een schone check. Zijn gerapporteerde totalen waren 2958.50 USD aan betaalrekening en 1958.50 USD septemberwinst. De operator herdraaide daarna beide alleen-lezen queries tegen het grootboek van de agent en bevestigde dezelfde cijfers tegen de onafhankelijke verwachte waarden.

De korte demo hieronder speelt dat werkende pad deterministisch na vanuit de canonieke downloads. Het is een replay, niet de live run:

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

Mislukkingen en interventies

Mislukkingen en interventies

Het transcript behoudt de oorspronkelijke volgorde, inclusief mislukkingen. Twee verkennende aanroepen faalden onschuldig (pip was niet geïnstalleerd; een probe naar een bewerkbaar installatiepad vond bronnen buiten site-packages) en de agent ging verder. Eén mislukking was echt: de eerste --apply eindigde met Operation not permitted op een cache-vergrendeling buiten de werkmap, omdat de sandbox lock-bestanden onder de home-cache blokkeerde. De agent doorzocht de productsources, ontdekte dat de cachemap XDG_CACHE_HOME respecteert, herstelde die naar binnen de werkmap, schreef dezelfde 3 boekingen die preview had getoond, en verwijderde de tijdelijke cache. Geen enkele boekingen is met de hand bewerkt; elke boeking kwam van bea import --apply. Interventies tijdens de run: geen — een mens bekeek het transcript na afloop.

Beperkingen

Dit is CLI-uitvoerverificatie van één run van één client op synthetische gegevens — geen modelbenchmark. Het beweert niets over andere clients, over boekhoudkundige nauwkeurigheid in het algemeen, of over onbeheerd productiegebruik. Twee onderscheidingen zijn van belang. Ten eerste, categorieoordeel versus structurele validatie: de agent koos bij elke rij bij welke rekening deze hoort, en dat oordeel is niet beter dan zijn lezing van drie ondubbelzinnige rijen. Alles wat bea daarna verifieerde — het saldo, dat alles balanceert, de duplicaatdetectie — is structureel: een geslaagde check bewijst dat het grootboek in balans is, nooit dat Expenses:Dining de juiste rekening voor het café was. Ten tweede is het grootboek speelgoed: drie rijen, één valuta, geen categorisatieambiguïteit, geen conflicterende geschiedenis. Een moeilijker afschrift zou het oordeel testen; dit afschrift test de lus.

Downloads

Alle uitdaging-invoer en het volledige runverslag, als statische bestanden die elke locale deelt:

Reproduceer het: download de drie invoerbestanden, bekijk eerst de preview, pas toe, en controleer de twee totalen aan de hand van 1000 + 2000 - 29 - 12.50. De agentengids doorloopt dezelfde stappen met de hand.

Dit artikel delen

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

Gepubliceerd: 10 september 2026