پرش به محتوای اصلی

اکوسیستم Beancount: تحلیلی جامع

منتشر شده آخرین بهروزرسانی زمان مطالعه 53 دقیقهMike ThriftMike Thrift
اکوسیستم Beancount: تحلیلی جامع
فهرست مطالب این صفحه

تا تاریخ 2026-09-15.

برای فهرست نگهداریشدهای از واردکنندهها، افزونهها، ویرایشگرها و منابع قیمت، از Awesome Beancount شروع کنید. برای جریانهای کاری عملی جامعه، به نمایش جامعه مراجعه کنید. برای رابط خط فرمان میزبانی که بررسی، پرسوجو، واردات و گزارشها را پوشش میدهد، به مرجع CLI Beancount مراجعه کنید؛ تحلیلهای مبتنی بر Fava در راهحلها: تحلیلها قرار دارند.

عملکرد و فلسفه اصلی Beancount

Beancount یک سیستم حسابداری دوطرفه و متنباز است که از فایلهای متنی ساده برای ثبت تراکنشها استفاده میکند. در هسته خود، Beancount دفتر کل شما را به عنوان یک مجموعه داده تعریفشده توسط یک گرامر ساده و سختگیرانه در نظر میگیرد. هر رویداد مالی (تراکنشها، افتتاح حسابها، قیمت کالاها و غیره) یک دستور در یک فایل متنی است که Beancount آن را به یک پایگاه داده درونحافظهای از ورودیها تجزیه میکند. این طراحی اصل دوطرفه را اعمال میکند: هر تراکنش باید بدهیها و بستانکاریها را در بین حسابها متعادل کند. نتیجه یک دفتر کل بسیار شفاف و قابل ممیزی است که میتوانید آن را مدیریت نسخه، بازرسی و به راحتی پرسوجو کنید.

فلسفه – صحت و مینیمالیسم: طراحی Beancount یکپارچگی دادهها و سادگی را در اولویت قرار میدهد. خالق آن، مارتین بلیس، Beancount را به عنوان «بدبین» توصیف میکند به این معنا که فرض میکند کاربر اشتباه خواهد کرد و بنابراین بررسیها و محدودیتهای اضافی را تحمیل میکند. به عنوان مثال، Beancount به شما اجازه نمیدهد داراییهایی را که هرگز اضافه نشدهاند حذف کنید (جلوگیری از موجودی سهام یا مانده نقدی منفی) و میتواند اعمال کند که هر حساب قبل از استفاده باز شود. این فاقد مفهوم «مجازی» یا بستانکاریهای خودکار متعادل در Ledger است – یک انتخاب عمدی برای وادار کردن به ثبتهای کاملاً متعادل. Beancount به طور مؤثر «سختگیرانه» بر روی صحت با بررسیهای متقاطع بیشتر نسبت به دفترداری دوطرفه پایه عمل میکند. این رویکرد محتاطانه برای کاربرانی جذاب است که «به خودشان زیاد اعتماد ندارند» و میخواهند نرمافزار خطاهایشان را بگیرد.

گزینههای حداقلی، حداکثر سازگاری: در تضاد با گزینههای خط فرمان و تنظیمات بیشمار Ledger، Beancount مینیمالیسم را انتخاب میکند. گزینههای سراسری بسیار کمی وجود دارد و هیچکدام معنای تراکنش را خارج از فایل دفتر کل تغییر نمیدهند. تمام پیکربندیهایی که بر حسابداری تأثیر میگذارند (مانند روشهای مبنای هزینه کالا یا فرضیات ثبت) در فایل از طریق دستورها یا افزونهها انجام میشود و تضمین میکند که بارگذاری همان فایل همیشه نتایج یکسانی را بدون توجه به نحوه تولید گزارشها ایجاد کند. این طراحی از پیچیدگی دستگیرههای متعدد Ledger و تعاملات ظریف بین آنها جلوگیری میکند. فلسفه Beancount این است که یک ابزار حسابداری باید یک خط لوله پایدار و قطعی از فایل ورودی تا گزارشها باشد. این امر با در نظر گرفتن دفتر کل به عنوان یک جریان مرتب از دستورها که میتوانند به صورت برنامهای و به ترتیب پردازش شوند، محقق میشود. حتی چیزهایی که Ledger آنها را نحو خاص میداند (مانند ماندههای افتتاحیه یا عبارتهای قیمت) دستورهای درجه یک در مدل داده Beancount هستند که سیستم را بسیار قابل توسعه میکند.

توسعهپذیری از طریق افزونهها و زبان پرسوجو: Beancount در پایتون پیادهسازی شده است و قلابهایی برای تزریق منطق سفارشی به خط لوله پردازش فراهم میکند. کاربران میتوانند افزونههایی در پایتون بنویسند که بر روی جریان تراکنشها عمل میکنند (به عنوان مثال، برای اعمال یک قانون سفارشی یا تولید ورودیهای خودکار). این افزونهها در هنگام پردازش فایل اجرا میشوند و به طور مؤثر عملکرد اصلی Beancount را بدون نیاز به اصلاح منبع گسترش میدهند. Beancount همچنین شامل یک زبان پرسوجوی قدرتمند (الهامگرفته از SQL) برای برش و تحلیل دفتر کل است. ابزار bean-query دفتر کل تجزیهشده را به عنوان یک پایگاه داده در نظر میگیرد و به شما امکان میدهد پرسوجوهای تحلیلی روی آن اجرا کنید – به عنوان مثال، جمع هزینهها بر اساس دسته یا استخراج تمام تراکنشها برای یک دریافتکننده خاص. در Beancount نسخه 3.x، این قابلیت پرسوجو به یک بسته مستقل به نام beanquery منتقل شد، اما از دیدگاه کاربر همچنان گزارشدهی انعطافپذیر از طریق پرسوجوهای مشابه SQL فراهم میکند.

متن ساده و مدیریت نسخه: به عنوان یک ابزار حسابداری متن ساده، Beancount بر کنترل کاربر و ماندگاری دادهها تأکید دارد. دفتر کل صرفاً یک فایل متنی .beancount است که میتوانید در هر ویرایشگر متنی آن را ویرایش کنید. این بدان معناست که کل تاریخچه مالی شما به شکل قابل خواندن توسط انسان ذخیره میشود و میتوانید آن را در Git یا سیستم مدیریت نسخه دیگری قرار دهید تا تغییرات را در طول زمان پیگیری کنید. کاربران اغلب فایل Beancount خود را تحت مدیریت نسخه نگه میدارند تا یک مسیر ممیزی از هر ویرایش (با پیامهای commit که تغییرات را توصیف میکنند) حفظ کنند. این رویکرد با فلسفه Beancount همسو است که دادههای حسابداری، به ویژه امور مالی شخصی یا مشاغل کوچک، باید شفاف و «مقاوم در برابر آینده» باشند – نه قفلشده در یک پایگاه داده اختصاصی. به قول خود مارتین بلیس، Beancount یک «کار از روی علاقه» است که برای جامعه به عنوان ساده، بادوام و رایگان ساخته شده است. اولین بار در حدود سال 2007 توسعه یافت و از طریق بازنویسیهای عمده (v1 به v2 و اکنون v3 در 2024) تکامل یافته است تا طراحی خود را اصلاح کند و در عین حال فلسفه اصلی مینیمالیسم و صحت را حفظ کند.

ابزارها، افزونهها و توسعهها در اکوسیستم Beancount

اکوسیستم Beancount مجموعهای غنی از ابزارها، افزونهها و توسعهها را ایجاد کرده است که عملکرد اصلی دفتر کل را تقویت میکنند. اینها شامل وارد کردن دادهها، ویرایش دفترها، مشاهده گزارشها و افزودن ویژگیهای حسابداری تخصصی هستند. در زیر مروری بر مؤلفهها و افزونههای کلیدی در دنیای Beancount است:

ابزارهای وارد کردن داده (واردکنندهها)

یکی از مهمترین نیازها برای استفاده عملی، وارد کردن تراکنشها از بانکها، کارتهای اعتباری و سایر مؤسسات مالی است. Beancount یک چارچوب واردات و اسکریپتهای واردات مشارکتی جامعه را برای این منظور فراهم میکند. در Beancount 2.x، ماژول داخلی beancount.ingest (با دستورهایی مانند bean-extract و bean-identify) برای تعریف افزونههای واردکننده در پایتون و اعمال آنها بر صورتهای دانلودشده استفاده میشد. در Beancount 3.x، این ماژول با یک پروژه خارجی به نام Beangulp جایگزین شده است. Beangulp یک چارچوب واردکننده اختصاصی است که از beancount.ingest تکامل یافته و اکنون روش توصیهشده برای خودکارسازی واردات تراکنش برای Beancount 3.0 است. این امکان نوشتن اسکریپتهای پایتون یا ابزارهای خط فرمان را فراهم میکند که فایلهای خارجی (مانند صورتهای CSV یا PDF) را میخوانند و ورودیهای Beancount را خروجی میدهند. این رویکرد جدید منطق واردات را از هسته Beancount جدا میکند – به عنوان مثال، دستور قدیمی bean-extract در نسخه 3 حذف شده است و در عوض اسکریپتهای واردات شما خودشان تراکنشها را از طریق رابط CLI Beangulp تولید میکنند.

دهها واردکننده آماده برای بانکها و فرمتهای مختلف وجود دارد که توسط جامعه مشارکت داده شدهاند. اسکریپتهای واردکننده برای مؤسسات در سراسر جهان وجود دارد – از Alipay و WeChat Pay در چین، تا بانکهای مختلف اروپایی (Commerzbank، ING، ABN AMRO و غیره)، تا بانکهای آمریکایی مانند Chase و Amex. بسیاری از اینها در مخازن عمومی (اغلب در GitHub) یا در بستههایی مانند beancount-importers جمعآوری شدهاند. به عنوان مثال، پروژه ابزارهای Beancount Tarioch (tariochbctools) واردکنندههایی برای بانکهای سوئیسی و بریتانیایی فراهم میکند و حتی واردات تراکنشهای رمزارز را مدیریت میکند. مثال دیگر Lazy Beancount است که مجموعهای از واردکنندههای رایج (برای Wise، Monzo، Revolut، IBKR و غیره) را بستهبندی میکند و یک راهاندازی مبتنی بر Docker برای خودکارسازی آسان فراهم میکند. مهم نیست از کدام بانک یا سرویس مالی استفاده میکنید، به احتمال زیاد شخصی یک واردکننده Beancount برای آن نوشته است – یا میتوانید خودتان با استفاده از چارچوب Beangulp آن را بنویسید. انعطافپذیری پایتون به این معنی است که واردکنندهها میتوانند تجزیه فایلهای CSV/Excel، دانلودهای OFX/QIF یا حتی خراشیدن APIها را مدیریت کنند و سپس تراکنشها را در قالب استاندارد Beancount منتشر کنند.

ویرایش و یکپارچهسازی ویرایشگر

