1135 words
6 minutes
推倒重来:MiraMate v2 的诞生与重构思考

我的个人项目 MiraMate 始于 2025 年五月,但在此之前,我已经花了大半年时间学习和探索相关的技术栈,包括 Langchain、ChromaDB 和 Faiss 等智能体(Agent)技术。这是我第一个真正意义上的完整个人项目,与我之前接触的以 Java 后端为主的练习项目截然不同。

这篇文章,我想记录一下它从 v1 到 v2 的一次彻底重构之旅。

V1 的诞生:一次对多 Agent 架构的探索#

在项目初期,我的构想是让多个 Agent 协同工作,共同扮演一个生动、丰富的 AI 角色。基于这个想法,我选择了由微软开源的 autogen 框架,它正是为此类多 Agent 协作场景而设计的。

经过大约两个月的开发,MiraMate v1 诞生了。它具备了:

  • 一个完整的 AI 对话流程。
  • 一套基于向量数据库的记忆系统。
  • 一个用 Electron 编写的 Windows 客户端。

然而,在这个阶段,我犯了一个关键的错误:过度依赖 AI 辅助编程。尤其是在我不熟悉的客户端开发部分,大部分代码都直接由 AI 生成。这种“高效”的开发模式,为项目后期的困境埋下了伏笔。

当项目悄然变成“屎山”#

v1 版本虽然功能可用,但很快就暴露出了一系列严重问题:

  • 大量的隐形 BUG: AI 生成的代码逻辑不够严谨,导致许多难以追踪和修复的暗病。
  • 拓展性极差: 混乱的代码结构使得添加新功能变得异常困难,每走一步都举步维艰。
  • AI 表现不佳: 核心的 AI 体验,如记忆检索、对话流畅度和上下文管理,都存在明显的问题。

最重要的是,由于大量代码非我亲手编写,我对整个项目的细节掌控程度非常低。它逐渐变成了一座典型的“屎山”。

恰逢那时我需要应对学校的考试,开发进度被迫停滞了一段时间。这段“冷却期”反而让我有机会沉下心来,重新审视 MiraMate 的未来。

决断:彻底重构#

经过几周的思考,我得出了一个明确的结论:在现有基础上修修补补已经没有意义。我决定彻底重构整个项目。

这次重构的核心是放弃 autogen 的多 Agent 架构——它的实际表现并不如理论上那般理想。我选择了社区更成熟、生态更丰富的 Langchain 作为新的核心框架,并且立下了一个新原则:

自己编码为主,AI 作为辅助工具,绝不让 AI 直接参与最终代码的编写。

V2 的新生:回归代码的掌控#

在新的 V2 项目中,我几乎重写了所有代码。借助 V1 的经验教训和新学习的知识,新项目的代码质量和逻辑性都有了质的飞跃。

我着重在以下几个方面进行了重新设计:

  1. 全新的情感与记忆系统: 我设计了一套“记忆系统 + 状态系统”相结合的情感管理机制。这套系统更符合人类的记忆习惯,能够让 AI 更智能地查询和利用记忆,从而做出更富有人情味的反馈。

  2. 自定义上下文管理: 我编写了一个自定义的上下文管理逻辑,它不再是简单的截断或压缩,而是能更好地模拟现实对话情景,适配了更具弹性的对话时间窗口。

  3. 可控且可拓展的对话流程: 我重新设计了整个对话流程,极大地加强了对 AI 行为的控制力。并且,在每一个模块和接口的设计上,我都预留了充足的拓展空间,为未来的功能迭代铺平了道路。

相比于 V1,V2 在项目水平上有了巨大的提升。这不仅仅是技术框架的更替,更是一次开发思想上的转变——从追求快速实现,到注重代码质量、可维护性和长期发展的回归。这次重构虽然耗费了巨大的精力,但它让 MiraMate 真正走上了一条可持续发展的道路。

你可以在 GitHub 上看到这两个截然不同的版本:

推倒重来:MiraMate v2 的诞生与重构思考
https://contrue.top/posts/miramaterebuildexp/
Author
contrueCT
Published at
2025-08-27
License
CC BY-NC-SA 4.0