开源自己 YY 原理写了一套 agent,仿照 Cursor、Copliot 等..
之前发帖提过自己在折腾一个 AI 记账项目,最近花时间把代码整理了一下,文档补全了。
先放仓库地址,觉得有意思的佬帮忙点个 Star,这对我很重要,感谢!
- 客户端 (React Native): [ https://github.com/JamesSmith888/LedgerAIClient )
- 服务端 (Spring Boot): [ https://github.com/JamesSmith888/ledger-server )
为什么要自己造轮子?
市面上的记账 App 很多,但 AI 记账大多是简单的 "正则匹配" 或者 "Chatbot 聊天式"。我想要的是一个真正的 Agent——它能理解"帮我把上周的餐饮支出统计一下做个图表",也能在我要"删除所有数据"时跳出来拦住我。
为了实现这个,我没有用现成的 LangGraph(太重),而是自己手搓了一套 Stateful Agent 架构。

核心技术实现 (Agent 设计细节)
这部分是项目的核心,也是我掉坑最多的地方。整个 Agent 不是一个简单的 LLM 调用,而是一个包含规划、执行、反思的闭环系统:

-
Intent Rewriter (意图预处理)
这是第一道关。用户说话很随意(比如"记一笔 50"),LLM 直接处理容易幻觉。我加了一层预处理,负责把口语转化为结构化数据(提取金额、日期、分类),并且自动评估风险等级。如果是高风险操作(比如批量删除),直接在这里就标记需要确认。 -
Planner (动态规划器)
拒绝硬编码模板。Agent 会根据用户意图,动态生成一个ExecutionPlan。
比如你说"统计本月支出",它会自动拆解为:查询交易->计算总额->调用渲染工具画图。每一步执行完,还可以根据结果动态调整后续计划。 -
Stateful Agent (状态机执行)
这是个有限状态机。精确控制Thinking->Tool Call->Confirmation->Reflection的状态流转。
最重要的是加入了 Human-in-the-Loop (人机协同)。涉及钱和数据的操作,Agent 会弹窗让你确认,而不是自作主张。 -
Reflector (ReAct 反思模式)
这是为了解决 LLM "死脑筋"的问题。每一步执行完,都有一个独立的模型在后台"反思":结果对不对?是不是报错了?
如果工具调用失败,Reflector 会自动生成修正建议(Correction Hint),告诉执行器换个姿势重试,而不是直接报错摆烂。 -
后端 MCP 协议
服务端集成了 Spring AI 和 MCP (后续放弃 MCP 了,直接基于 function call 做的工具)。业务逻辑(记账、查询、统计)直接封装成标准 Tool 暴露给 AI。
正常的业务功能
当然,抛开 AI 不谈,这也是个功能完整的记账 App:
- 多账本:支持个人、家庭共享、商业账本。
- 图表分析:饼图、折线图、多维分析,该有的都有。
- 数据导出:支持导出 Excel/CSV/JSON,数据掌握在自己手里。
- 权限管理:基于 RBAC 的权限控制。
碎碎念
代码虽然开源了,但肯定还有不少 Bug 和优化空间。目前的架构是我在实践中摸索出来的,可能不是最优解,但对于想在 RN 或 Java 项目中集成复杂 Agent 的佬,应该有点参考价值。
最后,再次厚脸皮求个 Star 🌟!
再感谢下 AI,AI 在开发过程中帮了很多忙。

GitHub 的图床是用 content 那个域名吧,我这打开就是裂开的。
