爱意满满的作品展示区。
iyeatse

写了一个 Beancount iOS 客户端,可能是 AI 时代下记账类应用的终点

  •  2
     
  •   iyeatse ·
    yeatse · May 10 · 4403 views
    This topic created in 176 days ago, the information mentioned may be changed or developed.

    先上链接:

    本人是 Beancount 多年用户,虽然市面上免费或者收费、闭源或者开源的记账应用数不胜数,但对我来说 Beancount 的这些优点始终无法被替代:

    • 开源格式,数据永远属于自己,不怕多年的数据绑定在某一款应用上被收割,也不用担心某个 one-man app 没人维护了还要来回迁移;
    • 纯文本记账,无数据库设计,开源生态活跃,天生对 AI 友好。现在基于 Beancount 的 mcp/skill 也有了不少,这个是其他同类应用做不到的。

    当然 Beancount 也有它自己的缺点:门槛太高。对于我而言一个很现实的问题就是:如何让我的非程序员老婆也能方便地用上 Beancount ?这也是我开发 Cocono 的初衷。

    关于 Cocono

    Cocono 是我开发的 Beancount iOS 客户端,名称取自 coconut —— Beancount 是数豆子,而 Cocono 是数椰子。从 22 年开始新建文件夹,经历了疫情、前 GPT 时代、提示词工程时代,直到 25 年 Coding Agent 能力增强,开发进度才大幅度加速,不然真的要被老婆吐槽有生之年了。

    应用基于原生 Beancount 格式实现,继承了 Beancount 同样的优点:纯本地、纯文本、复式记账、统计能力强大。在此之上大幅简化了手机端交互,先上几张图:

    看板 复式记账 统计报表 收支归因
    home input balance-sheet breakdown

    在 AI 时代下,记账应用该有的 AI 能力自然也不能少:

    截图记账 语音记账 快捷指令自动化无感记账 账本 Agent
    screenshot voiceinput auto agent

    目前 Cocono 目标还是给已有 Beancount 用户更好的移动端体验,今年年初起在 Telegram Beancount 中文讨论群内测了几个月,收到了很多好评。接下来的计划是利用 Beancount 强大的生态,让更多新人方便迁移到 Beancount 来。

    喜闻乐见的兑换码环节

    以下 10 枚买断版本兑换码,先到先得:

    • 6RAKJMNR8K6H3R6R7K
    • LF4TM848KJP7KR6WER
    • 6THE6WTFEX4FP37L4M
    • RP4PATKKF8AR6FHJA3
    • 3LYRWPMN3LMEX4HF3H
    • 7YFJ87H7PRPTPYLA6Y
    • WJ7FJ3NEXEPTXRMFP7
    • FK4TXHXYFWT7J6Y7Y3
    • 6KHRRRNJ48XKXTJYE7
    • KPEXPKANWAHKX47MEX

    另有 40 枚月度付费兑换码,相比买断版本增加了云端 AI 功能,在回复中留 base64 邮箱地址我会逐一发送(会有人留吗)。

    希望大家玩得开心。

    52 replies  •  2026-06-22 23:50:57 +08:00
    v2erFy
    v2erFy
    May 10
    1
    7YFJ87H7PRPTPYLA6Y 已使用,试试看
    momocraft
    momocraft
    May 10
    2
    界面挺简洁的,好评
    没找到兑换码应该在哪用
    FelixZ18
    FelixZ18
    May 10 via iPhone
    3
    WJ7FJ3NEXEPTXRMFP7 用了
    momocraft
    momocraft
    May 10
    4
    试用了一下,操作也比较简洁,先好评了
    我准备在手机上用,记录小额交易
    可以发我一下 tg Beancount 讨论群的链接吗?我 email: Y2NzMmlicDRvQG1vem1haWwuY29t
    momocraft
    momocraft
    May 10
    5
    找到在哪输入了,但是试了几个码都被用过了
    我先试用普通版吧
    楼主有空希望能发我下 tg 群链接 😂
    hfaskf
    hfaskf
    May 10
    6
    试用一下,email:amFydmlsaXUyMDIzQDE2My5jb20=
    Varvel
    Varvel
    May 10
    7
    可以申请一个吗,bWltZUBjYXJib24uZGU1Lm5ldA==
    rrubick
    rrubick
    May 10 via iPhone
    8
    但是吧,这么隐私的数据交给大模型吗?
    iyeatse
    iyeatse
    OP
    May 10❤️1
    9
    @momocraft 我怀疑这里有 bot ,码发出来秒没,根本没触达到 Beancount 的用户。TG 群链接 https://t.me/beancount_zh

    月度兑换码等我攒 40 个邮箱统一发,不过我有足够的信心免费版也比市面上绝大部分同类应用强了( Beancount 真的好用)
    iyeatse
    iyeatse
    OP
    May 10 via iPhone
    10
    @rrubick 这就是 Cocono 设计巧妙的一点,可以去官网查一下隐私政策。简单说就是非国行手机有 Foundation Model ,国行手机也尽量暴露最少数据(比如账本 Agent 能力,AI 只会生成 SQL ,然后在客户端本地查询)。你也可以自己设置成其他的本地模型,只需要兼容 OpenAI 端口就好。
    aokirin
    aokirin
    May 10 via Android
    11
    有安卓版吗
    maemolee
    maemolee
    May 10
    12
    数字键盘用的是第三方控件吗?怎么能在 26 上见到这么复古的 UI😂
    iyeatse
    iyeatse
    OP
    May 10 via iPhone
    13
    @maemolee 因为坑开得太早了……数字键盘这块是 24 年还是 23 年写的,一直没时间适配来着(
    iyeatse
    iyeatse
    OP
    May 10 via iPhone
    14
    @aokirin 我先看看 iOS 版本能不能把我给苹果交的保护费赚回来…
    missqso
    missqso
    May 11 via iPhone
    15
    bWlzc3Fzb0BnbWFpbC5jb20=

    谢谢❤️
    bxb100
    bxb100
    May 11
    16
    KPEXPKANWAHKX47MEX 已用, 谢谢
    bxb100
    bxb100
    May 11
    17
    @bxb100 啊, redeem 改版了啊, 没领到...全都用完了
    Yreddragon
    Yreddragon
    May 11 via iPhone
    18
    有可能会降低支持的系统版本吗?目前还在 ios16.6
    haruhi
    haruhi
    May 11
    19
    我感觉很多时候记账并不是因为对应的 App 使用门槛难度高,而是绝大多数都在“详细”记录自己的花费、做极度细致的分类(比如截图里的“早午晚餐”)——最终导致没过多少时间,就放弃。

    我的分类:

    daimao
    daimao
    May 11
    20
    看着还不错
    MCVector
    MCVector
    May 11
    21
    Beancont 重度用户。如果能保证完全本地,隐私没问题的话,算是解决我的一个痛点啦。
    whiteleopard520
    whiteleopard520
    May 11 via iPhone
    22
    太快了,还能求一个吗,谢谢
    MjYxOTgxNzU3QHFxLmNvbQ==
    hahao
    hahao
    May 11
    23
    OP ,还能求个码不,记账+ai ,是个思路,想体验一番。ODM3ODMxODM1QHFxLmNvbQ==
    ibijn
    ibijn
    May 11
    24
    看着挺不错的,MTEwOTQ0MTc3NUBxcS5jb20=
    rumengzhenxing
    25
    求个码
    cnVtZW5nemhlbnhpbmdAZ21haWwuY29t
    nsasdada
    nsasdada
    May 11
    26
    大佬,求个码:eXViaW53YW5AeWVhaC5uZXQ=
    killva4624
    27
    amF5aHVudGVyQDE2My5jb20= 求一个试用~
    azoon
    azoon
    May 11
    28
    求一个试用,感谢
    aHpobG1sQGdtYWlsLmNvbQ==
    iyeatse
    iyeatse
    OP
    May 11
    29
    楼上已全部发完
    jasoned
    jasoned
    May 11
    30
    catfin
    catfin
    May 11
    31
    求个码
    Y2d1ZXNzQDEyNi5jb20=
    soki
    soki
    May 11
    32
    deepseek api ,提示[未能完成操作。AnyLanguageModel.URLSession Error 错误 0],什么问题?
    skyrocketing
    33
    求个码
    c2t5cm9ja2V0aW5naG9uZ0BvdXRsb29rLmNvbQ
    iyeatse
    iyeatse
    OP
    May 11
    34
    @soki deepseek 不支持 Responses API ,需要把查询助手模型设置为“禁用”然后保存。下一版本我优化一下这块。
    galenzhao
    galenzhao
    May 12
    35
    能不能加个导入 finance2 的记录
    Bandy
    Bandy
    May 12 via iPhone
    36
    YmFuZHlvQHFxLmNvbQ==
    谢谢大佬
    iyeatse
    iyeatse
    OP
    May 12
    37
    @galenzhao 是哪个 finance2 ?
    galenzhao
    galenzhao
    May 13
    38
    问题不大,我自己转了下。finances2 ,原来 mac/ios 的,有 icloud 同步,一直在用。
    你这个 app 能不能在 dashboard report 加个汇率自动换算?
    我有多币种,我试了下,得每次去 setting 切换下才能显示对应币种的统计
    iyeatse
    iyeatse
    OP
    May 13
    39
    @galenzhao 现在首页区域可以用 [BQL]( https://beancount.io/docs/Basics/beancount-query-language) 配自定义看板,可以根据自己需求展示任意信息,不过操作有点复杂,我看看后面怎么优化下
    leepierson
    leepierson
    May 13 via iPhone
    40
    申请个试用,谢谢:bGlwcy5hcHBsZUBvdXRsb29rLmNvbQ==
    iyeatse
    iyeatse
    OP
    May 14
    41
    @soki 最新版优化了 deepseek api 的兼容性,可以试一下
    shimotsiki
    shimotsiki
    May 22❤️1
    42
    “如何让我的非程序员老婆也能方便地用上 Beancount” 拍大腿,我就是因为这个原因一直没用 beancount ,目前还在用小星记账,过段时间真的用起来 beancount 再让老婆试试
    galenzhao
    galenzhao
    Jun 19
    43
    我又回来了,能不能加个 sync ,onedrive/gdrive 之类的,多手机急需,
    另外能 port 个 android 更好了
    galenzhao
    galenzhao
    Jun 19
    44
    另外还有个问题,close 的 account 还是会在选择里出来,我因为 closed account 非常多,要找半天
    galenzhao
    galenzhao
    Jun 19
    45
    @galenzhao sync 这个暂时用 icloud share folder 解决了,
    另外能否支持 fava dashboard 这种用法。

    我已经把所有账本转到你的 app 管理了,买了两个区的支持一下
    galenzhao
    galenzhao
    Jun 20 via Android
    46
    @galenzhao #44 close 的问题是我自己账本同步出错了,app 会过滤掉 closed 的选择。
    但是我发现个奇怪的地方。
    主页的 networth ,汇率是怎么计算的,我账本中有指定汇率,但是我发现在两个手机上 主页的 networth 会有一点点区别,差个几毛。
    我确定这两个手机账本数据完全一致,
    iyeatse
    iyeatse
    OP
    Jun 20
    47
    @galenzhao 感谢支持,fava dashboard 我研究下,现在首页自定义卡片那里可以用 BQL 定制显示内容,可以看看能不能替代。close account 展示的问题我下个版本修改下
    iyeatse
    iyeatse
    OP
    Jun 20
    48
    Networth 是用 price 指令计算的,算法类似于 fava 中的"转换为 CNY"的算法。(试试 V2EX 能不能展示 LaTeX )

    设本位币为 $c_0$,价格表为 $P$,当前日期 $t_0 = \text{now}$。

    折算函数:

    $$
    \text{conv}(t, p) = p \text{ 在日期 } t \text{ 按 } P \text{ 折算到 } c_0 \text{ 的金额}
    $$

    资产合计与负债合计(遍历 `[开账, t_0]` 区间各账户库存):

    $$
    A = \sum_{\substack{a \,:\, \text{type}(a)=\text{Assets}}} \;\sum_{p \in \text{inv}(a)} \text{conv}(t_0,\, p)
    $$

    $$
    L = \sum_{\substack{a \,:\, \text{type}(a)=\text{Liabilities}}} \;\sum_{p \in \text{inv}(a)} \text{conv}(t_0,\, p)
    $$

    > 负债账户余额本身为负,故 $L \le 0$。

    **净资产:**

    $$
    \boxed{\,\text{NetWorth} = A + L\,}
    $$
    galenzhao
    galenzhao
    Jun 20 via Android
    49
    en 现在两个手机的 networth 又一致了,,我也不知道是啥问题,那会不一致的时候我还专门看了确认两边总记录数据条数一致。
    目前用起来没啥特别急需的改动了。

    不过有一点是,进 view all ,networt 会卡一下。可能是我记录太多了。2 w+ 条。
    还有一点是数据更新判断不太明确,具体体现是,我现在把 folder 用的 icloud drive 保存。当我在 mac 上修改了之后,不确定什么时候 app 会刷新。我现在会主动在 appsetting 切换个其他账本,在切换回来,强制他更新。因为我发现有时候 setting 里账本 updated 时间已经变了,但是进 home 和 viewall ,并没看到新的记录
    galenzhao
    galenzhao
    Jun 22 via iPhone
    50
    另外还有一点,能不能完全自己写 prompt ,
    我看解析图片和查询可以选不同 model ,
    但是下边 custom prompt 只有一个内容,
    不知道该怎么用。
    iyeatse
    iyeatse
    OP
    Jun 22
    51
    @galenzhao 自定义规则只能定义 OCR 识别账单的附加规则,比如“金拱门按麦当劳记录”这样的描述;完全自定义的话,模型的输出格式没办法约束,你那里如果有定制诉求的话可以提出来我看看能不能扩展。

    目前的提示词你可以参考:
    https://gist.github.com/yeatse/5ca3bd67463fa024db63653d93ef0d2d

    https://gist.github.com/yeatse/3e03b3583e139ae5e9aa34040e20b5f6
    galenzhao
    galenzhao
    Jun 22
    52
    @iyeatse 看上去 prompt 不好 overwrite ,我先继续用 cc 直接给 trans txt 加进去吧
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5365 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 78ms · UTC 06:34 · PVG 14:34 · LAX 22:34 · JFK 01:34
    ♥ Do have faith in what you're doing.