Используйте этот справочник для поиска команд bea и их поведения. Для первой бухгалтерской книги следуйте краткому руководству по CLI. Для файлов банковских выписок используйте пошаговое руководство по импорту.
Команды с первого взгляда
| Команда | Назначение |
|---|---|
bea init [DIRECTORY] | Создать бухгалтерскую книгу с общими счетами |
bea add TYPE | Добавить директиву с датой |
bea add transactions --from FILE.json | Добавить пакет транзакций |
bea import SOURCE | Предварительный просмотр экспорта; добавьте --apply для записи |
bea list TYPE | Перечислить и отфильтровать директивы |
bea check | Проверить полную бухгалтерскую книгу |
bea format [PATH] | Выровнять файл или рекурсивно отформатировать каталог |
bea query [BQL] | Выполнить запрос или открыть интерактивную оболочку запросов |
bea report TYPE | Сформировать финансовые отчеты |
bea ask [QUESTION] | Использовать необязательную облачную ИИ-помощь с локальной книгой |
bea cloud … | Войти и управлять облачными бухгалтерскими книгами |
bea upgrade [--check] | Обновить с помощью менеджера пакетов или проверить наличие обновления |
Глобальные параметры и пути
Глобальные параметры идут перед командой:
bea --file ~/my-books/main.bean check
bea --json list transaction --limit 100| Параметр | Поведение |
|---|---|
--file / -f PATH | Выбрать корневую бухгалтерскую книгу; переопределяет BEA_FILE и ./main.bean |
--json | Структурированный вывод; также отключает подсказки CLI |
--no-input | Отключить подсказки; отсутствие необходимого ввода завершается кодом 2 |
--yes / -y | Подтвердить операции, такие как удаление облачных данных; не предоставляет разрешение на запись ИИ |
--debug | Включить трассировку исключений |
--version | Показать установленную версию без сетевого запроса |
--help / -h | Показать справку; также доступна для подкоманд |
--show-completion | Вывести автодополнение оболочки |
--install-completion | Установить автодополнение оболочки |
--shell NAME | Выбрать bash, zsh, fish, powershell или pwsh вместо определения оболочки |
init создает собственный целевой каталог/файл и игнорирует BEA_FILE. Он принимает глобальный --file вместо аргумента каталога. format использует собственный позиционный целевой объект, по умолчанию — рабочий каталог. Глобальный --file не выбирает цель форматирования.
Создание бухгалтерской книги
bea init [DIRECTORY] по умолчанию использует текущий каталог. Каталог создает main.bean; путь .bean или .beancount напрямую называет новый файл.
| Параметр | Поведение |
|---|---|
--currency / -c SYMBOL | Рабочая валюта; требуется при автоматическом режиме, интерактивный по умолчанию USD |
--date YYYY-MM-DD | Самая ранняя дата истории/открытия; иначе подсказка или сегодня |
--opening-balance "ACCOUNT NUMBER" | Повторите для шаблонных счетов активов/обязательств; суммы используют рабочую валюту |
Шаблон открывает Assets:Checking, Assets:Savings, Assets:Cash, Liabilities:CreditCard, Income:Salary, Income:Interest, Expenses:Groceries, Expenses:Dining, Expenses:Rent, Expenses:Transport, Expenses:Utilities, Expenses:Fees и Equity:OpeningBalances.
Начальные остатки компенсируются через Equity:OpeningBalances. Долг отрицательный. Ввод валюты приводится к верхнему регистру. Разрешены пользовательские символы; символ, не являющийся тремя заглавными буквами, вызывает предупреждение о опечатке. Это не проверка по реестру ISO-валют.
Существующие файлы никогда не перезаписываются. Новые файлы используют разрешения только для владельца, режим 0600 на POSIX. Последующие записи add, import и format сохраняют разрешения и уважают доступные только для чтения места назначения.
Добавление транзакций
bea add transaction -n "Groceries" --payee "Corner Market" \
-p "Expenses:Groceries 30" -p "Assets:Checking" \
--flag '!' --tag household --link receipt-42 --meta 'receipt:IMG_42.jpg'| Параметр | Поведение |
|---|---|
--posting / -p POSTING | Обязательный; повторите для каждой проводки |
--date YYYY-MM-DD | По умолчанию сегодня |
--flag CHARACTER | По умолчанию *; используйте !, чтобы пометить транзакцию для проверки |
--payee TEXT | Необязательная другая сторона |
--narration / -n TEXT | Необязательное назначение; пропущенный текст отображается как (no narration) |
--tag TAG, --link LINK | Повторяемые; необязательный ведущий # или ^ принимается |
--meta KEY:VALUE | Повторяемые метаданные транзакции |
--into FILE | Записать во включаемый файл, проверяя корневой файл |
--allow-errors | Явно разрешить семантические ошибки проверки; синтаксис все равно должен быть разборчивым |
Одна проводка может опустить свою сумму. Пронумерованные проводки могут опускать валюту, когда у счета есть одна разрешенная валюта или в книге есть одна совместимая рабочая валюта. В противном случае укажите символ.
Собственный синтаксис проводок поддерживает арифметику, такую как 84/2 EUR, затраты, такие как {100 USD}, общие затраты {{1000 USD}}, и цены @ или @@. Используйте десятичные суммы, такие как 1000, а не экспоненциальную запись, такую как 1e3.
Обмен валюты требует фактический курс транзакции. Например, запишите 100 EUR @ 1.08 USD на счет, открытый в EUR, и -108 USD на счет проверки. Покупка инвестиции может записать 2 AAPL {100 USD} на счет, открытый в AAPL, и -200 USD на счет проверки. Добавляйте котировки price с датами, когда для отчетов нужна рыночная оценка.
Метаданные принимают простые строки, такие как --meta 'receipt:IMG_42.jpg'. Собственные числа, логические значения, даты и суммы сохраняют свои типы. Примеры включают --meta 'reviewed:TRUE', --meta 'received:2026-08-03' и --meta 'fee:2.50 USD'. Внутренние кавычки принуждают к строке: --meta 'code:"1234"'. Ключи должны быть уникальными; filename и lineno зарезервированы.
Одиночные добавления, массовые добавления и импорт заменяют переносы строк в получателях, назначениях и строковых метаданных пробелами. Кавычки и обратные слэши сохраняют содержимое.
Добавление других директив
Все эти команды требуют --date YYYY-MM-DD. Они также принимают --into FILE и --allow-errors.
| Тип | Обязательные поля | Дополнительные параметры |
|---|---|---|
open | --account / -a | Повторяйте --currency / -c для ограничения валют |
close | --account / -a | — |
balance | --account / -a, --amount "NUMBER CURRENCY" | --pad-from ACCOUNT, --pad-date YYYY-MM-DD |
pad | --account / -a, --source / -s | — |
note | --account / -a, --comment / --message / -m | — |
event | --type / -t, --description / -d | — |
price | --currency / --commodity / -c, --amount "NUMBER CURRENCY" | Валюта называет товар, для которого устанавливается цена |
commodity | --currency / --commodity / -c | — |
document | --account / -a, --filename / --path | Повторяемые --tag и --link |
custom | --type / -t | Повторяемые --value / -v KIND:VALUE |
Имена счетов имеют корень с заглавной буквы и сегменты, разделенные двоеточием. Каждый субакаунт начинается с заглавной буквы или цифры. Beancount поддерживает буквы Unicode и настроенные имена корней.
Баланс проверяет счет на начало его даты. Поддерживается синтаксис допуска, например --amount "1538 ~ 1 EUR". Допуск должен быть неотрицательным.
Используйте add balance --pad-from Equity:OpeningBalances для записи pad и проверки баланса вместе. Pad по умолчанию на предыдущий день; --pad-date может выбрать другой более ранний день. Оба счета должны быть активными. Отдельный pad требует более позднего баланса для его использования. --allow-errors может подготовить это промежуточное состояние, но не может обойти недопустимый счет pad.
add price пропускает точный дубликат даты/товара/цены в корне и его включениях. Он завершается с кодом 0 и указывает существующее местоположение. Другие даты или цены являются новыми добавлениями.
Пути документов разрешаются рядом с файлом, содержащим директиву. С --into years/2026.bean, --filename receipt.pdf означает years/receipt.pdf, а не файл рядом с рабочим каталогом вашей оболочки.
Виды пользовательских значений: text, number, amount, account, bool и date. Например, бюджет может использовать --value "text:travel" --value "amount:500 USD".
Массовый JSON-ввод
bea add transactions --from transactions.json принимает массив JSON:
[
{
"date": "2026-08-04",
"narration": "Groceries",
"postings": [
{ "account": "Expenses:Groceries", "amount": "45.00 USD" },
{ "account": "Assets:Checking" }
],
"meta": { "receipt": "R-43", "reviewed": true }
}
]Каждая транзакция требует date и postings. Необязательные поля: flag, payee, narration, tags, links и meta.
Проводка использует либо amount, либо units, например {"number":"45.00","currency":"USD"}. Опустите оба для балансирующей проводки. Поля проводки также включают cost, price, flag и meta. Затраты содержат number и currency, с необязательными date и label. Цены содержат number и currency.
Используйте строки для десятичных чисел. Метаданные используют обычные строки и логические значения, или тегированные значения, такие как {"kind":"number","value":"1.125"}, {"kind":"date","value":"2026-08-04"} и {"kind":"amount","number":"2.50","currency":"USD"}. Необязательное местоположение source транзакции никогда не записывается как метаданные.
По умолчанию — атомарный пакет: любая отклоненная строка оставляет книгу без изменений и завершается с кодом 1. --partial записывает допустимое подмножество и все равно завершается с кодом 1, если какие-либо строки отклонены. Ошибки JSON описывают результат в error.result; индексы строк там начинаются с нуля. Номера строк для человека начинаются с единицы.
Массовое добавление принимает --into и --allow-errors. Он не дедуплицирует. Используйте bea import для проверки банковских экспортов.
Разделенные бухгалтерские книги и безопасность записи
Держите --file указанным на корневую книгу. Добавьте --into для выбора существующего включаемого файла:
bea --file ~/my-books/main.bean add transaction --into 2026.bean \
--date 2026-08-02 -n "Groceries" \
-p "Expenses:Groceries 30" -p "Assets:Checking"Назначение относительно корневого каталога. Оно должно уже быть включено; указание несвязанного файла отклоняется. Команды добавления, импорт и интерактивные записи ИИ поддерживают это разделение.
Записи проверяют полную кандидатную книгу, включая плагины и регистрацию пакетов затрат. Одновременное изменение корня или графа включений завершается с кодом 4. Цель только для чтения завершается с кодом 3. Успешные добавления используют то же выравнивание, что и bea format, которое может переформатировать существующие столбцы в этом месте назначения.
Перечисление директив
bea list TYPE поддерживает одиннадцать типов: transaction, open, close, balance, pad, note, event, price, commodity, document и custom.
| Параметр | Применяется к | Поведение |
|---|---|---|
--limit / -l N | Все типы | Положительный предел; по умолчанию 50 |
--from-date, --to-date | Все типы | Включительные границы YYYY-MM-DD |
--allow-errors | Все типы | Разрешить частичные данные, несмотря на ошибки загрузчика |
--account / -a TEXT | Транзакция, открытие, закрытие, баланс, pad, заметка, документ | Нечувствительная к регистру подстрока счета |
--currency / -c SYMBOL | Цена, товар | Чувствительный к регистру точный символ; цена фильтрует базовый товар |
--sort newest/oldest | Транзакция | По умолчанию новейшие; применяется перед пределом |
--flag CHARACTER | Транзакция | Фильтрация записей, таких как !, перед пределом |
--details | Транзакция | Показать синтаксис Beancount, каждую проводку, метаданные и исходные местоположения |
Другие типы директив сохраняют хронологический порядок. Таблица транзакций с фильтром по счету помечает столбец суммы как MATCHING POSTING AMOUNTS. Подробности и JSON по-прежнему включают все проводки каждой выбранной транзакции. Подробности отображают загруженные записи, включая выведенные суммы; они не являются сырыми выдержками из исходного кода.
Проверка, форматирование и запрос
bea check проверяет корневой файл и включения. Он завершается с кодом 1 при ошибках в книге и не имеет параметра --allow-errors. Запросы, списки и отчеты также отклоняют ошибки загрузчика, если вы явно не передаете их параметр --allow-errors.
Форматирование принимает файл .bean/.beancount или каталог. Каталог ищется рекурсивно.
| Режим форматирования | Запись? | Поведение при выходе |
|---|---|---|
bea format PATH | Да | 0 после успеха |
bea format PATH --dry-run | Нет | 0, даже если файлы изменятся |
bea format PATH --check | Нет | 1, если нужно форматирование; 0, когда чисто |
Каждый режим сообщает об ошибках синтаксиса по файлу и строке, пропускает эти файлы и завершается с кодом 1. Рекурсивный обычный запуск может отформатировать допустимые файлы. JSON сообщает scanned, formatted, skipped, dry_run и check в error.result при сбое.
bea query "BQL" выполняет язык запросов Beancount. Пропуск BQL открывает интерактивную оболочку; exit или quit закрывает ее. Аргумент запроса обязателен в автоматическом режиме. Таблица BQL по умолчанию имеет по одной строке на проводку. Таблицы запросов сохраняют точность. Пустые результаты печатают (no rows) в stderr; JSON возвращает пустой data.rows и метаданные столбцов в data.columns.
Финансовые отчеты
| Отчет | Вывод |
|---|---|
bea report overview | Активы, обязательства, доходы, расходы, чистая стоимость и серии интервалов |
bea report income-statement | Деревья доходов/расходов, чистая прибыль и строки периодов |
bea report balance-sheet | Деревья активов/обязательств/капитала и производная сверка |
bea report trial-balance | Балансы счетов |
Все отчеты принимают --conversion / -x, --time / -t, --account / -a и --allow-errors. Все, кроме пробного баланса, также принимают --interval / -i: monthly по умолчанию, или quarterly, yearly, weekly или daily.
Фильтры времени включают год, месяц, дату, квартал, неделю или диапазон, например 2026, 2026-08, 2026-08-31, 2026-Q3, 2026-W32 или "2026-01 - 2026-08". Относительные периоды включают year, quarter, month, week, day и смещения, такие как month-1. Фильтры счетов сохраняют каждую проводку соответствующей транзакции.
Конвертация по умолчанию использует единственную рабочую валюту книги. В противном случае по умолчанию используется units, сохраняя товары раздельно. at_cost использует затраты на приобретение. at_value использует рыночные стоимости с запасом по стоимости.
Явная конвертация валюты требует цен на каждую дату оценки или ранее, включая даты интервалов. Ошибка отсутствия цены называет фактический промежуток, например No EUR → USD price on or before 2026-01-31. Более поздняя котировка не может заполнить более ранний промежуток. Добавьте исторически подходящую цену, используйте --conversion units или выберите --allow-errors для проверки частичных значений.
Частичные отчеты сохраняют исходные валюты и помечают объединенные итоги как недоступные. JSON включает valuation: "partial", missing_prices и missing_price_dates. Затронутые итоги чистой прибыли/чистой стоимости равны null в запрошенной валюте.
Доходы, обязательства и капитал обычно используют отрицательные знаки Beancount. Чистая прибыль — это -(income + expenses), положительная для прибыли. Та же конвенция применяется к строкам периодов отчета о прибылях и убытках. Сверка балансового отчета производится для отчета; он не записывает директив. equity_reconciled указывает, доступна ли полная сверка.
JSON отчета также идентифицирует период, конечную дату, дату на дату, конвертацию, фильтр счетов и статус проверки книги. Проверяйте эти поля перед сравнением итогов.
Необязательная ИИ-помощь
bea ask требует как дополнительного пакета ask, так и учетных данных Beancount.io из bea cloud login или BEA_TOKEN. Установка Homebrew по умолчанию пропускает ИИ-зависимости. Пользователи Homebrew могут выполнить:
bea cloud login
uvx --from 'beancount-io[ask]' bea ask "What did I spend last month?" --printДля установки uv установите beancount-io[ask] и запустите bea ask напрямую. --print / -p отвечает один раз и выходит. В противном случае терминальная сессия интерактивна, и необязательный вопрос предзаполняет ввод. Неинтерактивное использование требует вопроса. JSON-режим не поддерживается.
Запросы выполняются локально. Вопросы, контекст навыков и результаты инструментов отправляются в облачный сервис Beancount.io AI. Интерактивные записи предварительно просматриваются, подтверждаются, проверяются и записываются атомарно. Они принимают --into. Глобальный --yes не предоставляет разрешение на запись ИИ. Режим одного ответа не применяет предложенные записи.
Ask читает NAME/SKILL.md из .agents/skills/ в рабочем каталоге и из skills/ в каталоге конфигурации пользователя. Определения проекта имеют приоритет по имени. Каждый файл требует поля YAML name и description. Полные инструкции загружаются по требованию.
Облачные бухгалтерские книги
| Команда | Параметры и поведение |
|---|---|
bea cloud login | Интерактивный вход через браузер/устройство |
bea cloud logout | Пытается выполнить удаленный выход и очищает сохраненные учетные данные |
bea cloud status | Учетная запись, источник учетных данных и срок действия |
bea cloud ledger list | --page по умолчанию 1; --limit по умолчанию 50, максимум API 100 |
bea cloud ledger show OWNER/NAME | Проверить облачную бухгалтерскую книгу |
bea cloud ledger create NAME | --description / -d, --private / --public; приватная по умолчанию |
bea cloud ledger clone OWNER/NAME | Клонировать по SSH; необязательный --dir PATH |
bea cloud ledger delete OWNER/NAME | Постоянное удаление; требуется подтверждение или глобальный --yes |
Создание также принимает --clone и --dir. Для клонирования требуются Git и SSH. Если клонирование не удается после создания, облачная книга все равно существует. Локальные команды не загружают вашу книгу автоматически. Нет глобального параметра --ledger.
JSON и коды выхода
Глобальный --json помещает успешные результаты в stdout:
{
"bea": "0.1.0",
"target": { "file": "/home/alice/my-books/main.bean" },
"data": [],
"truncated": false,
"limit": 50
}bea — установленная версия; data зависит от команды. Цели идентифицируют файл, каталог, сервер или отсутствие цели. Включенные записи также идентифицируют into. Десятичные суммы и даты используют строки. Ограниченные списки включают limit и truncated.
Сбои записывают {"error":{"category":"validation","message":"…","exit_code":1}} в stderr. Ошибка также может включать details, result, request_id бэкенда и traceback с --debug.
| Код | Категория | Значение |
|---|---|---|
| 0 | — | Успех, включая предварительные просмотры и намеренные пропуски дубликатов |
| 1 | validation | Ошибка книги/схемы, сбой проверки форматирования или другая ошибка выполнения |
| 2 | usage | Неверные аргументы, отсутствие цели/ввода или отсутствие необязательных зависимостей |
| 3 | auth | Ошибка аутентификации или разрешения |
| 4 | conflict | Одновременное редактирование, требуется проверка импорта, существующая цель init или неопределенный результат удаленной записи |
Проверяйте error.result перед повторной попыткой изменения. Частичный пакет может записать принятые строки, рекурсивное форматирование может изменить допустимые файлы, а создание-и-клонирование может создать облачную книгу перед выходом с ненулевым кодом.
Подсказки CLI отключаются через --no-input, JSON-режим, не-терминальный stdin или истинное значение CI. Облачное удаление по-прежнему требует явного --yes. Импорты требуют явного решения о дубликате, когда совпадения требуют проверки.
Исключения вывода: Ask отклоняет JSON; облачный вход требует взаимодействия; успешные выход из облака и клонирование не возвращают объект успеха JSON. Справка, версия и автодополнение сохраняют текстовый вывод. upgrade может выводить вывод менеджера пакетов в stderr, включая JSON-режим.
Настройки, обновления и сохраненное состояние
| Переменная окружения | Назначение |
|---|---|
BEA_FILE | Корневая книга по умолчанию после --file |
BEA_CONFIG_DIR | Переопределить каталог конфигурации пользователя |
XDG_CONFIG_HOME | Иначе используйте $XDG_CONFIG_HOME/bea, с резервным ~/.config/bea |
XDG_CACHE_HOME | База каталога кэша; иначе ~/.cache/bea |
BEA_TOKEN | Переопределение облачных учетных данных; имеет приоритет над сохраненными и не сохраняется |
BEA_API_URL | База API; по умолчанию https://api.v3.beancount.io |
BEA_DASHBOARD_URL | База входа через браузер; по умолчанию https://beancount.io |
BEA_NO_UPDATE_NOTIFIER | Отключить пассивные уведомления об обновлениях при истинном значении |
CI | Отключить подсказки CLI и пассивные уведомления об обновлениях при истинном значении |
Истинные значения: 1, true, yes и on, без учета регистра и окружающих пробелов. Состояние конфигурации включает учетные данные, историю подсказок Ask, пользовательские навыки, запомненные пути импортера и кэши проверок обновлений. Блокировки записи находятся в каталоге кэша locks/, вне вашего каталога книги.
bea upgrade --check сообщает версии и метод установки без обновления. bea upgrade вызывает brew upgrade bea, uv tool upgrade beancount-io или pipx upgrade beancount-io. Редактируемые установки получают руководство по ручному обновлению. Пассивные проверки выполняются не чаще одного раза в день в интерактивных установленных копиях; явный upgrade --check все равно выполняется, когда пассивный уведомитель отключен.
Удалите с помощью соответствующего менеджера: brew uninstall bea, uv tool uninstall beancount-io или pipx uninstall beancount-io. Ваши файлы книги и конфигурация пользователя остаются.
Частые исправления
| Симптом | Следующий шаг |
|---|---|
| Книга не найдена | Выберите --file PATH, войдите в каталог книги или используйте bea init для новых книг |
| Глобальный флаг говорит “Нет такого параметра” | Переместите его перед командой, как в bea --file main.bean check |
| Счет неизвестен | Откройте его с помощью bea add open --date YYYY-MM-DD --account ACCOUNT |
| Счет неактивен | Прочтите указанные даты открытия/закрытия; исправьте дату транзакции или историю счета |
| Pad не используется | Завершите его более позднюю проверку баланса; используйте add balance --pad-from для атомарной пары |
| Конвертация валюты неполная | Добавьте цены, покрывающие даты, указанные в ошибке, или проверьте units |
| Документ не может быть найден | Разрешите его путь рядом с файлом директивы, включая место назначения --into |
| Книга изменилась во время записи | Проверьте новое содержимое, затем повторите попытку с свежего предварительного просмотра |
| Определение оболочки не удалось | Укажите оболочку, например bea --shell zsh --show-completion |
Используйте bea COMMAND --help для проверки вашей установленной версии. Ссылка на репозиторий исходного кода содержит дополнительные примеры и точные определения моделей директив.