از آنجا که دفترهای Beancount فقط متن هستند، کاربران اغلب از ویرایشگرهای متنی یا IDEهای مورد علاقه خود برای نگهداری آنها استفاده میکنند. اکوسیستم افزونههای پشتیبانی ویرایشگر را برای روانتر کردن این تجربه فراهم میکند. برای بسیاری از ویرایشگرهای محبوب توسعههایی وجود دارد که برجستهسازی نحو، تکمیل خودکار نام حسابها و بررسی خطای بلادرنگ را اضافه میکنند:

  • حالت Beancount Emacs: یک حالت اصلی Emacs (beancount-mode) برای ویرایش فایلهای .beancount در دسترس است که ویژگیهایی مانند رنگآمیزی نحو و یکپارچهسازی با بررسیکننده Beancount را ارائه میدهد. حتی میتواند bean-check را در پسزمینه اجرا کند تا خطاهای موجود در دفتر کل (مانند تراکنش نامتعادل) هنگام ویرایش علامتگذاری شوند.
  • افزونه VS Code: یک افزونه Beancount در بازار VSCode راحتیهای مشابهی را برای کاربران Visual Studio Code فراهم میکند. این افزونه از برجستهسازی نحو، تراز کردن مبالغ، تکمیل خودکار حسابها/دریافتکنندگان و حتی بررسی مانده هنگام ذخیره فایل پشتیبانی میکند. همچنین میتواند با Fava یکپارچه شود و به شما امکان میدهد رابط وب Fava را از داخل VSCode راهاندازی کنید.
  • افزونهها یا حالتها همچنین برای Vim، Atom و سایر ویرایشگرها وجود دارد. به عنوان مثال، یک گرامر Tree-sitter برای Beancount وجود دارد که برجستهسازی نحو را در ویرایشگرهای مدرن تقویت میکند و حتی در مؤلفه ویرایشگر مبتنی بر وب Fava نیز پذیرفته شده است. به طور خلاصه، هر محیط ویرایشی که دارید، جامعه به احتمال زیاد افزونهای را برای راحت و بدون خطا کردن ویرایش فایلهای Beancount فراهم کرده است.

برای ورود سریع تراکنشها خارج از ویرایشگرهای سنتی، ابزارهایی مانند Bean-add و برنامههای موبایل نیز وجود دارند. Bean-add یک ابزار خط فرمان است که امکان افزودن یک تراکنش جدید از طریق یک اعلان یا یک خط فرمان را فراهم میکند و پیشنهادات تاریخ و حساب را مدیریت میکند. در موبایل، پروژهای به نام Beancount Mobile یک رابط ساده برای وارد کردن تراکنشها در حال حرکت فراهم میکند (به عنوان مثال، ثبت خرید نقدی از تلفن شما). علاوه بر این، یک ربات تلگرام Beancount برای ثبت تراکنشها از طریق پیامرسانی وجود دارد – میتوانید پیامی با جزئیات تراکنش ارسال کنید و ربات آن را در فایل دفتر کل شما قالببندی کند.

فرانتاندهای وب و ابزارهای تجسم

(Fava) رابط وب Fava یک داشبورد تعاملی برای Beancount فراهم میکند که شامل گزارشهایی مانند صورت سود و زیان با تجسمها (که در اینجا به عنوان نقشه درختی هزینهها بر اساس دسته نشان داده شده است) در کنار جدولهای حسابها و ماندهها است.

فرانتاند اصلی Beancount Fava است، یک رابط وب مدرن. Fava به عنوان یک برنامه وب محلی اجرا میشود که فایل Beancount شما را میخواند و یک تجربه تعاملی غنی در مرورگر شما تولید میکند. این برنامه مجموعهای کامل از گزارشها را ارائه میدهد: ترازنامه، صورت سود و زیان، ارزش خالص در طول زمان، داراییهای پرتفوی، نمودارهای عملکرد، بودجهها و موارد دیگر – همه به صورت پیشفرض. کاربران اغلب Fava را به عنوان دلیل اصلی انتخاب Beancount نسبت به سایر ابزارهای حسابداری متن ساده ذکر میکنند. با یک دستور واحد (fava ledger.beancount)، میتوانید امور مالی خود را با نمودارها و جدولها به جای متن مرور کنید. Fava از ویژگیهایی مانند: بزرگنمایی روی حسابها، فیلتر کردن تراکنشها بر اساس دریافتکننده یا برچسب، ویرایشگر پرسوجو (تا بتوانید پرسوجوهای Beancount را اجرا کرده و نتایج را در مرورگر ببینید) و حتی یک ویرایشگر مبتنی بر وب یکپارچه برای دفتر کل شما پشتیبانی میکند. این بسیار قابل استفاده است و حسابداری متن ساده را برای کسانی که رابطهای بصری را ترجیح میدهند قابل دسترس میکند.

در زیر کاپوت، Fava در پایتون (Flask در بکاند) و جاوااسکریپت (Svelte در فرانتاند) نوشته شده است. چرخه انتشار خود را دارد و به طور فعال نگهداری میشود. قابل توجه است که Fava با توسعه Beancount همگام بوده است – به عنوان مثال، Fava 1.30 پشتیبانی از Beancount v3 را اضافه کرد و به استفاده از بستههای جدید beanquery و beangulp در داخل روی آورد. از Fava 1.30.13 (2026-05-19) (تغییرات)، پشتیبانی از Beancount 2 به طور کامل حذف شد – Fava فعلی در PyPI (1.30.16 تا 2026-09-15) انتظار یک دفتر کل Beancount 3 و واردکنندههای مبتنی بر beangulp را دارد. تمرکز Fava بر قابلیت استفاده شامل نکات خوبی مانند تکمیل خودکار در ویرایشگر وب و یک رابط کاربری شیک با حالت تاریک و نمودارهای پاسخگو است. همچنین یک پروژه مشتق به نام Fava-GTK وجود دارد که Fava را در یک برنامه دسکتاپ برای کاربران GNOME/Linux بستهبندی میکند که ظاهر برنامه بومی را ترجیح میدهند.

فراتر از Fava، گزینههای تجسم و تحلیل دیگری نیز وجود دارند. از آنجا که دادههای Beancount میتوانند به عنوان جدول صادر یا پرسوجو شوند، کاربران اغلب از ابزارهایی مانند نوت بوکهای Jupyter یا Pandas برای تحلیل سفارشی استفاده میکنند. به عنوان مثال، یک کاربر توصیف میکند که دادهها را از Beancount از طریق رابط پرسوجو به یک DataFrame پانداس برای تهیه یک گزارش سفارشی میکشد. همچنین اسکریپتهای مشارکتی جامعه برای گزارشهای خاص وجود دارد – به عنوان مثال، یک ابزار تحلیل تخصیص پرتفوی یا یک نمودار کنترل فرآیند برای هزینه در مقابل ارزش خالص. با این حال، برای اکثر مردم Fava قدرت گزارشدهی بیش از حد کافی را بدون نیاز به نوشتن کد فراهم میکند. حتی از توسعهها پشتیبانی میکند: میتوانید فایلهای پایتون را اضافه کنید که صفحات گزارش یا نمودارهای جدیدی به Fava اضافه میکنند. یک توسعه قابل توجه fava-envelope برای بودجهبندی پاکتی در داخل Fava است. به طور کلی، Fava به عنوان مرکز تجسم اکوسیستم Beancount عمل میکند.

ابزارهای خط فرمان و اسکریپتها

Beancount با ابزارهای CLI مختلفی همراه است (به ویژه در شاخه قدیمیتر v2، برخی از آنها در v3 حذف شدند). این ابزارها روی فایل دفتر کل شما عمل میکنند تا آن را بررسی کنند یا گزارشهای خاصی را در متن یا HTML تولید کنند:

  • bean-check: یک اعتبارسنج که خطاهای نحوی یا حسابداری را در فایل بررسی میکند. اجرای bean-check myfile.beancount شما را از هر نامتعادلی، حساب گمشده یا سایر مسائل آگاه میکند و اگر فایل بدون خطا باشد چیزی خروجی نمیدهد.
  • bean-format: یک قالببندیکننده که دفتر کل شما را با تراز کردن اعداد در ستونهای مرتب مرتب میکند، مانند اجرای یک قالببندیکننده کد بر روی کد منبع. این به تمیز و خوانا نگه داشتن فایل کمک میکند.
  • bean-query: یک پوسته تعاملی یا ابزار دستهای برای اجرای زبان پرسوجوی Beancount روی دفتر کل شما. میتوانید از آن برای تولید گزارشهای جدولی سفارشی استفاده کنید (به عنوان مثال، bean-query myfile.beancount "SELECT account, sum(amount) WHERE ...").
  • bean-report: یک تولیدکننده گزارش همهکاره (در v2) که میتواند گزارشهای از پیش تعریفشده (ترازنامه، صورت سود و زیان، تراز آزمایشی و غیره) را به کنسول یا فایلها خروجی دهد. به عنوان مثال، bean-report file.beancount balances ماندههای حساب را چاپ میکند. (در عمل، بسیاری از این گزارشهای متنی با ارائه زیباتر Fava جایگزین شدهاند.)
  • bean-web / bean-bake: یک رابط وب قدیمیتر که گزارشها را در localhost سرو میکرد یا آنها را به عنوان فایلهای HTML استاتیک «میپخت». اینها عمدتاً قبل از محبوب شدن Fava استفاده میشدند؛ bean-web یک نمای وب پایه از همان گزارشهایی که bean-report میتوانست تولید کند فراهم میکرد. در Beancount 3، bean-web حذف شده است (زیرا Fava اکنون فرانتاند وب توصیهشده است و تجربه برتری ارائه میدهد).
  • bean-example: یک ابزار برای تولید یک فایل دفتر کل نمونه (مفید برای تازهواردها برای دیدن یک الگو از ورودیهای Beancount).
  • bean-doctor: یک ابزار اشکالزدایی که میتواند مسائل موجود در دفتر کل یا محیط شما را تشخیص دهد.

قابل ذکر است که از Beancount v3، بسیاری از این ابزارها از پروژه اصلی خارج شدند. بسته اصلی Beancount سادهسازی شد و ابزارهایی مانند موتور پرسوجو و واردکنندهها به بستههای جداگانه (beanquery، beangulp و غیره) برای نگهداری آسانتر تقسیم شدند. به عنوان مثال، عملکرد bean-query اکنون توسط ابزار beanquery ارائه میشود که به طور جداگانه نصب میشود. از دیدگاه کاربر، عملکرد همچنان در دسترس است؛ فقط ماژولار شده است. جامعه Arch Linux این تغییر را هنگام بهروزرسانی Fava ذکر کرد: بسته Fava وابستگیهایی به beanquery و beangulp برای پشتیبانی از Beancount 3.x اضافه کرد. این رویکرد ماژولار همچنین به دیگران در جامعه اجازه میدهد تا به طور مستقلتر از چرخه انتشار Beancount به این ابزارهای کمکی کمک کنند.

افزونهها و توسعههای Beancount

