返回案例库

精选案例 · Agent / 实践案例

Beancount 平行预算插件 — parallel_budget

这个案例围绕「Beancount 平行预算插件 — parallel_budget」记录了一条真实 AI 实践线索,正文重点集中在「背景」「核心思路」,适合先按任务意图阅读再判断复用。

案例速读

README 标题「Beancount 平行预算插件 — parallel_budget」下已经出现运行/配置路径、脚本或接口线索、结果证据,正文重点集中在「背景」「核心思路」,比纯概念介绍更适合进入精选阅读流。 这篇案例的阅读价值在于,它把真实任务、模型辅助过程和可迁移做法放在同一个上下文里,读者可以从 「Beancount 平行预算插件 — parallel_budget」、「背景」、「核心思路」、「什么是平行记账?」 进入正文。

  • 建议重点看 可参考其中的运行与配置路径、包含可迁移的命令、脚本或接口线索、已有结果或观测证据可用于判断复用价值。结合 Agent / 实践案例 和「任务驱动用户、AI 实践者」这一受众定位,它更适合作为任务检索后的精读材料,而不是只看一句短摘要后快速跳过。
  • 正文目录和原始材料仍然是判断依据;导读只帮助你更快定位阅读重点。
看点
Beancount 平行预算插件 — parallel_budget
读者
任务驱动用户、AI 实践者
复用
可参考其中的运行与配置路径
结构
10 个目录入口

原文内容

Beancount 平行预算插件 — parallel_budget

Type AI

用 AI 词元生成的 Beancount 预算管理插件,采用「平行记账」思路,不使用内置 budget directive。

背景

Beancount 内置的 budget 机制需要配合 bean-query 按特定语法查询,不够直观,也无法在 Fava 的资产负债表上直接看到预算执行情况。于是我用 AI(DeepSeek-v4-flash + OpenClaw Agent)全程生成了这个插件。

核心思路

什么是平行记账?

传统的预算跟踪方式往往需要修改原始交易——比如给支出加标签、分类目、或者单独记一笔预算消耗。这不仅容易破坏原始账目的干净性,还让后续审计变得麻烦。

平行记账的思路是:不动原始交易,额外增加一套"影子"账目。

你的支出还是那笔支出(Expenses:Food:Grocery 不变),但插件会自动在交易末尾追加两条脚注:

                          Assets:CreditCard:Demo  -120.50 USD    ← 原始支出不动
  Equity:Budget:Expenses:Food    120.50 USD    ← 新增:记录预算消耗
  Equity:Budget:Balance:Food    -120.50 USD    ← 新增:扣减预算余额

这三条脚注形成一组完整的复式分录,所有预算信息都沉淀在 Equity:Budget:* 账户里,不影响你原有的资产负债结构。

为什么用复式记账做预算?

传统的预算工具(如 YNAB 或 Excel 表格)通常是"单式"的——只看花了多少、还剩多少。而 Beancount 是复式记账,每一笔都有来有去。

parallel_budget 把预算也做成复式的:

账户 作用
Equity:Budget:Expenses:{name} 累计该预算下的实际支出(借方)
Equity:Budget:Balance:{name} 预算余额(贷方),周期初=预算额,周期末=剩余
Equity:Budget:Income:{name} 预算投入(贷方),周期初调整时使用

每一笔支出触发:

Expenses:Food:Grocery      +120.50     ← 你花钱了
Equity:Budget:Expenses:Food +120.50    ← 平行标记:这笔算 Food 预算
Equity:Budget:Balance:Food  -120.50    ← 平行标记:Food 余额减少

每周期初触发一次调整:

Equity:Budget:Income:Food   +X.XX     ← 预算投入
Equity:Budget:Balance:Food  +X.XX     ← 余额增加到预算金额

关键细节:调整金额 X.XX 不是硬塞预算额,而是补差值——如果上期还剩 1847.50,本期预算 2000,只补 152.50。不会因为跨期重复充值。

这样做的好处

  • 原始账本零污染 — 你的收支流水还是原来的样子,预算数据独立在 Equity:Budget:*
  • Fava 直接可见 — 在 Fava 资产负债表里展开 Equity:Budget 就能看到每个预算的余额,无需额外报表
  • 可审计 — 每一分钱怎么来的、怎么花的一清二楚,符合复式记账的完整链条
  • 零冲突 — 不与 Beancount 内置 budget directive 冲突,可以同时使用

用法示例

2026-01-01 custom "parallel_budget" "Food"       "monthly"  2000 USD
2026-01-01 custom "parallel_budget" "Renovation"  "once"    20000 USD

支出会自动匹配前缀并标记平行账脚注。

配套工具

  • Fava Dashboarddashboards.yaml 提供预算执行面板
  • CLI 报表report.py 终端表格输出预算状态
  • 示例账本examples/ 下可直接 make run 运行

AI 参与

本插件的所有代码、文档和示例均由 OpenClaw + DeepSeek-v4-flash 生成。具体过程:

  1. 需求描述 — 用户用自然语言描述"想要一个平行记账的 Beancount 预算插件"
  2. 代码生成 — AI 理解复式记账原理,生成插件核心逻辑(交易标记、周期调整、余额计算)
  3. 迭代优化 — 多轮对话中修复了:跨周期余额累计问题、一次性预算的特殊处理、前缀匹配逻辑
  4. 文档与仪表板 — AI 自动生成 README、Fava dashboard 配置、CLI 报表脚本
  5. 示例账本 — 生成可运行的示例帮助快速上手

从零到完整可用的 Beancount 插件,全程未手写一行代码。

链接

返回顶部