Доручіть зовнішньому AI-агенту два завдання з бухгалтерії та тримайте кожну зміну в журналі під вашим контролем: імпортуйте банківський CSV із попередньою перевіркою, а потім дайте відповідь на запитання про баланс із результатів запиту та звіту.
Встановіть bea за допомогою короткого старту CLI. Локальні команди імпорту, запитів і звітів не потребують облікового запису Beancount.io. Вашому чат-агенту потрібна лише власна підписка або API-ключ. Лише вбудований помічник bea ask потребує хостингових облікових даних, і ці рецепти його не використовують.
Що робить агент, а що робить bea
Агент пропонує категорії та складає проєкти запитів. Bea перевіряє структуру журналу та обчислює підсумки. Ви виконуєте кожну команду нижче самостійно. Агент ніколи не записує безпосередньо у ваш журнал.
Рецепт 1: імпорт виписки з категоріями, запропонованими агентом
Перетворіть банківський експорт на перевірені записи. Агент пропонує правила категоризації. Попередній перегляд і перевірка дублікатів вирішують, що буде записано.
Попередні умови
Вам потрібні bea та свіжа демо-тека. Жодного облікового запису та жодного імпортера Python.
Підготовка вхідних даних
Створіть теку та журнал. Явні цілі --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,groceries,-20.00
2026-08-03,Shell,gas,-40.00
2026-08-04,Unknown Shop,mystery,-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 preview і застосовую локально. Ти не пишеш мій журнал.Виконайте 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 записів.
Перегляд і виправлення
Перекатегоризуйте рядок ! свідомо у своєму журналі після його прочитання. Успішна перевірка лише доводить, що журнал збалансований. Вона нічого не говорить про те, чи є Expenses:Uncategorized правильним рахунком. Щодо політики дублікатів, обробки конфліктів і розширеного шляху Python, дотримуйтесь покрокового керівництва з імпорту банківських CSV.
Рецепт 2: відповідь на запитання про баланс без записів
Дайте відповідь на одне запитання з демо-книг: скільки пішло на продукти та паливо у серпні 2026 року. Агент складає проєкт запиту. Лише команди читання дають відповідь.
Попередні умови
Вам потрібен демо-журнал із рецепту 1 або ваші власні книги. Кожна команда нижче є лише для читання.
Скопіюйте підказку для завдання
Вставте цю підказку своєму зовнішньому агенту:
Склади проєкт запиту Beancount (BQL), який відповідає: скільки я витратив
на продукти та паливо у серпні 2026 року. Використовуй назви моїх рахунків
точно так, як їх перелічує bea list open. Пропонуй лише команди читання:
bea query або bea report із явною ціллю --file. Не пропонуй редагування
журналу, щоб виправити несподівану суму. Несподівана сума означає,
що запит або книги потребують перегляду, а не компенсувального запису.Виконайте CLI-еквіваленти
Запустіть складений проєкт запиту проти явної цілі журналу, а потім перехресно перевірте звітом:
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 і запустіть запит знову. Ніколи не виправляйте несподівану суму, редагуючи журнал, щоб відповідати відповіді. Виправте запит або виправте книги, а потім повторно запустіть bea check.
Коли рецепт стає повторюваним завданням
Наведені вище підказки підходять для разових завдань, керованих вручну. Завдання, які ви повторюєте щотижня, підходять для версіонованих навичок у репозиторії продукту. Кожне посилання нижче відкриває поточний вихідний код навички, який містить власні інструкції з налаштування та тригерів. Ця CMS не зберігає копій цих файлів.
- Почніть свіжий журнал із порожньої теки за допомогою beancount-init. Він створює файл журналу, запускач Fava та Python-проєкт.
- Перетворіть банківський експорт на категоризовані записи за допомогою beancount-import. Він розміщує кожен рядок, пропонує категорії з історії журналу, пропускає вже імпортовані рядки та записує лише після підтвердження. Рецепт 1 вище є ручною формою цього завдання.
- Доведіть, що один рахунок збігається з його випискою за допомогою beancount-reconcile. Він порівнює журнал із випискою та після підтвердження розміщує твердження про баланс на кінець періоду.
- Дайте відповідь на запитання з книг за допомогою beancount-ask. Він запускає запити лише для читання та показує кожен запит поруч із його цифрою. Рецепт 2 вище є ручною формою цього завдання.
- Закрийте місяць за допомогою beancount-close. Він звіряє кожен активний рахунок, перевіряє повторювані записи та прапорці перегляду та фіксує закриття як коміт.
Повна колекція знаходиться в канонічному дереві навичок.
Дайте агенту з підтримкою shell bea або завантажте навичку в клієнт
Це два окремі кроки. Встановлення bea ніколи не встановлює та не налаштовує навички.
Агенту з підтримкою shell потрібна команда у його PATH. Встановіть її за допомогою короткого старту CLI, тоді агент запускає ті самі команди bea, які показують рецепти. Агент пропонує, ви переглядаєте, а bea перевіряє.
Навичка завантажується в сам клієнт агента через механізм навичок цього клієнта. Репозиторій продукту надає одне канонічне дерево обом підтримуваним клієнтам: Claude Code читає його за шляхом .claude/skills, а Codex за .agents/skills, як пов’язані теки в тому самому вихідному коді. Спрямуйте розташування навичок клієнта на потрібну теку навички та продовжуйте читати її поточний вихідний код для тригерних фраз і оновлень.
Питання у стилі ask без bea ask
Рецепт 2 відповідає на запитання журналу за допомогою зовнішнього агента плюс команд bea query і bea report лише для читання. Цей шлях є локальним. Він не потребує облікового запису та додаткового встановлення.
bea ask — це окремий вбудований помічник. Він не є ні рецептом вище, ні навичкою beancount-ask. Він маршрутизує запитання через хостинговий AI-сервіс, тому потребує додаткового компонента ask і хостингових облікових даних, як описано в довіднику CLI. Спочатку встановіть базовий CLI, а потім додавайте додатковий компонент лише тоді, коли вам потрібні хостингові відповіді.
Процитовані виводи та перевірка CLI
Кожна команда вище була виконана проти опублікованого пакета bea 0.1.0 у свіжій теці. Процитовані кількості, баланси та повідомлення є перевіркою CLI. Підказки для завдань не запускалися проти жодної моделі. Поведінку моделі оцінюють окремо.




