我们刚刚发布了 Costflow 语法的 v0.3 版本。 v0.3 最大的更新就是引入了 Formula 功能。可以说 Costflow 语法简化了纯文本记账的记录方式,Formula 又一次简化了 Costflow 的记录方式。
我们在使用纯文本记账的时候,很多交易都是有一定规律的。例如 Spotify / Netflix / 1Password 订阅这种每月金额固定且支付方式和用途固定的交易,或者 Uber / AWS 这种绑定了固定支付方式但金额不固定的交易,甚至是每天使用微信零钱支付饭钱这种支付方式和用途固定的交易。只要有一定规律,Formula 就可以帮你节省很多时间。
在 Formula 的帮助下,你可以使用一个关键词来记录一笔交易,甚至是使用一个 emoji。

如何使用 Formula
一、配置 Formula
和 Replacements 一样,使用 Formula 需要先进行配置:
- Costflow Hub 用户可以在 Dashboard 的 Formula 页面进行配置;
- Costflow CLI 用户在用户根目录的
~/.costflow.json
进行配置,增加 formula 对象即可; - Costflow Playground 用户点击页面中的 “Show Config” 进行配置。
配置采用 key: value 形式,key 为 formula 关键字,key 可以为子母、数字组成的无空格字符串(甚至可以是 emoji),但 key 值不能是任何 Costflow 默认指令符。value 为 formula 转换值,value 中可以使用以下变量(使用时变量用两层大括号 {{}} 包含):
- amount:金额,取值为录入语句中的第一个数字。在使用 amount 变量时,还可以使用简单的加减乘除运算,例如
{{ amount * 0.8 }}
; - pre: 除 formula 名称外的所有字符串;
之后版本会增加更多 Formula 变量。Formula 的执行方式是:先按照用户自定义的配置进行变量替换,然后再重新执行一次解析。所以 value 转换后的内容也要符合 Costflow 语法。
例如上文提到的几个例子,配置大致如下:
{
"formula": {
"aws": "@AWS {{ amount }} USD visa > aws",
"cashback": "Airline Cash Back {{ amount }} visa > {{ amount * 0.95 }} expenseFlight + {{ amount * 0.05 }} incomeCashback",
"netflix": "@Netflix 15.99 USD visa > netflix",
"split": "Dinner {{ amount }} visa > food + rx + ry",
"spotify": "@Spotify 14.99 USD visa > spotify",
"uber": "@Uber {{ amount }} USD visa > uber",
"rent": "Rent {{ amount }} USD visa > rent",
"v2f": "{{ pre }} visa > food",
"☕️": "@Leplays ☕️ {{ amount }} Liabilities:CreditCard:Visa > Expenses:Coffee"
}
}
二、使用 Formula
在配置好 Formula 后,便可以在对应产品中使用了。例如 Costflow Hub 用户可以在 Telegram 中发送消息触发 Formula。Formula 的指令符是 f
,你可以使用 f keyword ...
形式来触发。为了提供更好体验,在没有发现任何指令符的时候,并且语句中的第一个词是配置好的 formula 关键词时,也可以触发。
例如为 AWS 配置一个 Formula: {"aws": "@AWS {{ amount }} USD visa > aws"}
,你可以使用 f aws 50
或者 aws 50
来使用这个 formula。
Formula 会解析原始输入语句中的数字金额,然后替换 formula 的语句再运行一次 Costflow 语法。流程图见上方图片。
Formula 的关键字还可以是 emoji,例如 ☕️ / ? / ? / ? 等,这样未必能提高记账效率,但可以让记账变得有趣。
本文对 Costflow 语法 v0.3 新增的 Formula 公式功能进行了简单介绍。Formula 主要用于交易指令,但是理论上也可以其它类型的指令。感兴趣的话可以查看官方文档了解更多。
Formula 功能已增加到 Costflow CLI 、Costflow Playground 和 Costflow Hub 中。