Dajte externému AI agentovi dve účtovnícke úlohy a majte každú zmenu v ledgeri pod svojou kontrolou: importujte bankové CSV s kontrolou pred náhľadom a potom odpovedzte na otázku o zostatku z výstupov dotazu a reportu.
Nainštalujte bea pomocou CLI quick start. Lokálne príkazy pre import, dotazy a reporty nevyžadujú účet Beancount.io. Váš chatovací agent potrebuje iba svoje vlastné predplatné alebo API kľúč. Iba vstavaný pomocník bea ask vyžaduje hostované poverenia a tieto recepty ho nepoužívajú.
Vyberáte si medzi nástrojmi? Päť účtovníckych nástrojov pre AI agentov porovnáva Beancount.io, hledger, Xero, QuickBooks Online a Puzzle na rovnakých kritériách pracovných postupov agentov, s datovanými zdrojmi.
Čo robí agent a čo robí bea
Agent navrhuje kategórie a vytvára návrhy dotazov. Bea overuje štruktúru ledgera a vypočítava súčty. Všetky príkazy nižšie spúšťate sami. Agent nikdy nepíše priamo do vášho ledgera.
Recept 1: import výpisu s kategóriami navrhnutými agentom
Premeňte bankový export na overené záznamy. Agent navrhne pravidlá kategorizácie. Náhľad a kontrola duplicit rozhodujú o tom, čo sa zapíše.
Predpoklady
Potrebujete bea a nový demo priečinok. Žiadny účet a žiadny Python importer.
Príprava vstupov
Vytvorte priečinok a ledger. Explicitné ciele --file udržiavajú každý príkaz nasmerovaný na demo knihy.
mkdir ai-agent-demo && cd ai-agent-demo
bea --no-input init books --currency USD --date 2026-08-01 --opening-balance "Assets:Checking 1000"
bea --file books/main.bean add open --date 2026-08-01 --account Expenses:Transport:Fuel -c USDUložte túto vzorku ako statement.csv:
Date,Payee,Narration,Amount
2026-08-02,Whole Foods,groceries,-20.00
2026-08-03,Shell,gas,-40.00
2026-08-04,Unknown Shop,mystery,-9.99Uložte tieto pravidlá kategorizácie ako rules.toml:
[[rule]]
match = "whole foods|trader joe|corner market"
account = "Expenses:Groceries"
[[rule]]
match = "shell|chevron|exxon"
account = "Expenses:Transport:Fuel"Skopírujte zadanie úlohy
Vložte túto výzvu svojmu externému agentovi spolu s obsahom CSV:
Propose Beancount categorization rules for my bank CSV rows.
Suggest one TOML rule per merchant with a match pattern and a
destination expense account. Never change dates, payees, or amounts.
Leave rows you cannot categorize confidently unmatched: they post to
Expenses:Uncategorized with flag ! for my review. I run bea import
preview and apply locally. You do not write my ledger.Spustite ekvivalenty CLI
Najprv náhľad, potom aplikujte skontrolované záznamy a overte výsledok:
bea --file books/main.bean import statement.csv --csv date=Date,amount=Amount,payee=Payee,narration=Narration --account Assets:Checking --rules rules.toml
bea --file books/main.bean import statement.csv --apply
bea --file books/main.bean check
bea --file books/main.bean list transaction --flag '!'
bea --file books/main.bean query "SELECT account, sum(position) WHERE account = 'Assets:Checking' GROUP BY account"Skontrolujte očakávaný výstup
Náhľad hlási 3 ready, 0 exact duplicates, 0 possible duplicates a ukončí sa s kódom 0. Nič nezapíše. Aplikačný beh hlási Wrote 3 entries. Kontrola hlási žiadne chyby. Front ! vypíše jeden nespárovaný riadok od Unknown Shop na -9.99 USD. Dotaz na zostatok hlási 930.01 USD na bežnom účte. Opakovaný aplikačný beh hlási 0 ready, 3 exact duplicates a zapíše 0 záznamov.
Kontrola a oprava
Zmeňte kategóriu riadku ! zámerne vo vašom ledgeri po jeho prečítaní. Úspešná kontrola dokazuje iba to, že ledger sedí. Nič nehovorí o tom, či je Expenses:Uncategorized správny účet. Pre politiku duplicity, riešenie konfliktov a pokročilú Python cestu postupujte podľa bank CSV walkthrough.
Recept 2: odpovedanie na otázku o zostatku bez zápisov
Odpovedzte na jednu otázku z demo kníh: koľko išlo na potraviny a palivo v auguste 2026. Agent vytvorí návrh dotazu. Príkazy len na čítanie produkujú odpoveď.
Predpoklady
Potrebujete demo ledger z receptu 1 alebo svoje vlastné knihy. Každý príkaz nižšie je len na čítanie.
Skopírujte zadanie úlohy
Vložte túto výzvu svojmu externému agentovi:
Draft a Beancount query (BQL) that answers: how much did I spend on
groceries and fuel in August 2026. Use my account names exactly as
listed by bea list open. Propose read-only commands only: bea query
or bea report with an explicit --file target. Do not propose ledger
edits to fix a surprising total. A surprising total means the query
or the books need review, not a compensating entry.Spustite ekvivalenty CLI
Spustite navrhnutý dotaz proti explicitnému cieľu ledgera a potom krížovo overte reportom:
bea --file books/main.bean query "SELECT account, sum(position) WHERE account ~ 'Expenses' GROUP BY account"
bea --file books/main.bean report income-statement --time 2026-08Strojoví spotrebitelia pridávajú globálny príznak --json pred podpríkaz:
bea --file books/main.bean --json query "SELECT account, sum(position) WHERE account ~ 'Expenses' GROUP BY account"JSON obálky, kódy ukončenia a umiestnenie globálnych príznakov nasledujú CLI referenciu. Príručka dotazovacieho jazyka dokumentuje celý povrch BQL.
Skontrolujte očakávaný výstup
Dotaz hlási 20.00 USD pre Expenses:Groceries, 40.00 USD pre Expenses:Transport:Fuel a 9.99 USD pre Expenses:Uncategorized. Potraviny plus palivo je 60.00 USD. Výkaz ziskov a strát súhlasí: 69.99 USD augustových výdavkov s čistým ziskom -69.99 USD. JSON variant vracia rovnaké riadky v data.rows s metadátami stĺpcov v data.columns.
Kontrola a oprava
Dotaz proti nesprávnemu názvu účtu vypíše (no rows) na stderr a stále sa ukončí s kódom 0. Porovnajte názov s výstupom bea list open a spustite dotaz znova. Nikdy neopravujte prekvapivý súčet úpravou ledgera tak, aby zodpovedal odpovedi. Opravte dotaz alebo opravte knihy a potom znova spustite bea check.
Prvá výzva: vyváženie troch syntetických riadkov
Prenosná prvá výzva s explicitnými vstupmi a nezávisle odvodenou odpoveďou. Stiahnite tri súbory nižšie, spustite import a skontrolujte dva súčty. Žiadny účet a žiadny pokladničný checkout.
Otvorte knihy k 2026-09-01 v USD s 1000 USD na bežnom účte. Zaúčtujte tri septembrové riadky: platbu klienta 2000.00 USD, účet za hosting 29.00 USD a návštevu kaviarne 12.50 USD. Bežný účet končí na 2958.50 USD, z 1000 + 2000 - 29 - 12.50. Septembrový zisk je 1958.50 USD, z 2000 - 29 - 12.50. Obe očakávania pochádzajú z tejto aritmetiky, nie z výstupu reportov.
Príprava vstupov
Vytvorte priečinok a otvorte dva účty, ktoré šablóna nenesie. Expenses:Dining už pochádza z CLI šablóny.
mkdir agent-challenge && cd agent-challenge
bea --no-input init books --currency USD --date 2026-09-01 --opening-balance "Assets:Checking 1000"
bea --file books/main.bean add open --date 2026-09-01 --account Income:Consulting -c USD
bea --file books/main.bean add open --date 2026-09-01 --account Expenses:Software -c USDTieto tri príkazy vytvoria ledger nižšie. Stiahnite ho ako main.bean namiesto písania.
option "title" "Personal ledger"
option "operating_currency" "USD"
; Add more accounts with bea add open. Amounts on credit accounts are negative.
; bea import books rows it cannot categorize to Expenses:Uncategorized with flag '!'.
2026-09-01 open Assets:Checking USD
2026-09-01 open Assets:Savings USD
2026-09-01 open Assets:Cash USD
2026-09-01 open Liabilities:CreditCard USD
2026-09-01 open Income:Salary USD
2026-09-01 open Income:Interest USD
2026-09-01 open Expenses:Groceries USD
2026-09-01 open Expenses:Dining USD
2026-09-01 open Expenses:Rent USD
2026-09-01 open Expenses:Transport USD
2026-09-01 open Expenses:Utilities USD
2026-09-01 open Expenses:Fees USD
2026-09-01 open Expenses:Uncategorized USD
2026-09-01 open Equity:OpeningBalances USD
2026-09-01 * "Opening balances"
Assets:Checking 1000 USD
Equity:OpeningBalances -1000 USD
2026-09-01 open Income:Consulting USD
2026-09-01 open Expenses:Software USDUložte tento výpis ako statement.csv alebo si ho stiahnite ako statement.csv:
Date,Payee,Amount
2026-09-02,Client,2000.00
2026-09-03,Hosting,-29.00
2026-09-04,Cafe,-12.50Uložte tieto pravidlá ako rules.toml alebo si ich stiahnite ako rules.toml. Každé pravidlo pomenúva účet, ktorý štartovací ledger otvára.
[[rule]]
match = "client"
account = "Income:Consulting"
[[rule]]
match = "hosting"
account = "Expenses:Software"
[[rule]]
match = "cafe"
account = "Expenses:Dining"Spustite výzvu
Najprv náhľad, potom aplikujte a overte. Sumy, dátumy, názvy polí a názvy účtov sú identické v každej lokalite. Preložená je iba próza okolo nich.
bea --file books/main.bean import statement.csv --csv date=Date,amount=Amount,payee=Payee --account Assets:Checking --rules rules.toml
bea --file books/main.bean import statement.csv --csv date=Date,amount=Amount,payee=Payee --account Assets:Checking --rules rules.toml --apply
bea --file books/main.bean check
bea --file books/main.bean query "SELECT account, sum(position) WHERE account = 'Assets:Checking' GROUP BY account"
bea --file books/main.bean report income-statement --time 2026-09Skontrolujte očakávaný výstup
Náhľad hlási 3 ready, 0 exact duplicates, 0 possible duplicates a ukončí sa s kódom 0. Aplikačný beh hlási Wrote 3 entries. Kontrola hlási žiadne chyby. Dotaz na zostatok drží 2958.50 USD na bežnom účte. Výkaz ziskov a strát ukazuje 2000.00 USD príjmu z konzultácií proti 41.50 USD výdavkov, s čistým ziskom 1958.50 USD. Opakovaný aplikačný beh hlási 0 ready, 3 exact duplicates a zapíše 0 záznamov.
Keď sa recept stane opakovanou prácou
Výzvy vyššie sú vhodné pre jednorazové úlohy riadené ručne. Práce, ktoré opakujete týždenne, sú vhodné pre verzované zručnosti v produktovom repozitári. Každý odkaz nižšie otvára aktuálny zdroj zručnosti, ktorý nesie vlastné pokyny na nastavenie a spúšťanie. Tento CMS neuchováva žiadne kópie týchto súborov.
- Začnite čerstvý ledger z prázdneho priečinka pomocou beancount-init. Vytvorí súbor ledgera, Fava spúšťač a Python projekt.
- Premeňte bankový export na kategorizované záznamy pomocou beancount-import. Fázuje každý riadok, navrhuje kategórie z histórie ledgera, preskakuje už importované riadky a zapisuje iba po potvrdení. Recept 1 vyššie je manuálna forma tejto práce.
- Dokážte, že jeden účet sedí s jeho výpisom pomocou beancount-reconcile. Porovná ledger s výpisom a po potvrdení zaznamená na konci obdobia kontrolu zostatku.
- Odpovedzte na otázku z kníh pomocou beancount-ask. Spúšťa dotazy len na čítanie a ukazuje každý dotaz vedľa jeho čísla. Recept 2 vyššie je manuálna forma tejto práce.
- Uzatvorte mesiac pomocou beancount-close. Zosúladí každý aktívny účet, skontroluje opakujúce sa záznamy a príznaky kontroly a zaznamená uzavretie ako commit.
Plná kolekcia žije v kanonickom strome zručností.
Dajte agentovi schopnému shellu bea, alebo načítajte zručnosť do klienta
Toto sú dva samostatné kroky. Inštalácia bea nikdy neinštaluje ani nenakonfiguruje zručnosti.
Agent schopný shellu potrebuje príkaz vo svojej ceste. Nainštalujte ho pomocou CLI quick start, potom agent spúšťa rovnaké príkazy bea, ktoré recepty ukazujú. Agent navrhuje, vy kontrolujete a bea overuje.
Zručnosť sa načítava do samotného klientského agenta prostredníctvom mechanizmu zručností daného klienta. Produktový repozitár vystavuje jeden kanonický strom obom podporovaným klientom: Claude Code ho číta pod .claude/skills a Codex pod .agents/skills, ako prepojené priečinky do rovnakého zdroja. Nasmerujte umiestnenie zručností klienta na priečinok zručností, ktorý potrebujete, a pokračujte v čítaní jeho aktuálneho zdroja pre spúšťacie frázy a aktualizácie.
bea ask načítava svoje vlastné zručnosti samostatne, zo súboru SKILL.md vedľa vášho ledgera — pozri Rozšírenie bea ask o zručnosti.
Otázky podobné ask bez bea ask
Recept 2 odpovedá na otázky o ledgeri pomocou externého agenta plus príkazov bea query a bea report len na čítanie. Táto cesta je lokálna. Nevyžaduje žiadny účet a žiadnu extra inštaláciu.
bea ask je samostatný vstavaný pomocník. Nie je to recept vyššie ani zručnosť beancount-ask. Smeruje otázku cez hostovanú AI službu, takže vyžaduje extra ask a hostované poverenia, ako je zdokumentované v CLI referencii. Najprv nainštalujte základné CLI a potom pridajte extra iba vtedy, keď chcete hostované odpovede.
Citované výstupy a overenie CLI
Každý príkaz vyššie bol vykonaný proti publikovanému balíku bea 0.1.0 v čerstvom priečinku. Citované počty, zostatky a správy sú overením CLI.
Jeden klient dokončil prvú výzvu na čerstvej kópii stiahnutých súborov bez vopred poskytnutých pravidiel. Muse Code 1.1.1 (model muse-spark-1.3-contributor) odvodil vlastnú kategorizáciu, zobrazil náhľad 3 pripravených bez zápisu, aplikoval 3 záznamy a hlásil 2958.50 USD na bežnom účte s 1958.50 USD septembrovým ziskom — v súlade s očakávaniami vyššie. Jeho jeden zlyhaný aplikačný beh (sablónový zámok vyrovnávacej pamäte, obnovený cez XDG_CACHE_HOME) je uchovaný v zázname. Prečítajte si plnú výzvu, sekvenciu nástrojov a overenie v prepise behu, alebo prehrajte pracovnú cestu pomocou demo skriptu a jeho zachyteného výstupu.
Tento beh je overenie CLI výstupu jedného vykonania, nie benchmark modelu. Netvrdí nič o iných klientoch, účtovníckej presnosti všeobecne alebo o neobsluhovanom produkčnom použití.
Plný príbeh dôkazu — vstupy, metodológia, pozorované výsledky, zlyhania, obmedzenia a stiahnutia — je publikovaný ako Môže váš agent vyvážiť tieto knihy?.
Preskúmajte širší výskum za týmito pracovnými postupmi na Bean Labs, výskumnom centre automatizácie účtovníctva Beancount.io.