写在前面:由于日常消费都是通过信用卡完成支付,对金钱实在是“没得概念”,只有在每个月还款日才会一拍脑袋感到懊悔!也是正好在玩儿OpenClaw,有在想怎么通过这玩意儿进行记账呢,于是便有了OpenClaw + Beancount的玩法。
1. Beancount是什么?
官方文档的说法是 Beancount 是一个强大的、基于 Python 的纯文本会计工具。
beancount.io
Beancount.io 纯文本记账。强大、精确、可审计。 - Beancount.io
像写代码一样记录你的财务——配合 AI 辅助洞察。Beancount 让会计变得透明、可脚本化,并为大模型时代做好准备。自动化报告、分析趋势,并构建能与你同步思考的财务工作流。
然而其实它就是一个纯文本文件,命名叫 main.beancount / main.bean 的文件,然后内容大概就长这样
它的核心概念一共是五个
- Assets(资产): 你“拥有”的东西,比如 现金(Cash)、银行存款(Bank)、支付宝/微信余额、投资账户
- Liabilities(负债): 你“欠别人的钱”,比如 信用卡欠款、花呗 / 借呗、贷款(房贷、车贷)
- Income(收入): 钱“从哪里来”,比如 工资、奖金、利息、副业
- Expenses(支出): 钱“花到哪里去”,比如 吃饭、房租、交通、旅游
- Equity(权益): 用来“平账”的账户,本质是你的净资产来源,可以理解成用来对帐的,不太理解可以忽略,因为具体使用下来一般也不看它

最核心的理念就是 整个账本中所有过账的总和等于零,也就是说
Assets(资产)+ Liabilities(负债)+ Income(收入)+ Expenses(支出)+ Equity(权益)= 0
(所以说 Equity 一般是用来平账的)
用一张AI画的图来看
到这里不理解 Equity 也没关系 后面会有具体的例子来解释展示它
但是这样记录只是纯文本,怎么做可视化呢? 通过Fava!
Fava 是一个出色的基于 Web 的界面,用于可视化你的账本。当你使用该平台时,你将直接与账本文件(例如,main.bean)的文本编辑器进行交互,并实时查看 Fava 生成的报告更新。Fava 将你编写的纯文本转换为交互式图表、财务报表和可过滤的交易列表,让你清楚地了解你的财务报告。
安装方式很简单,像安装Python的第三方库一样安装它,我习惯于用uv来管理Python的项目
uv add fava
然后运行它
uv run fava main.bean
然后你就可以得到一个Web页面


这里就先看个样子 后面会稍微解释一下每个字段
2. OpenClaw登场!
前面已经知道Beancount记账本质上就是在往一个纯文本文件里写内容,然后再通过Fava进行可视化展示。往一个文件里写内容 这不是正好是OpenClaw的基础能力吗!听懂自然语言 这不也是OpenClaw的基础能力吗!
那么 通过自然语言描述记账信息 → 往main.bean里写内容 → 可视化展示 一条龙!
我一般用它做两件事 一件事是记录日常开销 另一件事是更新每天的基金情况从而更新资产情况 对应两段简单的Prompt
Beancount 记账(自用的内容,需根据自身账户信息修改) (点击了解更多详细信息) 基金净值更新 (点击了解更多详细信息)3. 简单案例解释
就拿前面的beancount 文件模板来对照解释。
2026-01-01 open Assets:Cash
2026-01-01 open Assets:Bank
2026-01-01 open Expenses:Food
2026-01-01 open Income:Salary
2026-01-01 open Equity:Opening-Balances
这里对应涉及到的元素就是Assets Expenses Income,Equity先不看,如果有像信用卡、花呗这种负债属性的,那就可以直接加
2026-01-01 open Liabilities:CreditCard:BOCOM:Amex CNY
2026-01-01 open Liabilities:HuaBei CNY
这相当于就是"账户"开户,以后所有的流水都是从这些"账户"里流转。
; ===== 初始余额 =====
2026-01-01 * "Opening Balances"
Assets:Cash 100 USD
Assets:Bank 1000 USD
Equity:Opening-Balances
在最开始使用时肯定有一个初始金额吧
,这个的意思就是直接往"Assets:Cash""Assets:Bank"账户中分别加入100和1000,因为这两笔是凭空产生出来的,因此需要用Equity:Opening-Balances来平账!
; ===== 示例交易 =====
2026-01-05 * "Salary"
Assets:Bank 2000 USD
Income:Salary
这个写法等价于
; ===== 示例交易 =====
2026-01-05 * "Salary"
Assets:Bank 2000 USD
Income:Salary -2000 USD
意思是你的工资是发到银行卡里,"Income:Salary"账户就是少了2000,"Assets:Bank"账户多了2000。相当于"Assets:Bank"才是你钱最终的归宿,"Income:Salary"只是记录了这2000是工资!
2026-01-06 * "Lunch"
Expenses:Food 15 USD
Assets:Cash
意思是你用了15现金吃了一顿午饭。"Assets:Cash"账户少了15,"Expenses:Food"账户多了15,代表这15是用来吃饭的!有没有有一点感觉,虽然是有点抽象,但是好像也有点道理 ![]()
这个时候来汇总一下
初始"Assets:Bank"账户是1000,发了2000工资,所以"Assets:Bank"账户现在是3000,"Income:Salary"是-2000
初始"Assets:Cash"账户是100,吃了15,所以"Assets:Cash"账户现在是85,"Expenses:Food"账户是15
分别对应

现在在回头来看 Equity。
Equity(权益): 用来“平账”的账户,本质是你的净资产来源。
初始金额时我们用"Equity:Opening-Balances"账户平了凭空出现的1100,"Equity:Earnings"账户正好是我们发的工资2000 - 吃了一顿饭15 = 1985。"Equity"账户的总额是3085 = 初始金额1100 + 工资2000 - 吃了一顿饭15。
大概就是这个样子了。
要是各位佬们有兴趣 还是可以去看看官方文档的。
实在懒得看 要AI帮忙看看也成 ![]()
1 个帖子 - 1 位参与者