返回项目列表
自主财务

Family CFO

一个个人财务智能agent,能连接Plaid支持的任意银行,给交易分类、预测现金流、检测异常和订阅、跟踪完整的信封预算,并通过Telegram主动推送洞察——不用等人来问。

分享这篇案例 →
6
专业Agent
ReAct + tool registry
编排方式
A2A ecosystem member
生态协议
难点所在

难点在于:把杂乱的真实交易数据变成一个家庭每天都能信任的数字,而且没有人在旁边替它把关。

架构一览
已上线
截至 2026-07-14
ReAct orchestrator (agent-as-tool)Config-driven LLM tiersExternalized prompt storeReplayable reasoning tracesA2A protocol peerNAS-first deploy smoke and dashboard observabilityRepository-backed SQLite services with legacy compatibility facade
完整的内部 Agent 阵容
orchestratorclassifierbudget_advisorinsight_reporterplaid_opsanomaly_sentinelinvestment_advisor远程 A2A 专家
Agent

ReAct orchestrator coordinating specialist agents through agent-as-tool calls

Family CFO 在生态系统中
技术栈

Python, SQLite schema v8, Plaid, Telegram Bot, APScheduler, Docker, Gitea Actions on NAS, M14 LLM gateway, A2A TraderJoe integration

01真正的规划能力,不只是一张更快的表格

五个专业agent分工协作——分类器、预算顾问、洞察报告员、Plaid同步agent、异常哨兵——每一个背后都有自己的DeepSeek工具schema函数:按类目和月份查支出、预算对比、净资产、现金流预测、异常检测、YNAB风格的信封预算等等。一个典型对话是这样的:用户问这个月为什么花得多;agent调用get_spending发现日用品支出翻倍;再调用get_anomaly_alerts发现某个商户的到访次数从3次跳到8次;然后给出具体原因,并主动提议设一个预算提醒——这是跨两次工具调用的推理,不是简单的关键词匹配。除了对话之外,还有四个定时任务在不用人问的情况下自主运行:一个每日预算检查,只在真的超支时才发消息(平时保持安静,不制造无谓的噪音);一个每日洞察推送,把健康评分和异常检测合并成一条Telegram消息;一个周一早上的周报,由agent自己写自己这一周的总结;还有一个每天两次的银行同步。对话只是这套系统的一个入口,主动预警是另一个。长远方向——目前还没做——是把Family CFO和Trader Joe接通,让理财和投资由同一套系统统一规划,而不是两个互不相通的app:一个家庭、一张全景图,朝着跨代积累财富的同一个目标努力。它通过Video Factory共享的LLM网关接入,带着自己的调用方标识,所以用量和网关上其他任何agent分开统计。

02个人财务里最难的问题

交易分类是一个三层级联。第一层用Plaid自带的结构化类目(覆盖约70%)。第二层对已知商户套用关键词规则(再覆盖约20%)。第三层对剩下约10%的模糊情况交给LLM兜底,返回类目、置信度和理由。当用户手动纠正一次错误分类时,agent可以当场新增一条关键词规则——在生产环境里学习,不需要重新训练模型。这正是修复一个真实bug的方式:一个粗糙的映射曾经把房贷和车贷都埋在笼统的"转账"类目下,悄悄扭曲了每一次预算计算,而且没有任何可见的报错。

03不用机器学习的统计异常检测

三条规则,全部用纯Python和SQL实现——不用pandas,不用scikit-learn。单笔交易超过该类目预算50%,标记为高severity。某类目月度总额超出其历史均值两个标准差(由家庭自己的真实历史数据算出),标记为中severity。同一商户三个月内扣款两次以上,标记为低severity,视为疑似订阅。不用训练模型,不用担心概念漂移,而且它能准确区分"真的异常"和"只是稍微超支"。

04一条SQL查询搞定订阅检测

按描述给未删除的交易分组,保留出现两次以上且总额为正的分组,按平均金额排序。就这一条查询,把账户里所有的经常性扣费都找出来——Netflix、Spotify、健身房会员、保险——不需要任何模式匹配或外部服务。这个agent不需要知道"订阅"长什么样,数据本身的规律会自己浮现出来。

05结构上保证幂等

每一笔Plaid交易在落库前都会被规整成一条不可变记录。去重规则匹配日期、描述、金额——同时检查整数分和近似浮点两种表示,以捕捉舍入误差——而软删除保护确保用户删掉的交易永远不会被悄悄重新导入。这个同步agent连续跑十次和只跑一次的结果完全一样,所以同步中途崩溃从来不是什么危险的事。

技术栈

Python、Plaid、通过共享M14网关调用的LLM、APScheduler、Docker、SQLite。

— 简历与联系方式

聊。