یک نقطه قوت برجسته اکوسیستم Beancount سیستم افزونه است. با افزودن یک خط plugin "module.name" در فایل Beancount خود، میتوانید منطق پایتون سفارشی را که در طول پردازش دفتر کل اجرا میشود، وارد کنید. جامعه افزونههای زیادی برای گسترش قابلیتهای Beancount ایجاد کرده است:

  • کیفیت داده و قوانین: مثالها شامل beancount-balexpr است که به شما امکان میدهد معادلاتی شامل چندین حساب را تأیید کنید (به عنوان مثال، دارایی A + دارایی B = بدهی X)، و beancount-checkclosed که هنگام بستن یک حساب، تأییدیههای مانده را به طور خودکار وارد میکند تا اطمینان حاصل شود که به صفر خالص میرسد. حتی یک افزونه برای اطمینان از مرتب شدن تراکنشهای فایل بر اساس تاریخ وجود دارد (autobean.sorted) تا ورودیهای خارج از نظم را بگیرد.
  • خودکارسازی: افزونه beancount-asset-transfer میتواند ورودیهای انتقال غیرنقدی بین حسابها تولید کند (مفید برای انتقال سهام بین کارگزاران با حفظ مبنای هزینه). دیگری، autobean.xcheck، دفتر کل Beancount شما را در برابر صورتهای خارجی از نظر مغایرت بررسی متقابل میکند.
  • تراکنشهای تکرارشونده و بودجهها: افزونه «تکرار» یا درونیابی توسط Akuukis به شما امکان میدهد تراکنشهای تکرارشونده را تعریف کنید یا یک هزینه سالانه را در طول ماهها پخش کنید. برای بودجهبندی، توسعه fava-envelope (که از طریق Fava استفاده میشود) از روش بودجهبندی پاکتی در متن ساده پشتیبانی میکند. همچنین MiniBudget توسط Frank Davies وجود دارد – یک ابزار مستقل کوچک الهامگرفته از Beancount که به بودجهبندی برای استفاده شخصی یا مشاغل کوچک کمک میکند.
  • مالیات و گزارشدهی: برخی افزونهها به حسابداری مالیاتی کمک میکنند، مانند یکی که سود سرمایه را به طور خودکار به کوتاهمدت در مقابل بلندمدت طبقهبندی میکند. دیگری (fincen_114 توسط Justus Pendleton) یک گزارش FBAR برای مالیاتدهندگان آمریکایی با حسابهای خارجی تولید میکند و نشان میدهد که چگونه میتوان از دادههای Beancount برای گزارشدهی نظارتی استفاده کرد.
  • مخازن افزونه جامعه: مجموعههای افزونهای تنظیمشده مانند beancount-plugins (توسط Dave Stephens) با تمرکز بر چیزهایی مانند ورودیهای استهلاک، و beancount-plugins-zack (توسط Stefano Zacchiroli) که شامل کمککنندههای متفرقه مانند مرتب کردن دستورها هستند، وجود دارد.

علاوه بر افزونهها، ابزارهای کاربردی دیگری نیز در اطراف Beancount نیازهای خاصی را برطرف میکنند. به عنوان مثال، beancount-black یک قالببندیکننده خودکار مشابه قالببندیکننده کد Black است، اما برای فایلهای دفتر کل Beancount. یک ربات Beancount (تلگرام/Mattermost) برای افزودن تراکنشها از طریق چت همانطور که ذکر شد، و یک گردش کار Alfred برای macOS برای افزودن سریع تراکنشها به فایل شما وجود دارد. ابزاری به نام Pinto یک CLI «ابرشارژ شده» با ورود تعاملی (مثل bean-add پیشرفته) ارائه میدهد. برای کسانی که از سیستمهای دیگر مهاجرت میکنند، مبدلها وجود دارند (YNAB2Beancount، CSV2Beancount، GnuCash2Beancount، Ledger2Beancount) تا به وارد کردن دادهها از جای دیگر کمک کنند.

به طور خلاصه، اکوسیستم Beancount بسیار گسترده است. جدول 1 در زیر برخی از ابزارها و توسعههای اصلی را با نقشهای آنها فهرست میکند:

ابزار/توسعهتوضیحات
Fava (رابط وب)برنامه وب کامل برای مشاهده و ویرایش دفترهای Beancount. گزارشهای تعاملی (ترازنامه، سود و غیره)، نمودارها و قابلیتهای پرسوجو را فراهم میکند. تقویتکننده اصلی قابلیت استفاده برای Beancount.
Beangulp (چارچوب واردات)چارچوب واردکننده مستقل برای Beancount v3، جایگزین ماژول قدیمی ingest. کمک به تبدیل صورتهای بانکی (CSV، PDF و غیره) به ورودیهای Beancount با استفاده از اسکریپتهای افزونه.
Beanquery (ابزار پرسوجو)موتور پرسوجوی مستقل مشابه SQL برای دادههای Beancount. جایگزین bean-query در v3، امکان پرسوجوی پیشرفته از تراکنشها و ماندهها از طریق نحو آشنای SELECT-FROM-WHERE.
Bean-check / Bean-formatابزارهای CLI اصلی برای اعتبارسنجی یک فایل Beancount (بررسی خطاها) و قالببندی خودکار آن برای سازگاری. مفید برای نگهداری یک دفتر کل صحیح و تمیز.
افزونههای ویرایشگر (Emacs، VSCode، Vim و غیره)افزونهها/حالتهایی که پشتیبانی نحو Beancount و بررسی خطا را در ویرایشگرهای متنی اضافه میکنند. تجربه ویرایش دستی فایلهای .beancount را با ویژگیهایی مانند تکمیل خودکار و برجستهسازی خطای زنده بهبود میبخشند.
واردکنندههای جامعهمجموعههای اسکریپت واردات بانکی (بسیاری در GitHub) که بانکهای آمریکا، اتحادیه اروپا، آسیا و موارد دیگر را پوشش میدهند. به کاربران امکان میدهد به طور خودکار تراکنشها را از مؤسسات مالی خود به Beancount وارد کنند.

| مبدلها (ابزارهای مهاجرت) | ابزارهایی برای تبدیل دادهها از فرمتهای دیگر به Beancount، به عنوان مثال از GnuCash یا Ledger CLI به فرمت Beancount. پذیرش Beancount را بدون شروع از صفر تسهیل میکنند. | | CLI bea (Beancount.io) | CLI میزبان و سازگار با محلی (bea check، bea query، bea import، bea report و …) مستند در مرجع CLI. ابزارهای Beancount 3 را برای عملیات روزانه دفتر کل میپیچد. | | دفتر کل باز | دفترهای کل عمومی شرکتها که به عنوان فایلهای Beancount منتشر شده و در پستهای درآمد جاسازی شدهاند – به /open-ledger و نمایش جامعه مراجعه کنید تا ببینید کتابهای متن ساده چگونه سفر میکنند. |

CLI میزبان و دفتر کل باز (اضافهشده در 2026)

دو بخش که در هنگام تهیه پیشنویس اولیه این مرور نازک یا غایب بودند، اکنون در جریان کار روزانه Beancount.io قرار دارند:

  • CLI beaمرجع CLI Beancount و شروع سریع CLI اعتبارسنجی دفترها، اجرای BQL، وارد کردن فایلهای بانکی و تولید گزارشها را بدون دست و پنجه نرم کردن با نقاط ورودی جداگانه bean-* پوشش میدهند. هنگام دنبال کردن مثالهای اسناد فعلی، bea check / bea query را ترجیح دهید.
  • دفتر کل باز — دورههای مالی عمومی برای شرکتهای منتخب به عنوان مخازن Beancount زندگی میکنند و از طریق جاسازی دفتر در وبلاگ ظاهر میشوند. موجودی را در /open-ledger مرور کنید؛ راهنمای مدلسازی مدل یک شرکت عمومی در Beancount است.

مقایسه با Ledger، hledger و سیستمهای مشابه

Beancount به خانواده ابزارهای حسابداری دوطرفه متن ساده تعلق دارد، که در میان آنها Ledger CLI (Ledger جان ویگلی) و hledger برجسته هستند. در حالی که همه این سیستمها ایده اصلی فایلهای دفتر کل متن ساده و دفترداری دوطرفه را به اشتراک میگذارند، در نحو، فلسفه و بلوغ اکوسیستم متفاوت هستند. جدول زیر تفاوتهای کلیدی بین Beancount، Ledger و hledger را برجسته میکند:

