Beancount 中的选项配置
Beancount 的行为可以使用 option 指令进行自定义,这些指令位于主账本文件的顶部。这些键值对控制着一切,从你的根账户的名称到货币转换的处理方式。正确配置这些选项对于根据你的特定需求定制 Beancount 至关重要。⚙️
核心配置选项
这些选项控制着账本的基本设置。
基本设置
以下是一些你最常设置的选项。
option "title" "个人账本"
option "render_commas" "TRUE"
option "plugin_processing_mode" "raw"
title: 设置报表和 Web 界面的标题。render_commas: 如果为TRUE,报表中的数字将使用千位分隔符格式化(例如,1,000,000.00)。plugin_processing_mode: 控制插件的加载方式。raw仅加载你明确指定的插件,而default包括一组标准的实用插件。
账户名称自定义
你可以重命名 Beancount 的五个基本账户类型。这纯粹是表面上的更改,只会改变它们在报表中的显示方式。
option "name_assets" "资产"
option "name_liabilities" "负债"
option "name_equity" "权益"
option "name_income" "收入"
option "name_expenses" "支出"
权益账户配置
Beancount 会自动创建几个特殊的权益账户,以处理期初余额和收入计算。你可以为这些账户指定自定义名称。
option "account_previous_balances" "期初余额"
option "account_previous_earnings" "收益:期初"
option "account_current_earnings" "收益:当期"
option "account_previous_conversions" "转换:期初"
option "account_current_conversions" "转换:当期"
option "account_rounding" "舍入"
account_previous_balances: 用于将期初余额注入账本的账户。account_current_earnings: 用于累计当期所有收入和支出总额的账户,有效地计算你的净收入。account_rounding: 存放自动舍入产生的小额差异的账户。
精度和容差设置
这些选项控制 Beancount 如何处理交易中的舍入和小额不平衡。
默认容差配置
Beancount 可以自动推断具有多种货币或成本的交易的容差,从而允许小的舍入差异而不会导致错误。
option "inferred_tolerance_default" "USD:0.01"
option "inferred_tolerance_multiplier" "1.1"
option "infer_tolerance_from_cost" "True"
inferred_tolerance_default: 设置给定货币的默认容差。你可以使用*:0.5为所有货币设置默认值。inferred_tolerance_multiplier: 应用于容差的因子,以提供稍微大一点的误差范围。infer_tolerance_from_cost: 如果为True,则容差将从成本中的位数推断出来。
记账方法
此选项定义 Beancount 如何处理推断出一条腿的交易。
option "booking_method" "SIMPLE"
SIMPLE: 允许每笔交易仅自动平衡一种商品。这是推荐的也是最常用的方法。FULL: 允许平衡多种商品,这是一种更复杂且很少需要的方法。
货币管理
正确的货币配置对于准确的报告至关重要。
运营货币
你可以声明一种或多种“运营货币”。这些是你进行交易并希望在报表中看到的主要货币。
option "operating_currency" "USD"
option "operating_currency" "EUR"
option "conversion_currency" "NOTHING"
声明运营货币会告诉 Beancount 在报表中为它们创建专用列,从而可以轻松地以你最常用的货币查看你的财务状况。将 conversion_currency 设置为 NOTHING 将禁用自动转换列,这通常是首选的,以便获得更简洁的报表。
文档管理
Beancount 可以将交易链接到外部文件,如收据或发票。documents 选项指定存储这些文件的根文件夹。
option "documents" "/path/to/documents/archive"
要求:
- 文件必须使用
YYYY-MM-DD.description.ext格式命名(例如,2025-07-28.amazon-order.pdf)。 - 你可以为不同的文件夹指定多个
documents选项。 - 路径可以是绝对路径,也可以是相对于主账本文件的相对路径。
插件系统
Beancount 的功能可以通过插件扩展。
插件配置
你可以通过指定其模块路径来启用插件。
option "plugin" "beancount.plugins.module_name"
如前所述,plugin_processing_mode 选项控制 Beancount 是仅加载你指定的插件 (raw) 还是同时加载一组默认插件 (default)。
技术限制和约束
这些选项控制 Beancount 解析器的技术方面。
字符串处理
你可以设置多行字符串中允许的行数的限制,以防止解析错误。
option "long_string_maxlines" "64"
实验性功能
Beancount 有时会包含可以使用选项启用的实验性功能。例如,要启用显式容差语法:
option "experiment_explicit_tolerances" "True"
这允许你在交易过账中直接指定容差,例如:532.23 ~ 0.001 USD。
系统行为控制
这些选项用于保持兼容性或特定系统行为。
遗留支持
此选项启用旧的、固定的容差值,以便与旧账本向后兼容。
option "use_legacy_fixed_tolerances" "True"
固定的旧版容差为:
- Balance/Pad 指令:
0.015单位 - 交易:
0.005单位
推荐配置 ✅
对于大多数用户,以下配置提供了一个稳健且明智的起点。
基本设置
option "title" "个人账本"
option "operating_currency" "USD" // 更改为你的主要货币
option "documents" "/home/user/Documents/beancount" // 更改为你的文档路径
option "render_commas" "TRUE"
精度控制
option "inferred_tolerance_default" "USD:0.01" // 更改为你的主要货币
option "inferred_tolerance_multiplier" "1.1"
option "infer_tolerance_from_cost" "True"
账户结构
option "account_previous_balances" "Equity:Opening-Balances"
option "account_current_earnings" "Equity:Current-Earnings"
option "account_rounding" "Expenses:Rounding"
此设置为新的 Beancount 账本提供了坚实的基础,确保了清晰的报告、合理的精度控制和符合逻辑的权益账户结构。