mini-cc 的记忆引擎:让 AI 别再当金鱼了

发布时间:2026/5/30 19:43:21

mini-cc 的记忆引擎:让 AI 别再当金鱼了 先说个事儿你之前有没有遇到过这种情况——跟 AI 聊得好好的突然它来一句我不记得你之前说过什么这种情况应该以前有现在各大产品应该都处理优化了。我: 我正在开发一个 React 项目 AI: 好的有什么我可以帮助你的 我: 帮我优化一下代码 AI: 什么代码这就是典型的金鱼记忆。7 秒就忘每次对话都是全新的开始。我在做 mini-cc 的时候这个问题也是我重点关注的问题。后来我先去看了 Claude Code 的处理还去找了一些相关文章看了看。今天就来聊聊我是怎么给 mini-cc 加上记忆能力的。设计思路说实话一开始我想搞个向量数据库弄个 Embedding 模型整得高大上一点。后来一想——太复杂了。我就想让它能记住几件事儿用不着整那些花里胡哨的。后续我会考虑是否需要支持更复杂的记忆功能最后我选了个最朴素的方案直接用文件系统存记忆。.ai_memory/ ├── MEMORY.md # 索引文件相当于目录 ├── project_stack.md # 项目技术栈 ├── coding_style.md # 编码风格 └── api_endpoints.md # API 配置简单、直接、看得见摸得着。就算 mini-cc 挂了我也能直接打开文件看看里面记了啥。核心功能一让 AI 会记笔记我做了个remember技能让 AI 能主动把重要信息存下来。怎么用我: 记住我的项目名称叫 mini-cc AI: 好的我已经记住了你的项目名称是 mini-cc。 过了很久另起一个对话 我: 帮我启动我的项目 AI: 根据记忆你的项目是 mini-cc正在帮你启动...怎么存的我用了两步走的方式详细内容写入独立的.md文件一句话摘要写入MEMORY.md索引文件比如# MEMORY.md索引文件 - [project_stack](./project_stack.md): 项目使用 TypeScript React - [coding_style](./coding_style.md): 使用 2 空格缩进# project_stack.md详细内容 --- type: architecture description: 项目技术栈说明 --- 项目使用 TypeScript React 架构采用函数式编程风格。 主要依赖 - React 18 - TypeScript 5 - Vite防爆机制一开始我没限制索引文件的大小结果 AI 疯狂往里面写几百行都不停。后来我加了个限制——索引最多 10 行超了就截掉最老的。这个防爆机制救了我好几次。核心功能二记忆扫描与检索记忆存多了怎么找到相关的我做了个扫描机制。扫描逻辑扫描.ai_memory目录下的所有.md文件读取每个文件的 frontmatter提取type和description按修改时间排序最新的排前面最多返回 200 个文件防止太多撑爆内存检索逻辑目前我用的是关键词匹配——简单粗暴但够用。比如用户问我的 API 配置是什么系统就会在记忆描述里搜 “API” 这个关键词找到相关的记忆返回给 AI。未来想做的接入 Embedding 模型做语义搜索。但现在这个关键词匹配已经能覆盖 90% 的场景了先这样吧。核心功能三消息压缩这个是处理对话太长的问题。你跟 AI 聊久了对话历史会越来越长最后超过模型的上下文窗口就会报错。我的压缩策略第一步剥离图片把消息里的图片块替换成[image]占位符。一张图片可能占几千个 tokens替换成 6 个字符的占位符省大了。第二步头部截断如果还是超限就直接扔掉最老的消息。默认扔 20%。一开始我想调用 AI 做智能摘要后来发现——太慢了。用户等不起。直接截断虽然粗暴但快。第三步保底策略至少保留一轮对话确保 AI 还能正常工作。这套逃生舱机制虽然不优雅但确实救急简单粗暴有效。还没做的功能会话管理我想做/new创建新会话/sessions切换会话。但目前还没实现排期中可关注后续更新。语义搜索关键词匹配够用但不够智能。想接入 Embedding 模型做真正的语义搜索。自动记忆提取现在是用户主动说记住 xxxAI 才会存。理想情况是 AI 自动识别重要信息主动存下来。我的体会做这套记忆系统我有几个感受简单比完美重要。一开始想搞向量数据库后来发现文件系统就够了。别过度设计。先从简单的来。防爆机制必须有。AI 写东西没轻没重得给它设个上限。关键词匹配够用。语义搜索听起来高大上但关键词匹配能覆盖大部分场景。压缩要快。用户等不起智能摘要直接截断虽然粗暴但有效。源码在哪如果你感兴趣可以看看这些文件记忆管理src/memdir/MemoryManager.ts记忆扫描src/memdir/memoryScan.ts相关性查找src/memdir/findRelevantMemories.ts消息压缩src/services/compact/compact.tsRemember 技能src/skills/built-in/remember.ts最后问一句大家觉得 AI 的记忆系统还需要啥功能评论区聊聊。有什么心得可以一起分享。 如果觉得有用⭐ Star 一下GitHub 仓库 关注博客后续还会更新更多内容你的支持是我继续写的动力

相关新闻