جنبهBeancount (پایتون)Ledger CLI (C++)hledger (هاسکل)
نحو و ساختار فایلنحو سختگیرانه و ساختاریافته تعریفشده توسط یک گرامر رسمی (BNF). تراکنشها دارای خطوط صریح date flag "Payee" "Narration" و بستانکاریهایی با مقادیر هستند؛ همه حسابها باید به صراحت باز/تعریف شوند. بدون بستانکاری ضمنی؛ هر تراکنش باید متعادل باشد.نحو آزادتر. دریافتکننده/توضیحات معمولاً در همان خط تاریخ قرار دارد. امکان تعادل ضمنی (مانند یک تراکنش تکتراکنشی میتواند یک بستانکاری دوم را به یک حساب پیشفرض دلالت کند). نام حسابها را میتوان بدون اعلان قبلی استفاده کرد. گزینههای خط فرمان زیادی را ارائه میدهد که میتوانند بر تجزیه تأثیر بگذارند (به عنوان مثال، مفروضات سال، قوانین ادغام کالا).عمدتاً از نحو Ledger پیروی میکند با تفاوتهای جزئی. hledger بازنویسی ویژگیهای اصلی Ledger در هاسکل است، بنابراین فرمت ژورنال بسیار شبیه به Ledger است (با برخی توسعهها و تجزیه سختگیرانهتر به طور پیشفرض). به عنوان مثال، hledger در مورد نحو تاریخ و کالا کمی سختگیرانهتر از Ledger است، اما به اندازه Beancount سختگیر نیست.
فلسفهمحافظهکارانه و موشکافانه. بر گرفتن خطاهای کاربر و حفظ یکپارچگی دادهها بالاتر از همه تأکید دارد. بررسیهای زیادی (تأییدیههای مانده، ردیابی لات) را به طور پیشفرض تحمیل میکند. پیکربندی حداقلی – رویکرد «یک راه برای انجام آن» برای سازگاری. طراحی شده به عنوان یک کتابخانه با افزونهها برای توسعهپذیری (دادههای دفتر کل را به عنوان یک جریان برای پردازش در نظر میگیرد و منطق پایتون سفارشی را فعال میکند).خوشبینانه و انعطافپذیر. به کاربر اعتماد میکند که دادهها را به درستی وارد کند؛ محدودیتهای داخلی کمتری به طور پیشفرض. با دهها گزینه و پرچم فرمان برای تنظیم رفتار بسیار قابل تنظیم است. تمایل به یک ابزار یکپارچه با ویژگیهای داخلی (گزارشها، نمودارها) دارد و از زبان خاص دامنه در داخل دفتر کل برای چیزهایی مانند تراکنشهای خودکار و تراکنشهای دورهای استفاده میکند. توسعهپذیری معمولاً از طریق اسکریپتهای خارجی یا زبان پرسوجوی داخلی به جای APIهای افزونه است.واقعبینانه و سازگار. هدفش آوردن رویکرد Ledger به مخاطبان گستردهتر با رفتار قابل پیشبینی است. hledger به طور پیشفرض سازگاری بیشتری دارد (بدون مفروضات تعادلی بدون حسابهای صریح) و تفنگهای پا کمتری نسبت به حالتهای سهلگیرانه Ledger دارد. زیرمجموعهای از ویژگیهای Ledger را دارد (برخی از گزینههای عجیبتر Ledger پشتیبانی نمیشوند)، اما برخی از ویژگیهای خود را اضافه میکند (مانند رابط وب و واردات CSV داخلی). بر پایداری و صحت تأکید دارد، اما بدون سیستم افزونه مانند Beancount.
تراکنشها و تعادلدفترداری دوطرفه سختگیرانه: هر تراکنش باید مجموع بدهیها و بستانکاریهای برابر داشته باشد. به ورودیهای نامتعادل یا مکاننما اجازه نمیدهد (بدون «بستانکاریهای مجازی» که خودکار متعادل شوند). همچنین استقلال ترتیب را اعمال میکند: دفتر کل را میتوان به طور دلخواه بر اساس تاریخ مرتب کرد زیرا تأییدیههای مانده محدود به تاریخ هستند و به ترتیب فایل وابسته نیستند. ردیابی هزینه برای کالاها سختگیرانه است – هنگام فروش داراییها، باید لاتها را مشخص کنید یا Beancount FIFO/LIFO را اعمال میکند به طوری که نمیتوانید چیزی را که اضافه نکردهاید حذف کنید.اجازه سهلگیری بیشتری در تراکنشها را میدهد. Ledger به «بستانکاریهای مجازی» (با استفاده از براکتهای مربع [ ] یا پرانتز) اجازه میدهد که به یک حساب متعادل صریح نیاز ندارند – اغلب برای مدیریت بودجه یا تعادل حقوق صاحبان سهام ضمنی استفاده میشود. در Ledger میتوان یک تراکنش ناقص وارد کرد (یکی از طرفها را حذف کرد) و اجازه داد Ledger مبلغ متعادل را استنتاج کند. همچنین، Ledger حذف دارایی لات به لات را به طور سختگیرانه اعمال نمیکند؛ با خوشحالی از یک مانده کالای تجمیعی کم میکند حتی اگر لاتهای خاص ردیابی نشده باشند. این کار را برای حسابداری میانگین هزینه آسانتر میکند، اما به این معنی است که Ledger شما را از اشتباهاتی مانند فروش سهام بیشتر از آنچه در یک لات خاص دارید، باز نمیدارد.مشابه Ledger در اجازه دادن به بستانکاریهای مجازی و تعادل ضمنی، اما با رفتار سازگارتر. hledger قوانین تجزیه سختگیرانهتری نسبت به Ledger اعمال میکند اما از Beancount سهلگیرانهتر است.
موجودی و مبنای هزینهردیابی دقیق لات. Beancount اطلاعات هزینه را به لاتهای کالا متصل میکند (به عنوان مثال، خرید 10 سهم به قیمت 100 دلار هر کدام)، و هنگام کاهش موجودی، نیاز به تطبیق یک لات خاص یا استفاده از یک استراتژی تعریفشده دارد. اطمینان میدهد که سود سرمایه و مبانی هزینه به درستی توسط طراحی محاسبه میشوند. روش میانگین هزینه به طور پیشفرض نیست مگر اینکه به صراحت منطقی برای آن بنویسید، زیرا Beancount هر لات را به طور مجزا برای حفظ دقت در نظر میگیرد.موجودی انتزاعیتر. Ledger مقادیر کالا را روانتر در نظر میگیرد؛ به طور پیشفرض همه لاتها در گزارشها ادغام میشوند (فقط مقادیر کل را نشان میدهد). در صورت نیاز، گزینههایی برای گزارش بر اساس لات یا میانگین هزینه فراهم میکند، اما این یک نگرانی گزارشدهی است. از نظر تاریخی، Ledger از اطلاعات هزینه برای اعمال تعادل در تراکنشهای چندکالایی استفاده نمیکرد که میتواند منجر به محاسبات اشتباه ظریف سود سرمایه شود. با این حال، انعطافپذیری Ledger به کاربران اجازه میدهد FIFO، LIFO، میانگین و غیره را در زمان گزارش از طریق پرچمهای خط فرمان انتخاب کنند.مشابه Ledger با مدیریت موجودی انعطافپذیر. hledger میتواند لاتها را وقتی مشخص شده باشند ردیابی کند اما ردیابی لات به لات را به اندازه Beancount سختگیرانه اعمال نمیکند. محاسبات سود سرمایه در دسترس هستند اما به راهاندازی دستی بیشتری نیاز دارند.
گزارشدهی و رابط کاربریدر درجه اول از طریق Fava (رابط وب) و bean-query/bean-report. Fava یک داشبورد وب صیقلی با نمودارها و نمودارها ارائه میدهد و Beancount را برای تحلیل بسیار کاربرپسند میکند. همچنین از گزارشهای متنی و پرسوجوهای مشابه SQL از طریق bean-query پشتیبانی میکند. TUI (رابط متنی) رسمی ندارد، اما یکپارچهسازی ویرایشگرها/IDEها این شکاف را پر میکند.در درجه اول گزارشدهی مبتنی بر CLI. Ledger دستورات گزارش داخلی زیادی دارد (balance، register، stats و غیره) که متن را به ترمینال خروجی میدهند. میتواند نمودارها (ASCII یا از طریق gnuplot) تولید کند و حتی برخی افزونهها برای گزارشهای HTML دارد، اما یک رابط وب رسمی که به عنوان بخشی از پروژه نگهداری شود ندارد. (تلاشهای شخص ثالثی برای رابطهای وب برای Ledger وجود داشته است، اما هیچکدام به اندازه Fava برای Beancount برجسته نیستند.) برای یک رابط کاربری، کاربران به ترمینال یا شاید GUIهایی مانند Ledger-Live (یک پروژه جداگانه) تکیه میکنند.هم CLI و هم یک رابط وب ساده ارائه میدهد. hledger گزارشهای CLI Ledger را به ارث میبرد (با دستورات مشابه) و علاوه بر آن hledger-web، یک رابط وب پایه برای مشاهده حسابها و تراکنشها در مرورگر فراهم میکند. hledger-web به اندازه Fava پر از ویژگی نیست، اما یک نمای کلی فقطخواندنی میدهد. hledger همچنین hledger-ui، یک رابط مبتنی بر curses ترمینال برای استفاده تعاملی دارد.
توسعهپذیری و افزونههاتوسعهپذیری بالا از طریق پایتون. API افزونه اجازه میدهد کد پایتون دلخواه در طول پردازش دفتر کل اجرا شود، به این معنی که کاربران میتوانند ویژگیهای سفارشی را بدون تغییر هسته پیادهسازی کنند. اکوسیستم افزونهها (برای بودجهبندی و غیره) این را نشان میدهد. همچنین، میتوان اسکریپتهای پایتون نوشت که از کتابخانههای Beancount برای گزارشدهی سفارشی استفاده کنند.توسعهپذیری سطح پایینتر. Ledger را میتوان با نوشتن اسکریپتهای خود که خروجی Ledger را تجزیه میکنند یا با استفاده هوشمندانه از زبان پرسوجوی داخلی آن گسترش داد. همچنین ویژگیهایی مانند تراکنشهای خودکار (قوانینی که به طور خودکار با توجه به محرکهای موجود در ژورنال بستانکاری تولید میکنند) و تراکنشهای دورهای دارد که نوعی توسعهپذیری داخلی در فایل دفتر کل هستند. اما API برای تزریق کد دلخواه به موتور حسابداری ارائه نمیدهد – به همان روش یک کتابخانه نیست (اگرچه libledger برای توسعهدهندگان C++ وجود دارد).توسعهپذیری متوسط. hledger عمداً ویژگیهای تراکنش خودکار/دورهای Ledger را برای ساده نگه داشتن چیزها حذف میکند، اما ابزارهایی مانند hledger-import برای تبدیل فرمتهای دیگر فراهم میکند و اجازه افزونهها را میدهد. از آنجا که در هاسکل نوشته شده است، در برخی پروژهها به عنوان یک کتابخانه استفاده میشود، اما نوشتن افزونههای سفارشی به اندازه رویکرد Beancount ساده نیست. در عوض، hledger بر پوشش نیازهای رایج (گزارشها، وب، رابط کاربری) در مجموعه ابزار رسمی خود تمرکز میکند.
جامعه و توسعهفعال اما در درجه اول توسط یک نویسنده (مارتین بلیس) و گروه کوچکی از مشارکتکنندگان هدایت میشود. انتشارات اصلی کم است (v2 به مدت ~6 سال پایدار بود، سپس v3 در 2024). جامعه از طریق افزونهها و ابزارها مشارکت میکند (Fava در ابتدا یک پروژه شخص ثالث بود که یکپارچه شد). لیست پستی Beancount و GitHub با بحثها فعال هستند و پایگاه کاربر به لطف جذابیت Fava برای غیرتوسعهدهندگان رشد کرده است.تاریخچه طولانی (Ledger به سال 2003 بازمیگردد) و استفاده گسترده در میان مهندسان. در ابتدا یک پروژه تکنفره (ویگلی) بود، با گذشت زمان مشارکتکنندگان زیادی دید. توسعه Ledger در سالهای اخیر کند شده است؛ پایدار است اما ویژگیهای جدید کمتر (تمرکز به نگهداری تغییر کرده است). لیست پستی ledger-cli یک مرکز برای همه بحثهای حسابداری متن ساده (از جمله Beancount و hledger) است. ابزارها و اسکریپتهای زیادی در اطراف Ledger وجود دارد، اما اکوسیستم به اندازه کافی یکپارچه نیست (هیچ «GUI Ledger» واحدی وجود ندارد، اگرچه تلاشهای مستقل متعددی وجود دارد).جامعه رو به رشد، با سایمون مایکل که توسعه hledger را رهبری میکند. hledger انتشارات سالانه و بهبودهای پیوسته دارد، اغلب تغییرات ویژگی Ledger را دنبال میکند اما مسیر خود را نیز میسازد. در میان کاربرانی که قدرت Ledger را با قابلیت پیشبینی بیشتر میخواهند محبوب است. جامعه تمایل به همپوشانی با جامعه Ledger دارد (plaintextaccounting.org هر دو را پوشش میدهد). اکوسیستم hledger شامل افزونههایی مانند hledger-flow (برای خودکارسازی گردش کار) است و از نوشته شدن در هاسکل بهره میبرد (جذب کسانی که در آن جامعه هستند).

به طور خلاصه، Beancount خود را با تأکید بر سختگیری، توسعهپذیری مبتنی بر افزونه و رابط وب کاربرپسند متمایز میکند. Ledger ابزار کلاسیک و بسیار انعطافپذیری باقی مانده است که مورد علاقه خالصگرایان خط فرمان و کسانی است که به سرعت نهایی نیاز دارند (موتور C++ Ledger روی فایلهای بزرگ بسیار سریع است). hledger یک راه میانه فراهم میکند – بسیاری از عملکرد Ledger با ساختار کمی بیشتر و یک رابط وب رسمی (اگر ساده باشد). هر سه مزایای حسابداری متن ساده (قابلیت ممیزی، نسخه Git، داده ساده) را به اشتراک میگذارند، اما اکوسیستم Beancount (به ویژه با Fava) در سالهای اخیر آن را برای کاربر معمولی قابل دسترستر کرده است. در سمت مقابل، کاربران Ledger/hledger گاهی سادگی نسبی در راهاندازی (بدون نیاز به پایتون) و پایداری اثباتشده طولانی را ترجیح میدهند. در نهایت، انتخاب بین آنها به ترجیح شخصی برمیگردد: کسانی که به صحت دقیق و اکوسیستم غنی اهمیت میدهند اغلب به Beancount تمایل دارند، در حالی که کسانی که ابزارهای سبک و متمرکز بر ترمینال میخواهند ممکن است با Ledger یا hledger بمانند.

