本篇文章讲述的内容是我给自己的开源软件添加AI功能的历程,不感兴趣的同学可以直接关掉哈
前言
去年10月的时候,我曾经在少数派上发布过一个我自己的记账软件的开发过程,链接在下方,感兴趣想了解是一个什么项目的,可以点击看一下,下面我要讲的内容,是基于这个项目进行开发的
彼时的我在开发项目的过程中就在github上面写到过,想着添加AI相关的功能
并非想当时代的弄潮儿,实则我因为工作的缘故,从2020年开始开发NLP相关的应用,再到22年年底的ChatGPT平地惊雷,因为工作的缘故也第一时间跟进
后来基于LangChain做的RAG相关的应用,再到后来使用知识图谱、Dify,等等等等,在LLM生成式AI方向上,感觉自己走过了很漫长的道路
So,基于工作上面的经验+自己的开源项目,就产生了奇妙的反应,引申出下面的内容
添加LLM的方式
当我的记账软件开发版本从1.0再到1.5、2.0、2.4、2.5,版本号的递增导致了我功能完善的同时,也开始逐渐厌倦,功能点是逐渐减少的,到了增无可增的时候了
然后人类一思考,上帝就发笑
一个记账软件+大语言模型,应该是一个怎么样的产品形态?
这是一个从开发者跨入产品经理的思考
最终我对自己的记账软件解构化之后,就剩下两个大功能,一个是‘记’,一个是‘查’
其余的,均为花架子
所以我给自己提出了一个较为发散的问题列表:
- 对比一下上个月和去年同期的支出,什么占大头?
- 我今年哪天买的枕头?
- 整理一下我去年各个月份的支出
- 我儿子去年生病花了多少钱?今年呢?
- 今年第一季度和去年第一季度比,收入少到哪里了?
- 统计一下近三年我车的保险钱
- .......
如果上述问题都能回答,我觉得AI功能算是添加成功了
带着目标我做了如下的尝试:
方案1:LLM+数据库
这是一个早期方案,如果我没记错的话,在23年7月份尝试的
思路:既然要查,我一步到位,让LLM生成SQL语句,查询数据库,得到数据,再进行总结
操作:使用 文心4.0模型生成SQL后,直接使用该SQL进行查询
结果:失败,我无奈的发现,这个弱鸡模型在当年干点别的还行,但是他根本对付不了几个简单的表,还有每个表的结构
方案2: RAG检索增强生成
在尝试了数据库的路行不通的时候
我想到了另一条路,RAG
思路:每个月的账单数据,使用Embdding模型,加入到向量库,使用用户问题进行召回并回答+LLM模型回答
操作:为了简化操作,我部署了一套Dify,手动导入了我的全部账单,Embdding+Rerank模型均使用硅基流动的API,大模型选用Qwen2-72B

结果:失败,这次是卡在了知识库召回这里,知识库召回存在天然的短视问题,无法处理更大更全局视野的问题,举例子就是:“查一下这半年大头花销”,结果就是他只能召回3个月的数据,并且时间错误
其实到这里我就已经搁置了我的想法,既然无法用技术手段实现,那就交给时间吧
柳暗花明又一村,时间来到了去年年底,MCP被Anthropic提出,并且迅速发展
这时的LLM模型,百花齐放
DeepSeek-R1、Claude、Qwen3家族等等等等
他们都有一个特殊加强功能,instruct指令,时机也许到了...
方案3:MCP Server+API接口
今年5月初,又是工作中的调研,我开始探索MCP,这个新兴的工具
MCP的组成部分有两个:
- MCP Server
- MCP Client
MCP Server:
职责:提供一系列的工具,然后通过工具调用记账软件的接口,提供数据
开发:基本需要自己开发,根据实际业务来进行开发
MCP Client:
职责:链接大模型,与用户提供交流的窗口,并与解析模型给的JSON后与MCP Server通信
开发:可以自己开发,也可以直接选择带有MCP Client功能的软件来直接使用
至此,选型结束,我开始了项目的开发改造
MCP Server开发与结果
千看万看不如手试一遍
基于Github上的mcp官方仓库,我开始了开发
MCP Client选用的是Cursor,客户端开发不在本次内容中

主要的开发内容是MCP Server
开发的过程很无聊而且coding过程大部分人不关心,这里我不多赘述
得益于我自己的开源记账软件预先设计好了接口与swagger文档

所以工具开发工作量并不是很大
这里贴一下我的工具列表,鉴于是实验性质的内容,我也没有创建太多的工具

断断续续搞了几天,最终成功部署
下面Callback一下我之前的几个问题,来看一下他的回答吧,请开始你的表演
- 对比一下上个月和去年同期的支出,什么占大头?

2. 我今年哪天买的枕头?

3. 整理一下我去年各个月份的支出

4. 我儿子去年生病花了多少钱?今年呢?

5. 今年第一季度和去年第一季度比,收入少到哪里了?

6. 统计一下近三年我车的保险钱

如你所见,上述的几个问题算是均得到了我比较满意的答复
关于给传统软件插上AI的翅膀
在接入MCP Server前,我的记账软件EasyAccounts只是一个普通的前后端分离的项目(现在77个star了呦)
在我外挂了一个MCP Server的端后,真的碰撞出来了奇妙的化学反应,无需繁琐的手动查询,打开界面,直接问问题,就可以总结回答
这次实践,让我思考了一个问题,如果是公司级的传统项目,是否可以在某一些开放式的业务场景,例如查询等业务开创新的用户体验?
把传统的API接口,化作工具,组合使用,交于LLM大模型,这是否是未来呢?
还是那句话,技术手段没办法解决,把一切交给时间吧
最后说一下MCP Client
关于客户端的开发,其实我觉得很多人都是忽略的一点
与我个人来看,MCP Client的重要性,要强与MCP Server
我并不觉得所有人都有Cursor,也不觉得普通的用户会煞费苦心的配置自己的api key到一个第三方的大模型应用上
虽然我觉得Cursor以及我现在用的CherryStudio用户体验已经不错了

但是依旧是增加了用户的使用成本、学习成本
LLM相关产品,应该是简化用户的操作的
所以,想要打造一个普罗大众都能开心用起来的的AI应用,MCP Client是要融入自己的产品的,第三方的MCP Client终究不是一个终极的产品形态
写在最后
我的记账软件虽然开源了,但是本次开发配套的MCP Server我还没有开源,这里等我开发好MCP Client在考虑后续的开源事项吧
如果你有什么更好的MCP相关的idea或者经验,欢迎交流
