Дайте на външен AI агент две счетоводни задачи и дръжте всяка промяна в ledger-а под ваш контрол: импортирайте банков CSV с преглед-първо проверка, след което отговорете на въпрос за баланс от заявка и отчетен изход.
Инсталирайте bea с CLI бърз старт. Локалните команди за импорт, заявки и отчети не изискват акаунт в Beancount.io. Вашият чат агент се нуждае само от собствен абонамент или API ключ. Само вграденият помощник bea ask изисква хоствани идентификационни данни, а тези рецепти не го използват.
Какво прави агентът и какво прави bea
Агентът предлага категории и чертае заявки. Bea валидира структурата на ledger-а и изчислява сумите. Вие изпълнявате всяка команда по-долу сами. Агентът никога не записва директно във вашия ledger.
Рецепта 1: импортиране на извлечение с предложени от агента категории
Превърнете банков експорт в валидирани записи. Агентът предлага правилата за категоризация. Прегледът и проверката за дубликати решават какво да бъде записано.
Предпоставки
Трябват ви bea и нова демо директория. Без акаунт и без Python импортьор.
Подгответе входните данни
Създайте директорията и ledger-а. Изричните --file цели държат всяка команда насочена към демо книгите.
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 USDЗапазете този пример като statement.csv:
Date,Payee,Narration,Amount
2026-08-02,Whole Foods,хранителни стоки,-20.00
2026-08-03,Shell,гориво,-40.00
2026-08-04,Unknown Shop,неизвестно,-9.99Запазете тези правила за категоризация като rules.toml:
[[rule]]
match = "whole foods|trader joe|corner market"
account = "Expenses:Groceries"
[[rule]]
match = "shell|chevron|exxon"
account = "Expenses:Transport:Fuel"Копирайте подканата за задачата
Поставете тази подкана на вашия външен агент заедно със съдържанието на CSV-то:
Предложи Beancount правила за категоризация за редовете от моя банков CSV.
Предложи едно TOML правило за търговец с шаблон за съвпадение и
целева разходна сметка. Никога не променяй дати, получатели или суми.
Остави редовете, които не можеш да категоризираш уверено, без правило:
те се отнасят към Expenses:Uncategorized с флаг ! за моя преглед.
Аз изпълнявам bea import преглед и прилагам локално. Ти не записваш моя ledger.Изпълнете CLI еквивалентите
Първо преглед, след това приложете рецензираните записи и проверете резултата:
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"Проверете очаквания резултат
Прегледът отчита 3 ready, 0 exact duplicates, 0 possible duplicates и излиза с код 0. Той не записва нищо. Прилагането отчита Wrote 3 entries. Проверката не отчита грешки. Опашката ! изброява единствения ред без съвпадение от Unknown Shop на -9.99 USD. Заявката за баланс отчита 930.01 USD в разплащателната сметка. Повторното прилагане отчита 0 ready, 3 exact duplicates и записва 0 записа.
Преглед и корекция
Прекатегоризирайте реда с ! обмислено във вашия ledger, след като го прочетете. Успешната проверка само доказва, че ledger-ът е балансиран. Тя не казва нищо за това дали Expenses:Uncategorized е правилната сметка. За политика за дубликати, обработка на конфликти и разширения Python път, следвайте ръководството за банков CSV импорт.
Рецепта 2: отговор на въпрос за баланс без записи
Отговорете на един въпрос от демо книгите: колко отиде за хранителни стоки и гориво през август 2026. Агентът чертае заявката. Само за четене команди произвеждат отговора.
Предпоставки
Трябват ви демо ledger-ът от рецепта 1 или ваши собствени книги. Всяка команда по-долу е само за четене.
Копирайте подканата за задачата
Поставете тази подкана на вашия външен агент:
Начертай Beancount заявка (BQL), която отговаря: колко похарчих за
хранителни стоки и гориво през август 2026. Използвай имената на моите
сметки точно както са изброени от bea list open. Предложи само команди
за четене: bea query или bea report с изрична --file цел. Не предлагай
редакции на ledger-а, за да коригираш изненадваща сума. Изненадваща
сума означава, че заявката или книгите се нуждаят от преглед, не от
компенсиращ запис.Изпълнете CLI еквивалентите
Изпълнете чертежа на заявката срещу изрична ledger цел, след което проверете кръстосано с отчет:
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-08Машинните потребители добавят глобалния флаг --json преди подкомандата:
bea --file books/main.bean --json query "SELECT account, sum(position) WHERE account ~ 'Expenses' GROUP BY account"JSON обвивките, кодовете за изход и позиционирането на глобалните флагове следват CLI справката. Ръководството за езика на заявките документира пълната BQL повърхност.
Проверете очаквания резултат
Заявката отчита 20.00 USD за Expenses:Groceries, 40.00 USD за Expenses:Transport:Fuel и 9.99 USD за Expenses:Uncategorized. Хранителните стоки плюс горивото е 60.00 USD. Отчетът за приходите и разходите е съгласен: 69.99 USD августовски разходи с нетна печалба от -69.99 USD. JSON вариантът връща същите редове в data.rows с метаданни за колоните в data.columns.
Преглед и корекция
Заявка срещу грешно име на сметка отпечатва (no rows) на stderr и все пак излиза с код 0. Сравнете името с изхода от bea list open и изпълнете заявката отново. Никога не коригирайте изненадваща сума, като редактирате ledger-а, за да съвпадне с отговора. Поправете заявката или поправете книгите, след което изпълнете отново bea check.
Когато рецептата стане повтаряща се задача
Подканите по-горе са подходящи за еднократни задачи, ръководени на ръка. Задачи, които повтаряте седмично, са подходящи за версионираните умения в продуктовото хранилище. Всеки линк по-долу отваря текущия източник на умението, който носи свои собствени инструкции за настройка и задействане. Тази CMS не съхранява копия на тези файлове.
- Започнете свеж ledger от празна директория с beancount-init. Той създава ledger файла, Fava runner и Python проект.
- Превърнете банков експорт в категоризирани записи с beancount-import. Той поставя на сцена всеки ред, предлага категории от историята на ledger-а, пропуска вече импортирани редове и записва само след потвърждение. Рецепта 1 по-горе е ръчната форма на тази задача.
- Докажете, че една сметка съвпада с извлечението си с beancount-reconcile. Той сравнява ledger-а с извлечението и поставя балансова декларация за края на периода след потвърждение.
- Отговорете на въпрос от книгите с beancount-ask. Той изпълнява само за четене заявки и показва всяка заявка до нейната цифра. Рецепта 2 по-горе е ръчната форма на тази задача.
- Приключете месец с beancount-close. Той съгласува всяка активна сметка, проверява повтарящи се записи и флагове за преглед и записва приключването като комит.
Пълната колекция се намира в каноничното дърво на уменията.
Дайте bea на агент с shell достъп или заредете умение в клиент
Това са две отделни стъпки. Инсталирането на bea никога не инсталира или конфигурира умения.
Агент с shell достъп се нуждае от командата в своя път. Инсталирайте я с CLI бърз старт, след което агентът изпълнява същите bea команди, които рецептите показват. Агентът предлага, вие преглеждате, а bea валидира.
Умение се зарежда в самия агент клиент, чрез механизма за умения на този клиент. Продуктовото хранилище излага едно канонично дърво на двата поддържани клиента: Claude Code го чете под .claude/skills, а Codex под .agents/skills, като свързани директории към същия източник. Насочете местоположението на уменията на клиента към папката с умението, от което се нуждаете, и продължавайте да четете текущия му източник за фрази за задействане и актуализации.
Въпроси от типа на ask без bea ask
Рецепта 2 отговаря на въпроси за ledger-а с външен агент плюс само за четене команди bea query и bea report. Този път е локален. Той не изисква акаунт и няма допълнителна инсталация.
bea ask е отделен вграден помощник. Той не е нито рецептата по-горе, нито умението beancount-ask. Той насочва въпроса през хостваната AI услуга, така че изисква допълнителния пакет ask и хоствани идентификационни данни, както е документирано в CLI справката. Инсталирайте основния CLI първо, след което добавете допълнителния пакет само когато искате хоствани отговори.
Цитирани изходи и CLI проверка
Всяка команда по-горе е изпълнена срещу публикувания пакет bea 0.1.0 в свежа директория. Цитираните бройки, баланси и съобщения са CLI проверка. Подканите за задачите не са изпълнявани срещу никакъв модел. Поведението на моделите се оценява отделно.