سناریوهای استفاده از Beancount

Beancount به اندازه کافی همهکاره است که هم برای ردیابی امور مالی شخصی و هم (در برخی موارد) حسابداری مشاغل کوچک استفاده شود. رویکرد دوطرفه اصلی آن در هر دو سناریو یکسان است، اما مقیاس و شیوههای خاص میتوانند متفاوت باشند.

امور مالی شخصی

بسیاری از کاربران Beancount از آن برای مدیریت امور مالی فردی یا خانوادگی خود استفاده میکنند. یک راهاندازی معمول امور مالی شخصی در Beancount ممکن است شامل حسابهایی برای حساب جاری و پسانداز، کارتهای اعتباری، سرمایهگذاریها، وامها، دستههای درآمد (حقوق، بهره و غیره) و دستههای هزینه (اجاره، مواد غذایی، سرگرمی و غیره) باشد. کاربران تراکنشهای روزانه را یا به صورت دستی (وارد کردن رسیدها، صورت حسابها و غیره) یا با وارد کردن از صورتهای بانکی با استفاده از ابزارهای واردکننده که قبلاً بحث شد، ثبت میکنند. مزایایی که Beancount برای امور مالی شخصی به ارمغان میآورد عبارتند از:

  • تجمیع و تحلیل: تمام تراکنشهای شما میتوانند در یک فایل متنی واحد (یا مجموعهای از فایلها) زندگی کنند که سالها تاریخچه مالی را نشان میدهد. این امر تحلیل روندهای بلندمدت را آسان میکند. با زبان پرسوجوی Beancount یا با Fava، میتوانید به سؤالاتی مانند «در ۵ سال گذشته چقدر برای سفر خرج کردهام؟» یا «میانگین صورتحساب ماهانه مواد غذایی من چقدر است؟» در چند ثانیه پاسخ دهید. یک کاربر اشاره کرد که پس از مهاجرت به Beancount، «تحلیل دادههای مالی (هزینهها، کمکهای مالی، مالیات و غیره) بیاهمیت است» یا از طریق Fava یا با پرسوجوی دادهها و استفاده از ابزارهایی مانند Pandas. در اصل، دفتر کل شما به یک پایگاه داده مالی شخصی تبدیل میشود که میتوانید هر زمان که بخواهید از آن پرسوجو کنید.
  • بودجهبندی و برنامهریزی: در حالی که Beancount سیستم بودجهبندی را تحمیل نمیکند، میتوانید یکی را پیادهسازی کنید. برخی کاربران بودجهبندی پاکتی را با ایجاد حسابهای بودجه یا استفاده از افزونه fava-envelope انجام میدهند. برخی دیگر به سادگی از گزارشهای دورهای برای مقایسه هزینهها با اهداف استفاده میکنند. از آنجا که متن ساده است، یکپارچهسازی Beancount با ابزارهای بودجهبندی خارجی یا صفحات گسترده ساده است (صادرات دادهها یا استفاده از خروجیهای CSV از پرسوجوها).
  • سرمایهگذاریها و ردیابی ارزش خالص: Beancount در ردیابی سرمایهگذاریها به لطف مدیریت قوی مبانی هزینه و قیمتهای بازار عالی است. میتوانید خرید/فروش سهام، رمزارز و غیره را با جزئیات هزینه ثبت کنید و سپس از دستورهای Prices برای پیگیری ارزش بازار استفاده کنید. Fava میتواند یک نمودار ارزش خالص در طول زمان و تفکیک پرتفوی بر اساس طبقه دارایی را نشان دهد. این برای مدیریت ثروت شخصی بسیار مفید است – بینشهایی مشابه آنچه ابزارهای تجاری مانند Mint یا Personal Capital ارائه میدهند به دست میآورید، اما کاملاً تحت کنترل شما. برای نگاهی قیمتگذاریشده و رتبهبندیشده به آن داشبوردها، به بررسی جایگزینهای Mint و بررسی جایگزینهای Empower / Personal Capital مراجعه کنید. مدیریت چندارزی نیز داخلی است، بنابراین اگر ارزهای خارجی یا رمزارز دارید، Beancount میتواند آنها را ردیابی کرده و برای گزارشدهی تبدیل کند.
  • تطبیق و دقت: امور مالی شخصی اغلب شامل تطبیق با صورتهای بانکی است. با Beancount، میتوان به طور منظم حسابها را با استفاده از تأییدیههای مانده یا ویژگی اسناد تطبیق داد. به عنوان مثال، هر ماه ممکن است یک ورودی balance Assets:Bank:Checking <date> <balance> اضافه کنید تا تأیید کنید دفتر کل شما با صورت بانک در پایان ماه مطابقت دارد. ابزار bean-check (یا نمایش خطای Fava) اگر چیزها هماهنگ نباشند به شما هشدار میدهد. یک کاربر از انجام تطبیق ماهانه همه حسابها یاد میکند که «به گرفتن هر فعالیت غیرعادی کمک میکند» – یک عادت خوب بهداشت مالی شخصی که Beancount آن را تسهیل میکند.
  • خودکارسازی: افراد فناور بخشهای بزرگی از جریان کار امور مالی شخصی خود را با Beancount خودکار کردهاند. با استفاده از واردکنندهها، کارهای cron و شاید کمی پایتون، میتوانید سیستم خود را طوری تنظیم کنید که، به عنوان مثال، هر روز تراکنشهای بانکی شما واکشی شوند (برخی از OFX یا APIها استفاده میکنند) و به فایل Beancount شما اضافه شوند، بر اساس قوانین دستهبندی شوند. با گذشت زمان، دفتر کل شما عمدتاً بهروزرسانی خودکار میشود و شما فقط در صورت نیاز بررسی و تنظیم میکنید. یک عضو جامعه در Hacker News به اشتراک گذاشت که پس از ۳ سال، کتابهای Beancount آنها «۹۵٪ خودکار» بودند. این سطح از خودکارسازی به دلیل باز بودن متن ساده و قابلیتهای اسکریپتنویسی Beancount ممکن است.

کاربران امور مالی شخصی اغلب Beancount را به صفحات گسترده یا برنامهها ترجیح میدهند زیرا مالکیت کامل دادهها را به آنها میدهد (بدون اتکا به یک سرویس ابری که ممکن است خاموش شود – نگرانی که برای مثال با قطع Mint مطرح شد) و به این دلیل که عمق بینش بیشتر است وقتی همه دادههای خود را یکپارچه دارید. منحنی یادگیری غیرپیشپاافتاده است – باید حسابداری پایه و نحو Beancount را یاد گرفت – اما منابعی مانند مستندات رسمی و آموزشهای جامعه به تازهواردها کمک میکنند شروع کنند. پس از راهاندازی، بسیاری متوجه میشوند که داشتن تصویری واضح و قابل اعتماد از امور مالی خود در همه زمانها آرامش خاطر به ارمغان میآورد.

حسابداری مشاغل کوچک

استفاده از Beancount برای یک کسبوکار کوچک (یا غیرانتفاعی، باشگاه و غیره) کمتر از استفاده شخصی رایج است، اما مطمئناً ممکن است و برخی با موفقیت این کار را انجام دادهاند. چارچوب دوطرفه Beancount در واقع همان سیستمی است که زیربنای حسابداری شرکتی است، فقط بدون برخی از ویژگیهای سطح بالاتر که نرمافزار حسابداری اختصاصی فراهم میکند (مانند ماژولهای فاکتورینگ یا یکپارچهسازی حقوق و دستمزد). در اینجا نحوه قرار گرفتن Beancount در زمینه کسبوکار کوچک آمده است:

  • دفتر کل عمومی و صورتهای مالی: یک کسبوکار کوچک میتواند فایل Beancount را به عنوان دفتر کل عمومی خود در نظر بگیرد. شما حسابهای دارایی برای حسابهای بانکی، حسابهای دریافتنی، شاید موجودی کالا خواهید داشت؛ حسابهای بدهی برای کارتهای اعتباری، وامها، حسابهای پرداختنی؛ حقوق صاحبان سهام برای سرمایه مالک؛ حسابهای درآمد برای فروش یا خدمات؛ و حسابهای هزینه برای تمام هزینههای کسبوکار. با نگهداری این دفتر کل، میتوانید در هر زمان یک صورت سود و زیان (سود و زیان) و ترازنامه با استفاده از گزارشها یا پرسوجوهای Beancount تولید کنید. در واقع، گزارشهای داخلی Beancount یا Fava میتوانند در چند ثانیه یک ترازنامه و سود و زیان تولید کنند که کاملاً با اصول حسابداری مطابقت دارند. این میتواند برای یک عملیات کوچک برای ارزیابی سودآوری، وضعیت مالی و جریان نقدی کافی باشد (با کمی پرسوجو برای جریان نقدی، زیرا صورتهای جریان نقدی مستقیم داخلی نیستند اما میتوان آنها را استخراج کرد).
  • فاکتورها و حسابهای دریافتنی/پرداختنی: Beancount سیستم فاکتورینگ داخلی ندارد؛ کاربران معمولاً فاکتورینگ را در خارج انجام میدهند (به عنوان مثال، ایجاد فاکتورها در Word یا یک برنامه فاکتورینگ) و سپس نتایج را در Beancount ثبت میکنند. به عنوان مثال، هنگام صدور فاکتور، یک ورودی بدهکار کردن حسابهای دریافتنی و بستانکار کردن درآمد ثبت میکنید. وقتی پرداخت میرسد، نقد/بانک را بدهکار و حسابهای دریافتنی را بستانکار میکنید. به این ترتیب، میتوانید با مشاهده مانده حساب دریافتنی، دریافتنیهای معوق را پیگیری کنید. همین امر در مورد صورتحسابها (حسابهای پرداختنی) صدق میکند. در حالی که این کار دستیتر از نرمافزار حسابداری تخصصی است (که ممکن است یادآوری ارسال کند یا با ایمیلها یکپارچه شود)، کاملاً انجامشدنی است. برخی کاربران الگوها یا گردش کارهایی را برای مدیریت فاکتورها با Beancount به اشتراک گذاشتهاند و از عدم از دست دادن فاکتورهای باز اطمینان میدهند (به عنوان مثال، با استفاده از فراداده یا پرسوجوهای سفارشی برای فهرست کردن فاکتورهای پرداختنشده).
  • موجودی کالا یا بهای تمام شده کالای فروختهشده: برای کسبوکارهایی که محصولات میفروشند، Beancount میتواند خرید و فروش موجودی را ردیابی کند، اما نیاز به ثبتهای منظم دارد. ممکن است از ویژگیهای Inventory و حسابداری هزینه استفاده کنید: خرید موجودی یک حساب دارایی را افزایش میدهد (با هزینه متصل به اقلام)، فروش آن هزینه را به یک هزینه (COGS) منتقل میکند و درآمد را ثبت میکند. از آنجا که Beancount بر تطبیق لات اصرار دارد، کاهش صحیح موجودی با هزینه صحیح را اعمال میکند، که در صورت انجام صحیح میتواند محاسبات سود ناخالص شما را دقیق کند. با این حال، ردیابی خودکار SKU یا چیزی شبیه به آن وجود ندارد – همه چیز در سطح مالی است (مقدار و هزینه).
  • حقوق و دستمزد و تراکنشهای پیچیده: Beancount میتواند تراکنشهای حقوق و دستمزد را ثبت کند (هزینه حقوق، کسورات مالیاتی و غیره)، اما محاسبه آن ارقام ممکن است در خارج یا از طریق ابزار دیگری انجام شود و سپس فقط در Beancount ثبت شود. برای یک کسبوکار بسیار کوچک (مثلاً یک یا دو کارمند)، این قابل مدیریت است. به عنوان مثال، یک ورودی ژورنال واحد در هر دوره پرداخت ثبت میکنید که دستمزدها، مالیات کسرشده، هزینه مالیات کارفرما، نقد پرداختشده و غیره را تفکیک میکند. انجام این کار به صورت دستی مشابه نحوه انجام آن در ورودیهای ژورنال QuickBooks است – نیاز به دانش حسابهایی دارد که باید بدهکار/بستانکار شوند.
  • چندکاربره و ممیزی: یک چالش در محیط کسبوکار این است که اگر افراد متعدد نیاز به دسترسی به کتابها داشته باشند یا اگر حسابدار نیاز به بررسی آنها داشته باشد. از آنجا که Beancount یک فایل متنی است، در زمان واقعی چندکاربره نیست. با این حال، میزبانی فایل در یک مخزن Git میتواند همکاری را فعال کند: هر شخص میتواند ویرایش و commit کند و تفاوتها میتوانند ادغام شوند.
  • انطباق با مقررات: برای ثبت مالیات یا انطباق، میتوان از دادههای Beancount برای تولید گزارشهای لازم استفاده کرد، اما ممکن است به پرسوجوها یا افزونههای سفارشی نیاز داشته باشد. نمونهای از یک افزونه جامعه برای گزارشدهی انطباق دولت هند و یکی برای گزارشدهی FinCEN FBAR دیدیم. این نشان میدهد که با تلاش، Beancount میتواند برای رفع نیازهای گزارشدهی خاص تطبیق داده شود. کسبوکارهای کوچک در حوزههای قضایی با الزامات ساده (حسابداری نقدی یا تعهدی پایه) میتوانند قطعاً کتابها را در Beancount نگهداری کرده و صورتهای مالی را برای اظهارنامههای مالیاتی تولید کنند. با این حال، ویژگیهایی مانند برنامههای استهلاک ممکن است نیاز به نوشتن ورودیهای خود یا استفاده از یک افزونه داشته باشند (افزونههای استهلاک Dave Stephens به خودکارسازی آن کمک میکنند، برای مثال). هیچ GUI برای «کلیک کردن استهلاک دارایی» مانند برخی نرمافزارهای حسابداری وجود ندارد؛ شما استهلاک را به عنوان تراکنش رمزگذاری میکنید (که به نوعی آن را ابهامزدایی میکند – همه چیز یک ورودی است که میتوانید بازرسی کنید).

در عمل، بسیاری از صاحبان مشاغل کوچک فناور از Beancount (یا Ledger/hledger) استفاده کردهاند اگر کنترل و شفافیت را بر راحتی QuickBooks ترجیح میدهند. یک بحث Reddit اشاره کرد که برای حسابداری استاندارد کسبوکار کوچک با حجم محدودی از تراکنشها، Beancount به خوبی کار میکند. عامل محدودکننده معمولاً سطح راحتی است – اینکه آیا صاحب کسبوکار (یا حسابدار آنها) با یک ابزار مبتنی بر متن راحت است یا خیر. یک مزیت هزینه است: Beancount رایگان است، در حالی که نرمافزار حسابداری میتواند برای یک کسبوکار کوچک پرهزینه باشد. از سوی دیگر، فقدان پشتیبانی رسمی و ماهیت DIY به این معنی است که برای کسانی که هم صاحب کسبوکار هستند و هم از نظر فنی تا حدودی مسلط هستند، بهترین است. برای فریلنسرها یا مالکان انفرادی با مهارتهای برنامهنویسی، Beancount میتواند انتخاب جذابی برای مدیریت امور مالی بدون اتکا به خدمات حسابداری ابری باشد.

رویکردهای ترکیبی نیز ممکن است: برخی کسبوکارهای کوچک از یک سیستم رسمی برای فاکتورها یا حقوق و دستمزد استفاده میکنند، اما به طور دورهای دادهها را برای تحلیل و بایگانی به Beancount وارد میکنند. به این ترتیب بهترینهای هر دو جهان را به دست میآورند – انطباق و سهولت برای عملیات روزمره، به علاوه قدرت Beancount برای بینش یکپارچه.

به طور خلاصه، Beancount میتواند حسابداری کسبوکار کوچک را مدیریت کند، به شرطی که کاربر مایل باشد چیزهایی را که نرمافزار تجاری خودکار میکند به صورت دستی مدیریت کند. این درجه بالایی از شفافیت را تضمین میکند – شما کتابهای خود را عمیقاً درک میکنید زیرا آنها را مینویسید – و برای یک کاربر کوشا، میتواند کتابهای بیعیب و نقص تولید کند. هم کاربران شخصی و هم تجاری از نقاط قوت اصلی Beancount بهره میبرند: یک موتور حسابداری قابل اعتماد، مسیر ممیزی کامل و انعطافپذیری برای سازگاری با سناریوهای منحصربهفرد (از طریق اسکریپتنویسی و افزونهها). چه ردیابی بودجه خانوار باشد چه امور مالی یک استارتاپ، Beancount یک جعبه ابزار برای انجام آن با دقت و باز بودن ارائه میدهد.

جامعه و فعالیت توسعه

Beancount یک جامعه اختصاصی و یک داستان توسعه دارد که ماهیت متنباز و خاص اما پرشور آن را منعکس میکند. در زیر نکات کلیدی درباره جامعه، نگهدارندگان و پروژههای مرتبط آن آمده است:

  • نگهداری پروژه: نویسنده اصلی Beancount مارتین بلیس است که پروژه را در حدود سال 2007 آغاز کرد و آن را از طریق نسخههای متعدد هدایت کرده است. توسعه برای مدت طولانی عمدتاً یک تلاش تکنفره بود (به غیر از مشارکتهای جامعه در قالب وصلهها). فلسفه مارتین ساختن یک ابزار حسابداری «مفید برای من در درجه اول، و همچنین برای دیگران، به سادهترین و بادوامترین شکل» بود. این انگیزه شخصی پروژه را به عنوان یک کار از روی علاقه ادامه داد. از سال 2025، مارتین بلیس همچنان نگهدارنده اصلی است (نام او در commitها ظاهر میشود و او به سؤالات در لیست پستی/ردیاب مشکل پاسخ میدهد)، اما اکوسیستم اطراف Beancount مشارکتکنندگان بسیاری در پروژههای مربوطه خود دارد.

  • GitHub و مخازن: کد منبع در GitHub تحت مخزن beancount/beancount میزبانی میشود. پروژه دارای مجوز GPL-2.0 است و در طول سالها مشارکتکنندگان کمی را جذب کرده است. در اواسط 2024، Beancount نسخه 3 رسماً به عنوان شاخه پایدار جدید منتشر شد. این انتشار شامل تقسیم برخی مؤلفهها بود: به عنوان مثال، مخزن beangulp (برای واردکنندهها) و مخزن beanquery (برای ابزار پرسوجو) اکنون بخشی از سازمان GitHub beancount هستند و تا حدودی مستقل نگهداری میشوند. مخزن اصلی Beancount بر موتور حسابداری اصلی و تجزیهکننده فایل تمرکز دارد. از سال 2025، GitHub Beancount بحثهای مشکل فعال و برخی توسعههای در حال انجام را نشان میدهد – اگرچه حجم بالا نیست، مشکلات و درخواستهای کشش به آرامی وارد میشوند و بهروزرسانیهای گاه به گاه برای رفع اشکالات یا اصلاح ویژگیها انجام میشود.

  • توسعه Fava: Fava، رابط وب، به عنوان یک پروژه جداگانه شروع شد (توسط Dominic Aumayr ایجاد شد که آن را در 2016 کپیرایت کرد). جامعه مشارکتکنندگان خود را دارد و همچنین در GitHub تحت beancount/fava است. نگهدارندگان و مشارکتکنندگان Fava (به عنوان مثال Jakob Schnetz، Stefan Otte و دیگران در سالهای اخیر) به طور فعال رابط را بهبود میبخشند و هر چند ماه یکبار انتشار میدهند. چت Gitter Fava (که در مستندات Fava پیوند داده شده است) و ردیاب مشکل GitHub مکانهایی هستند که کاربران و توسعهدهندگان درباره ویژگیهای جدید یا اشکالات بحث میکنند. پروژه از مشارکتها استقبال میکند، همانطور که یادداشت CHANGELOG از چندین عضو جامعه برای PRهایشان تشکر میکند. همسویی نزدیک Fava با توسعه Beancount (مانند افزودن سریع پشتیبانی از Beancount v3 و نحو جدید beanquery) نشاندهنده همکاری خوب بین این دو پروژه است.

  • لیستهای پستی و انجمنها: Beancount یک لیست پستی رسمی دارد (قبلاً در Google Groups، با عنوان «Beancount» یا گاهی در لیست عمومی Ledger بحث میشد). این لیست پستی یک گنجینه دانش است – کاربران سؤالاتی درباره نحوه مدلسازی سناریوهای خاص میپرسند، اشکالات را گزارش میدهند و نکات را به اشتراک میگذارند. مارتین بلیس شناخته شده است که در لیست پستی با توضیحات مفصل پاسخ میدهد. علاوه بر این، جامعه گستردهتر حسابداری متن ساده بسیار همپوشانی دارد. لیست پستی Ledger CLI اغلب سؤالاتی درباره Beancount نیز مطرح میکند، و یک انجمن در plaintextaccounting.org و یک زیرردیت r/plaintextaccounting وجود دارد که موضوعات Beancount در آن مکرراً ظاهر میشوند. کاربران در این پلتفرمها مقایسهها را مورد بحث قرار میدهند، تنظیمات شخصی را به اشتراک میگذارند و به تازهواردها کمک میکنند. لحن کلی جامعه بسیار همکارانه است – کاربران Beancount اغلب به کاربران Ledger کمک میکنند و بالعکس، و تشخیص میدهند که همه این ابزارها اهداف مشابهی دارند.

  • گروههای چت: علاوه بر لیستهای پستی، کانالهای چتی مانند Slack/Discord حساب متنی ساده (سازماندهیشده توسط جامعه) و Gitter Fava وجود دارد. اینها راههای کمتر رسمی و بلادرنگتر برای دریافت کمک یا بحث درباره ویژگیها هستند. به عنوان مثال، ممکن است به Slack بروید و بپرسید آیا کسی واردکنندهای برای یک بانک خاص دارد. همچنین یک کانال Matrix/IRC (از نظر تاریخی #ledger یا #beancount در IRC) وجود دارد که برخی کاربران قدیمی در آن حضور دارند. اگرچه به اندازه جوامع نرمافزار اصلی پرجمعیت نیستند، این کانالها افراد دانایی دارند که اغلب میتوانند به سؤالات حسابداری مبهم پاسخ دهند.

  • مشارکتکنندگان و اعضای کلیدی جامعه: چند نام در جامعه Beancount برجسته هستند:

    • «Redstreet» (Red S): یک مشارکتکننده پرکار که افزونههای زیادی نوشته است (مانند beancount-balexpr، sellgains و دیگران) و اغلب پشتیبانی ارائه میدهد. آنها همچنین مجموعهای از اسکریپتهای واردکننده و ابزاری به نام bean-download برای واکشی صورتحسابها نگهداری میکنند.
    • Vasily M (Evernight): نویسنده برخی چارچوبهای واردکننده و افزونههایی مانند beancount-valuation و مشارکتهایی در Fava در مورد سرمایهگذاریها.
    • Stefano Zacchiroli (zack): یک توسعهدهنده دبیان که beancount-mode را برای Emacs و مخزن افزونه خودش ایجاد کرد. او همچنین از حسابداری متن ساده در محیطهای آکادمیک حمایت کرده است.
    • Simon Michael: در درجه اول رهبر hledger است، او plaintextaccounting.org را اجرا میکند که شامل Beancount است. این گرده افشانی متقابل به جلب توجه Beancount از سوی کاربران Ledger/hledger کمک کرد.
    • Frank hell (Tarioch): مشارکتکننده ابزارهای Beancount Tarioch، مجموعه اصلی واردکنندهها و واکشی قیمت به ویژه برای مؤسسات اروپایی.
    • Siddhant Goel: یک عضو جامعه که درباره Beancount وبلاگ مینویسد (به عنوان مثال، راهنمای او برای مهاجرت به v3) و برخی واردکنندهها را نگهداری میکند. پستهای وبلاگ او به بسیاری از کاربران جدید کمک کرده است.

    اینها و بسیاری دیگر کد، مستندات و کمک در انجمنها را مشارکت میدهند و اکوسیستم را با وجود اندازه نسبتاً کوچک آن پر جنب و جوش میکنند.

  • آمار GitHub و انشعابها: مخزن GitHub Beancount چند صد ستاره (نشاندهنده علاقه) و انشعاب جمع کرده است. انشعابهای قابل توجه خود Beancount نادر هستند – هیچ انشعاب واگرای شناختهشدهای وجود ندارد که سعی کند «Beancount اما با ویژگی X» باشد. در عوض، وقتی کاربران چیز متفاوتی میخواستند، یا یک افزونه مینوشتند یا از ابزار دیگری (مانند hledger) استفاده میکردند تا اینکه Beancount را انشعاب دهند. میتوان hledger را نوعی انشعاب از Ledger (نه Beancount) در نظر گرفت و Beancount خود یک بازتصور مستقل از ایدههای Ledger است، اما در مخزن Beancount پروژههای خرد بزرگ وجود ندارد. جامعه عموماً حول مخزن اصلی تجمیع شده و آن را از طریق رابط افزونه گسترش داده است به جای تکهتکه کردن پایگاه کد. این احتمالاً به این دلیل است که مارتین بلیس به مشارکتهای خارجی باز بود (اسناد او حتی بخشی دارد که مشارکتها و ماژولهای خارجی را تصدیق میکند) و معماری افزونه برای اکثر ویژگیهای جدید نگهداری یک انشعاب را غیرضروری کرد.

  • منابع جامعه: چندین منبع با کیفیت بالا برای یادگیری و استفاده از Beancount وجود دارد که توسط جامعه ایجاد شده است:

    • مستندات Beancount در GitHub Pages (و اسناد منبع Google Docs که مارتین نگهداری میکند) – بسیار جامع، شامل نظریه حسابداری و نحوه پیادهسازی آن توسط Beancount.

    • پستهای وبلاگ و یادداشتهای شخصی متعدد – به عنوان مثال، LWN.net مقالهای با عنوان «شمارش لوبیاها… با Beancount» داشت، و بسیاری از وبلاگهای شخصی (همانطور که در بخش «پستهای وبلاگ» Awesome Beancount فهرست شدهاند) تجربیات و نکات را به اشتراک میگذارند. اینها به ایجاد دانش و جذب کاربران جدید کمک میکنند.

    • گفتگوها و ارائهها: Beancount در ملاقاتها و کنفرانسها ارائه شده است (به عنوان مثال، یک سخنرانی PyMunich 2018 در مورد مدیریت امور مالی با پایتون/Beancount). چنین گفتگوهایی ابزار را به مخاطبان گستردهتری معرفی میکنند و اغلب علاقه را در انجمنهایی مانند Hacker News برمیانگیزند.

  • پروژههای مرتبط قابل توجه: علاوه بر Fava، برخی پروژههای دیگر مرتبط با Beancount جوامع خود را دارند:

    • سایت حسابداری متن ساده – نگهداریشده توسط Simon Michael، اطلاعات همه این ابزارها را جمعآوری میکند و یک انجمن دارد که مردم استفاده از ابزارهای مختلف از جمله Beancount را به اشتراک میگذارند.
    • یکپارچهسازی ابزارهای مالی: برخی کاربران Beancount را با ابزارهای هوش تجاری یا پایگاههای داده یکپارچه میکنند. به عنوان مثال، یک موضوع Google Groups جزئیات استفاده از PostgreSQL با دادههای Beancount از طریق توابع سفارشی را شرح میدهد. اگرچه رایج نیست، روحیه آزمایشی جامعه را در پیش بردن قابلیتهای Beancount (به عنوان مثال، برای مدیریت مجموعه دادههای بسیار بزرگ یا پرسوجوهای پیچیده فراتر از داخلی) نشان میدهد.

به طور خلاصه، جامعه Beancount، اگرچه کوچکتر از جوامع پروژههای بزرگ متنباز است، بسیار درگیر و آگاه است. پروژه از جریان ثابتی از بهبودها و کانالهای پشتیبانی بسیار مفید بهره میبرد. اخلاق مشارکتی (به اشتراک گذاشتن واردکنندهها، نوشتن افزونهها، پاسخ به سؤالات) به این معنی است که یک تازهوارد در 2025 میتواند به کارهای قبلی گسترده و خرد جامعه برای راهاندازی سیستم حسابداری خود تکیه کند. توسعه در حس اکوسیستم فعال است – انتشارات Fava، توسعه افزونه و غیره – حتی اگر تغییرات هسته گاه به گاهتر باشد. رشد اکوسیستم (همانطور که توسط فهرست Awesome Beancount از دهها ابزار نشان داده شده است) گویای یک جامعه سالم است که Beancount را هر روز توانمندتر میکند.

تحولات اخیر و ویژگیهای آینده

برای تحقیقات Beancount.io در مورد خودکارسازی حسابداری، به Bean Labs مراجعه کنید تا گزارشهای تحقیقاتی و روشهای آن را بررسی کنید.

تا تاریخ 2026-09-15، اکوسیستم Beancount به تکامل در خط ماژولار v3 ادامه میدهد. در اینجا تحولات قابل توجه از برش v3 در اواسط 2024 و آنچه هنوز در نقشه راه قرار دارد آورده شده است:

  • Beancount 3.2.x (2025–2026): پس از اینکه 3.0 پشته را ماژولار کرد، PyPI از طریق 3.2.0 (2025-09-14) و انتشارات بستهبندی بعدی 3.2.1–3.2.3 پیش رفت (تغییرات، PyPI). کار قابل مشاهده توسط کاربر در آن بازه شامل قالببندی، بهبودهای تحمل/دقت و پوشش گستردهتر پایتون/CI است – نه بازنویسی هسته C++. ارتقاءهای جفتی را با نسخههای اصلی منطبق beanquery / beangulp همراه کنید.

  • انتشار Beancount 3.0 (2024): پس از یک دوره طولانی که Beancount 2.x استاندارد بود، نسخه 3 در اواسط 2024 رسماً منتشر شد. این یک نقطه عطف بزرگ بود زیرا v3 نشاندهنده سادهسازی و مدرنسازی پایگاه کد است. مارتین بلیس v3 را به عنوان فرصتی برای «بازچینی و سادهسازی» بیشتر سیستم تصور کرده بود. در حالی که در ابتدا تصور میشد یک بازنویسی بزرگ باشد، در عمل بهروزرسانی برای کاربران چندان مخرب نبود. تغییرات اصلی زیر کاپوت بود: یک تجزیهکننده جدید، برخی بهبودهای عملکرد و استخراج مؤلفههای اختیاری از هسته. انتشار به تدریج انجام شد (v3 از 2022 در بتا بود، اما تا ژوئیه 2024 به نسخه پایدار توصیهشده تبدیل شد). کاربرانی مانند Siddhant Goel گزارش دادند که مهاجرت از 2.x به 3.x «عمدتاً بدون حادثه» با تنها چند تغییر جریان کار بود.

  • ماژولارسازی – ابزارها به بستههای جداگانه منتقل شدند: یکی از تغییرات بزرگ با Beancount 3 این است که بسیاری از ابزارهایی که قبلاً در مخزن یکپارچه زندگی میکردند جدا شدند. به عنوان مثال، bean-query اکنون توسط بسته beanquery ارائه میشود و beancount.ingest با بسته beangulp جایگزین شد. دستورهایی مانند bean-extract و bean-identify (برای واردات) از Beancount اصلی حذف شدند. در عوض، فلسفه استفاده از اسکریپتهای مستقل برای واردات است. این بدان معناست که اگر به v3 ارتقاء دهید، beangulp را نصب کرده و اسکریپتهای واردکننده را اجرا میکنید (هر واردکننده اساساً یک برنامه کوچک است) به جای داشتن یک فایل پیکربندی مرکزی bean-extract. به طور مشابه، پرسوجوها از طریق beanquery اجرا میشوند که میتواند مستقل از هسته Beancount نصب و بهروزرسانی شود. این رویکرد ماژولار برای آسان کردن نگهداری و تشویق مشارکتهای جامعه طراحی شده است. همچنین هسته Beancount را لاغر کرد، بنابراین هسته صرفاً بر تجزیه و منطق حسابداری تمرکز میکند، در حالی که عملکرد جانبی میتواند جداگانه تکامل یابد. از دیدگاه کاربر، پس از ارتقاء، باید دستورات را تنظیم کرد (به عنوان مثال، از bean-query از beanquery استفاده کنید، یا از Fava استفاده کنید که به هر حال این را انتزاع میکند). تغییرات Fava به صراحت به این تغییرات اشاره میکند: Fava اکنون به beanquery و beangulp وابسته است و جریانهای کار واردات را برای Beancount 3 در مقابل 2 متفاوت مدیریت میکند.

  • بهبودهای عملکرد: عملکرد یکی از انگیزههای بازبینی طراحی Beancount بود. برنامه v3 (همانطور که در سند «اهداف V3» مارتین مشخص شده است) شامل بهینهسازی تجزیهکننده و احتمالاً سریعتر و کممصرفتر کردن فرآیند بارگذاری بود. تا سال 2025، برخی از این بهبودها محقق شدهاند. به طور حکایتی، کاربران با دفترهای کل بسیار بزرگ (دهها هزار تراکنش یا تعداد زیادی معاملات سهام) عملکرد بهتری با آخرین نسخه گزارش کردهاند. به عنوان مثال، کاربری که با «تراکنشهای خرد سرمایهگذاری» سر و کار داشت و با مسائل عملکردی مواجه بود، این نگرانیها را در Google Group ذکر کرد – این نوع بازخورد احتمالاً بر v3 تأثیر گذاشته است. تجزیهکننده جدید کارآمدتر و به روش واضحتری نوشته شده است که میتواند در آینده گسترش یابد. علاوه بر این، Fava 1.29 به مکانیزم تماشای فایل کارآمدتر (با استفاده از کتابخانه watchfiles) برای بهبود پاسخگویی هنگام تغییر دفتر کل منتقل شد. با نگاه به آینده، جامعه ممکن است تجزیه افزایشی را بررسی کند (فقط پردازش مجدد بخشهای تغییر یافته فایل به جای همه چیز) برای مدیریت سریعتر دفترهای کل بزرگ – این در مستندات به عنوان ایده «سرور Beancount / ثبت افزایشی» اشاره شد.

  • بهبودهای ردیابی سرمایهگذاری: کار مداومی برای بهتر کردن گزارشدهی سرمایهگذاری و پرتفوی وجود داشته است. به عنوان مثال، مدیریت مبنای هزینه متوسط در مقابل FIFO به طور مفصل مورد بحث قرار گرفت. در حالی که Beancount تطبیق لات را اعمال میکند، برخی کاربران میانگین هزینه را برای حوزههای قضایی خاص ترجیح میدهند. یک پیشنهاد و بحث در مورد انعطافپذیرتر کردن ثبت مبنای هزینه وجود دارد (احتمالاً از طریق یک افزونه یا گزینه). تا سال 2025، هیچ سوئیچ داخلی برای میانگین هزینه وجود ندارد، اما زمینهسازی در v3 (طراحی مجدد ثبت) اجرای افزونهها را آسانتر میکند. یک افزونه جامعه «Gains Minimizer» منتشر شد که میتواند پیشنهاد دهد کدام لاتها را برای به حداقل رساندن مالیات بفروشید، و نوع ابزار پیشرفتهای را که در اطراف سرمایهگذاریها ساخته میشود نشان میدهد. Fava نیز ویژگیهایی مانند یک توسعه خلاصه پرتفوی (با محاسبات نرخ بازده) اضافه کرد. از نظر ویژگیهای آینده، میتوان در این حوزه انتظار بیشتری داشت: احتمالاً پیشنهادات خودکار بازتعادل پرتفوی یا تحلیل ریسک، به احتمال زیاد به عنوان ابزارهای خارجی که دادههای Beancount را میخوانند (زیرا همه دادهها آنجا هستند).

  • افزونهها و توسعههای جدید: اکوسیستم افزونه به طور مداوم در حال رشد است. اضافات قابل توجه اخیر عبارتند از:

    • ابزارهای گزارش بودجه – به عنوان مثال، یک گزارشگر بودجه CLI ساده اگر از رابط کاربری Fava استفاده نمیکنید.
    • رمزنگاری و امنیت – راهاندازی fava-encrypt، که به Fava اجازه میدهد به صورت آنلاین با دفتر کل رمزگذاریشده در حالت سکون میزبانی شود، معرفی شد و نگرانی میزبانی خود از امور مالی شما را برطرف کرد.
    • افزونههای کیفیت زندگی – مانند autobean-format (یک قالببندیکننده جدید که میتواند موارد لبه بیشتری را با تجزیه و بازچاپ فایل مدیریت کند) و یکپارچهسازی beancheck در ویرایشگرها (flymake برای Emacs).

    با نگاه به آینده، جامعه احتمالاً به پر کردن شکافها از طریق افزونهها ادامه خواهد داد. به عنوان مثال، ممکن است افزونههای مرتبط با مالیات بیشتری ببینیم (برخی کاربران اسکریپتهایی را برای چیزهایی مانند محاسبه فروش شستشو یا گزارشهای مالیاتی محلی خاص به اشتراک گذاشتهاند).

  • ویژگیهای بالقوه آینده: بر اساس بحثهای ردیاب مشکل و لیست پستی، چند ایده در افق هستند (اگرچه تضمین نشده):

    • وضوح زمان: در حال حاضر، Beancount فقط تاریخها را برای تراکنشها ردیابی میکند (بدون برچسب زمانی). سؤالاتی در مورد افزودن زمان (برای معاملات سهام یا ترتیب تراکنشهای همان روز) وجود داشته است. مارتین بلیس به صراحت تصمیم گرفت که برچسبهای زمانی زیر روز برای ساده نگه داشتن چیزها خارج از محدوده هستند. بعید است به زودی تغییر کند – بنابراین نسخههای آینده احتمالاً وضوح زمان را اضافه نخواهند کرد و به موضع پایبند خواهند بود که اگر به زمان نیاز دارید، آن را در شرح یا یک حساب بگنجانید.
    • ویرایش پیشرفته GUI: Fava به طور مداوم قابلیتهای ویرایش خود را بهبود میبخشد. امکان یک ویرایشگر وب کاملتر (با پیشنهاد خودکار، شاید یک ورود مبتنی بر فرم برای تراکنشهای جدید) وجود دارد. زمینهسازی با استفاده از tree-sitter در ویرایشگر Fava انجام شد. ممکن است Fava نه فقط یک نمایشگر بلکه یک ویرایشگر قدرتمندتر شود و نیاز به باز کردن یک ویرایشگر متنی را برای بسیاری از کارها کاهش دهد.
    • پشتیبانی بهتر از چند دفتر کل: برخی کاربران چندین فایل Beancount را نگهداری میکنند (برای نهادهای مختلف یا برای تقسیم شخصی در مقابل تجاری). در حال حاضر، شامل کردن فایلها ممکن است اما محدودیتهایی داشت (افزونهها در فایلهای شاملشده و غیره). یک افزونه اخیر autobean.include برای گنجاندن ایمن دفترهای کل خارجی ایجاد شد. در آینده، ممکن است پشتیبانی درجه یک برای راهاندازیهای چند فایلی ببینیم – شاید مفهومی از یک «پروژه» Beancount با چندین فایل (این توسط ویژگیهایی مانند تنظیم beancount.mainBeanFile در افزونه VSCode اشاره شده است). این به کسانی که دفترداری چند نهادی را اجرا میکنند یا میخواهند دفتر کل خود را ماژولار کنند کمک میکند.
    • محاسبه بلادرنگ یا افزایشی: با رشد دفترهای کل، توانایی محاسبه مجدد سریع گزارشها مهم میشود. ایدهای از یک سرور Beancount وجود دارد که در حال اجرا باقی میماند و نتایج را با تغییر تراکنشها بهروزرسانی میکند. این میتواند به عنوان یک بهینهسازی در Fava یا یک دیمون ظاهر شود که افزونههای ویرایشگر میتوانند از آن پرسوجو کنند. شاید یک انتشار آینده Fava از یک فرآیند Beancount در حال اجرا مداوم برای پاسخگوتر کردن رابط کاربری برای دفترهای کل بزرگ استفاده کند.
    • ویژگیهای حسابداری صندوق / غیرانتفاعی: یک پیشنهاد بهبود در مورد حسابداری صندوق در Beancount وجود داشت. سازمانهای غیرانتفاعی نیازهای حسابداری دارند (صندوقهای محدود در مقابل نامحدود) که میتواند به طور بالقوه با سلسله مراتب برچسب یا حساب Beancount مدلسازی شود. بحث هنوز به ویژگیهای داخلی منجر نشده است، اما اگر سازمانهای غیرانتفاعی بیشتری Beancount را انتخاب کنند، این میتواند قابلیتهای جدیدی را هدایت کند (شاید فقط بهترین شیوههای مستند یا افزونههایی برای ردیابی مانده صندوق).
  • چشمانداز بلندمدت: مارتین بلیس اشاره کرد که آینده Beancount را در تبدیل هسته به یک موتور بیشتر و انتقال عملکرد بیشتر به افزونهها میبیند. این با آنچه میبینیم (ماژولارسازی در v3) سازگار است. بنابراین، یک «ویژگی آینده» در اصطلاح فلسفی توسعهپذیری بیشتر است – احتمالاً حتی اجازه دادن به افزونهها برای تعریف انواع دستور جدید یا گسترش نحو به روشهای کنترلشده. اگر این اتفاق بیفتد، هسته Beancount ممکن است نسبتاً کوچک و پایدار بماند، در حالی که اکوسیستم بیشتر عملکرد جدید را به عنوان افزونه ارائه میدهد. این میتواند به یک بازارچه افزونه یا فهرست متمرکزتر از افزونهها منجر شود تا کاربران بتوانند انتخاب کنند (فهرست Awesome Beancount شروعی برای آن است).

در پایان، اکوسیستم Beancount در 2026 فعال و در حال تکامل است. انتشار Beancount 3.0 یک رویداد بنیادی بزرگ بود؛ خط 3.2.x و موضع فقط-Beancount-3 Fava (از 1.30.13) پایه عملی امروز برای استناد هستند. بهبودهای عملکرد، ابزارها و قابلیت استفاده (به ویژه از طریق Fava و CLI bea) همچنان مانع ورود را کاهش میدهند. در حالی که Beancount ابزاری است که به تخصص نیاز دارد، اکنون بسیار قابل دسترستر از چند سال پیش است، به لطف این تحولات. ویژگیهای آینده احتمالاً بر اصلاح تجربه – عملکرد سریعتر، یکپارچهسازیهای بهتر و توسعههای تخصصی – تمرکز خواهند کرد تا تغییرات اساسی در فلسفه اصلی. مسیر جامعه نشان میدهد که Beancount به بلوغ به عنوان قطعه مرکزی حسابداری متن ساده ادامه خواهد داد و تعادلی بین قدرت سختگیرانه دفترداری دوطرفه و راحتی نرمافزار مدرن ایجاد میکند. همانطور که یک کاربر در Hacker News شوخی کرد، حسابداری متن ساده به شما «قدرتهای فوق بشری» در درک امور مالی شما میدهد – و بهبودهای اخیر و آینده Beancount هدفشان آسانتر کردن استفاده از آن قدرتهای فوق بشری برای همه است.

منابع: مستندات و مخزن Beancount؛ مستندات و تغییرات Fava؛ «مقایسه Beancount و Ledger» توسط مارتین بلیس؛ فهرست منابع Awesome Beancount؛ تجربیات کاربران و گزارشهای جامعه؛ نسخههای بسته PyPI که در 2026-09-15 بررسی شدند.

این مقاله را به‌اشتراک بگذارید

دنبال کردن این موضوع

منبع: https://beancount.io/fa/blog/2025/04/15/beancount-ecosystem

منتشر شده: ۲۶ فروردین ۱۴۰۴

آخرین بهروزرسانی: ۲۴ شهریور ۱۴۰۵