
1. 项目概述为你的AI编程助手装上“记忆大脑”如果你还在用CLAUDE.md或者MEMORY.md这种Markdown文件来给AI助手当“记忆”那你可能已经踩过不少坑了。文件越写越长每次对话都得把整个文件塞进上下文烧掉海量Token想找“数据库超时”的解决方案却搜不到“MySQL连接池的坑”因为关键词对不上一个文件管所有项目不同项目的知识点互相污染开发进度和待办事项全靠自己脑子记AI一问三不知。AIVectorMemory 要解决的就是这些痛点。它本质上是一个跨会话的持久化记忆MCP服务器给你的AI编程助手比如Cursor、Claude Code、Windsurf等装上一个本地运行的“记忆大脑”。这个大脑不依赖任何云端服务所有数据都存在你本机的SQLite数据库里通过向量检索实现语义搜索让你和AI的协作效率提升一个量级。简单来说它做了三件核心事记住把你项目里的技术决策、踩过的坑、代码规范、用户偏好用向量化的方式存起来。召回当AI需要相关信息时通过语义搜索精准找到相关记忆而不是把整个记忆库都灌进去。管理内置了问题追踪和任务管理功能让AI能参与到完整的开发工作流中而不仅仅是个聊天工具。我花了几个月时间深度使用和测试发现一旦用上就回不去了。最直观的感受是和AI讨论项目时不用再反复复述背景它“记得”上周我们讨论过哪个API容易超时也“知道”这个项目里我们约定好的代码风格是什么。2. 核心架构与工作原理拆解2.1 整体架构三层设计各司其职AIVectorMemory 的架构很清晰分为三层协议层、逻辑层和存储层。┌─────────────────────────────────────────────────┐ │ 你的AI IDE │ │ (Cursor, Claude Code, Windsurf, VSCode...) │ └──────────────────────┬──────────────────────────┘ │ │ MCP协议 (标准输入输出) ▼ ┌─────────────────────────────────────────────────┐ │ AIVectorMemory MCP 服务器 │ │ ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │ │ │ 记忆工具 │ │ 搜索工具 │ │ 自动保存工具 │ │ │ │ (remember)│ │ (recall) │ │ (auto_save) │ │ │ └────┬─────┘ └────┬─────┘ └───────┬──────────┘ │ │ │ │ │ │ │ ┌────▼────────────▼───────────────▼──────────┐ │ │ │ 嵌入引擎 (ONNX Runtime) │ │ │ │ (intfloat/multilingual-e5-small 模型) │ │ │ └────────────────────┬───────────────────────┘ │ │ │ │ │ ┌────────────────────▼───────────────────────┐ │ │ │ SQLite sqlite-vec 向量数据库 │ │ │ │ (~/.aivectormemory/memory.db) │ │ │ └────────────────────────────────────────────┘ │ └──────────────────────────────────────────────────┘协议层基于 Model Context Protocol。这是一个新兴的、由Anthropic推动的开放协议旨在让AI助手能安全、标准化地调用外部工具和服务。AIVectorMemory 作为一个MCP服务器运行你的IDE通过标准输入输出与它通信。这意味着它不依赖特定的网络端口安全性更高兼容性也更好。逻辑层这是核心业务逻辑所在。它提供了9个MCP工具后面会详细讲比如remember存记忆、recall搜记忆。同时它还集成了一个轻量级的ONNX推理引擎用于将文本转换成向量。这里选用的模型是intfloat/multilingual-e5-small一个在多语言文本表征上表现很好的小模型平衡了效果和速度。存储层使用 SQLite 数据库并通过sqlite-vec这个扩展为其增加了向量索引能力。所有数据包括记忆文本、向量、标签、会话状态、任务和问题都存储在一个本地文件~/.aivectormemory/memory.db里。完全本地化是它的核心优势之一没有数据泄露风险也不受网络影响。2.2 为什么是向量搜索告别关键词匹配的局限传统的CLAUDE.md文件本质上是“关键词匹配”。你写下了“MySQL连接池配置为20个”但当你搜索“数据库连接数”时很可能找不到这条记录。向量搜索解决了这个问题。它的工作原理是“语义相似度”匹配编码当你调用remember存储一条记忆时AIVectorMemory 会用嵌入模型将这段文本转换成一个高维向量比如384维。这个向量可以理解为这段文本的“数学指纹”语义相近的文本其向量在空间中的距离也更近。存储将文本、向量、元数据标签、时间、项目路径等一起存入数据库。检索当你调用recall搜索时你的查询语句也会被转换成向量。数据库会计算查询向量与所有记忆向量的余弦相似度并返回相似度最高的几条记录。这意味着即使你用不同的词语描述同一个概念也能被找到。搜索“后端服务超时”可以找到你之前记录的“API网关设置了5秒超时但下游服务处理需要8秒”这条记忆。这才是真正意义上的“理解”和“联想”。2.3 混合检索与智能排序不只是向量搜索从 v2.1.0 开始AIVectorMemory 引入了混合检索机制不再是单一的向量搜索。它结合了两种方式向量语义搜索理解查询的意图找到语义相关的记忆。FTS5全文搜索针对中文等语言内置了结巴分词支持精确的关键词匹配。比如搜索“超时”能直接命中所有包含“超时”二字的记录。这两种搜索路径的结果会通过RRF算法进行融合排序。RRF 的基本思想是如果一个结果在两种检索方式下的排名都靠前那么它的最终排名应该更高。这避免了单一检索方式的偏差。更厉害的是它的复合评分机制。最终展示给用户的记忆不仅仅是按相似度排序而是综合了三个维度最终得分 语义相似度 × 0.5 时间新鲜度 × 0.3 访问频率 × 0.2相似度语义匹配的核心。新鲜度越近的记忆越可能相关。频率被频繁访问的记忆可能更重要。这种设计让最相关、最有用的记忆能优先呈现极大地提升了召回质量。3. 核心功能与工具详解AIVectorMemory 通过9个MCP工具与你的AI助手交互。理解每个工具的用途和参数是高效使用它的关键。3.1 记忆的增删改查remember,recall,forget这是最基础的三个工具构成了记忆系统的核心。remember- 存储记忆这是AI主动调用最多的工具之一。每当你们讨论出一个有价值的结论、踩到一个坑、或者你表达了一个明确的偏好AI都应该调用它来保存。{ content: 本项目使用Pydantic V2进行数据验证。在定义模型时应使用 field(alias...) 来处理API返回的蛇形命名字段而不是在模型内部做转换。, tags: [backend, python, pydantic, best-practice], scope: project }content:必填记忆内容支持Markdown格式。建议描述清晰、具体。tags:必填标签数组。好的标签体系是高效检索的基础。建议按技术栈、模块、类型如bugconfig等维度打标。scope: 可选默认为project。project记忆仅对当前项目可见user记忆是跨项目的适合保存你的个人开发习惯或通用知识。实操心得鼓励AI多记、细记。不要只记“这里有个bug”而要记“在/api/user.py的get_user函数中当用户ID不存在时会返回500错误应改为返回404并记录日志”。后者在后续排查时价值巨大。另外系统会自动对相似度高于0.95的记忆进行去重更新所以不用担心重复记录。recall- 回忆/搜索记忆当AI需要了解项目背景、寻找解决方案、或确认你的偏好时就会调用这个工具。{ query: 如何优化数据库查询性能, tags: [database, performance], scope: project, top_k: 5 }query: 搜索关键词。即使表述不同向量搜索也能找到相关记忆。tags: 标签过滤器。可以进一步缩小范围。scope: 指定搜索范围。top_k: 返回结果的数量。forget- 删除记忆用于清理过时或错误的记忆。可以单条删除也支持批量删除。{ memory_id: 550e8400-e29b-41d4-a716-446655440000 } // 或 { memory_ids: [id1, id2, id3] }3.2 会话状态管理status这个工具用于在AI对话的不同会话之间保持“工作状态”。想象一下你让AI修复一个bug它做到一半你关闭了聊天窗口。下次打开时AI通过status工具能立刻知道自己被“阻塞”在等待用户确认修复结果的环节从而无缝衔接。status工具的核心是一个状态对象AI可以读取和更新它。主要字段包括is_blocked: 布尔值表示会话是否被阻塞例如等待用户确认计划。block_reason: 阻塞的原因。current_task: 当前正在处理的任务ID或描述。next_step: 下一步计划做什么。progress: 一个数组记录已完成步骤。recent_changes: 最近做出的代码变更摘要。pending: 等待用户处理的事项列表。工作流示例AI分析完问题给出了修复方案。AI调用status({“is_blocked”: true, “block_reason”: “等待用户确认修复方案”})将自己阻塞。你回复“同意开始吧”。AI在新的会话开始时先调用status()不带参数读取状态发现被阻塞于是向你展示之前的方案并请求确认。你确认后AI调用status({“is_blocked”: false})清除阻塞并开始执行。这个机制确保了复杂任务可以跨会话进行避免了每次都要从头开始的尴尬。3.3 问题与任务追踪tracktask这是将AI真正融入开发工作流的关键。track用于跟踪Bug或问题task用于管理功能开发任务。track- 问题追踪模拟了一个简易的Issue系统包含创建、更新、归档、列表查看等操作。// 创建问题 { action: create, title: 用户注册API在并发请求下可能产生重复邮箱记录, content: 初步分析是数据库唯一约束检查与插入操作之间存在竞态条件。 } // 更新状态 { action: update, issue_id: 5, status: in_progress, content: 已添加数据库事务和SELECT ... FOR UPDATE锁来防止竞态。 } // 归档解决后 { action: archive, issue_id: 5 }AI可以在发现Bug时自动创建Issue在调查和修复过程中更新状态和内容解决后将其归档。所有记录都保存在数据库中可供后续查阅。task- 任务管理与track类似但更侧重于功能开发的任务分解。它通常与某个需求文档通过feature_id关联绑定支持创建子任务。// 批量创建任务例如根据PRD拆解 { action: batch_create, feature_id: user-auth-v2, tasks: [ {title: 设计JWT令牌刷新机制, status: pending}, {title: 实现刷新Token的API端点, status: pending, parent_id: null}, {title: 更新登录接口返回双Token, status: pending, parent_id: 2} ] }一个很酷的功能是当AI更新任务状态时比如标记为completed它可以自动去更新项目里tasks.md文件中的对应复选框实现状态同步。3.4 自动化与知识图谱auto_save,readme,graph这三个工具提供了更高级的自动化能力。auto_save- 自动保存偏好在每次对话结束时AI会自动调用此工具从对话历史中提取你表达的技术偏好例如“我更喜欢用async/await而不是回调”“这个项目的日志级别默认设为INFO”并将其作为scopeuser的记忆保存下来。这样你在不同项目中都会得到符合你偏好的代码建议。readme- README生成可以根据项目的工具定义和依赖自动生成或对比README文件的内容支持多语言。对于维护开源项目或多语言文档很有帮助。graph- 代码知识图谱 (v2.4.0新增)这是我认为最具前瞻性的功能。它允许AI或你通过Web面板构建和查询项目的代码知识图谱。节点可以是函数、类、模块、API接口、数据库表、配置文件等。边表示节点之间的关系如calls调用、imports导入、depends_on依赖等。你可以通过graph trace来追踪一个函数的上游调用链或下游影响范围在修改代码前评估影响面。例如修改一个工具函数前先追溯哪些API依赖它避免改出问题。4. 安装、配置与IDE集成实战4.1 安装与一键配置安装过程非常简单推荐使用pip。# 1. 安装包 pip install aivectormemory # 2. 进入你的项目目录 cd /path/to/your/project # 3. 运行安装命令最关键的一步 run installrun install这个命令是精髓。它会启动一个交互式向导检测IDE自动识别你当前项目目录下使用的AI IDE如Cursor、Claude Code等。生成配置在正确的位置例如Cursor是.cursor/mcp.json创建或更新MCP服务器配置。注入规则生成并放置对应的Steering规则文件告诉AI何时如何使用这些工具。配置钩子对于Kiro等支持钩子的IDE还会生成行为检查钩子。整个过程无需手动编辑任何JSON或Markdown文件真正的一键完成。注意事项macOS用户必看 如果你在安装时遇到externally-managed-environment错误通常是因为使用了系统自带的Python如macOS的python3。可以尝试pip install aivectormemory --break-system-packages更推荐的方法是使用Homebrew安装独立的Python环境brew install python /opt/homebrew/bin/python3 -m pip install aivectormemory如果遇到enable_load_extension错误说明你的Python编译时没有启用SQLite扩展加载也必须使用Homebrew Python。4.2 理解Steering规则教会AI如何思考安装完成后你会在项目里发现一个新的规则文件例如Cursor的.cursor/rules/aivectormemory.md。这个文件至关重要它定义了AI与记忆系统交互的“工作流”。规则的核心逻辑是一个状态机指导AI在每个对话环节该做什么。我们拆解一下自动生成规则的关键部分1. 新会话启动流程AI在开始与你对话前必须按顺序执行recall项目知识加载关于本项目的重要记忆标签为project-knowledge。recall用户偏好加载你的个人开发习惯标签为preference。status读取会话状态查看上次是否被阻塞以及进行到哪一步了。如果被阻塞先报告阻塞状态并等待如果没阻塞则进入正常处理流程。这保证了每次对话AI都“带着上下文”入场。2. 消息处理流程核心这是AI处理你每条消息的步骤A. 检查状态确认自己没有被阻塞。B. 判断消息类型是闲聊、代码修正、偏好表达还是报告问题C. 创建问题追踪如果是问题立即用track create记录下来。D. 调查结合recall搜索相关记忆、阅读代码定位根本原因。E. 提出计划并阻塞向你展示解决方案并调用status将自己设为阻塞状态等待你的确认。F. 执行修改在动手改代码前再次recall相关陷阱和最佳实践。G. 运行测试验证修改是否正确。H. 再次阻塞等待验证请你验证结果。I. 确认与归档你确认后AI归档问题 (track archive)并清除阻塞状态。这个流程强制AI进行“规划-确认-执行-验证”的闭环避免了AI盲目行动或遗漏步骤。3. 关键的阻塞规则规则明确要求AI在提出计划或等待用户验证时必须主动将自己设为阻塞状态 (is_blocked: true)。只有收到用户的明确确认后才能清除阻塞。AI绝不能自己解除阻塞。这是保证工作流不被中断的关键纪律。4.3 Web控制台与桌面应用除了通过IDE交互AIVectorMemory还提供了可视化的管理界面。Web控制台在项目目录下运行run web --port 9080然后在浏览器打开http://localhost:9080默认账号密码是admin/admin123首次登录后务必修改。在这里你可以浏览和搜索记忆支持语义搜索和标签过滤。管理项目和标签查看不同项目的记忆管理标签体系。查看会话状态与问题追踪直观了解AI当前的工作进度。可视化向量网络这是一个很酷的3D力导向图可以直观看到不同记忆之间的关联强度。桌面应用从v1.0.6版本开始提供了跨平台macOS/Windows/Linux的本地桌面客户端。功能和Web版基本一致但体验更接近原生应用支持深色/浅色主题切换。数据与Web版共享同一个数据库。桌面应用可以从项目的GitHub Releases页面下载安装包。5. 高级技巧与避坑指南5.1 如何设计有效的标签体系标签是除了向量之外最重要的检索维度。一个混乱的标签系统会让recall的效果大打折扣。我的建议是采用“多维分类法”技术栈维度python,javascript,react,postgresql,docker项目模块维度auth,api,frontend,database,config内容类型维度bug踩过的坑,decision技术决策,best-practice最佳实践,todo待办,reference参考资料紧急/重要程度critical,warning,info(可选)例如一条关于“用户登录接口限流配置”的记忆可以打上[“backend”, “api”, “auth”, “config”, “best-practice”]这些标签。这样无论是搜索“认证问题”、“API配置”还是“后端最佳实践”这条记忆都有机会被命中。5.2 与AI协作的最佳实践主动引导AI记录在讨论出重要结论后可以主动说“请把这一点记下来。” AI会调用remember。初期多引导AI会逐渐学会在何时该记录。善用scope参数将项目特有的配置、代码结构、业务逻辑用scope: “project”保存。将你个人的编码风格偏好、常用的工具链配置、通用的性能优化技巧用scope: “user”保存。这样它们会在所有项目中生效。利用status进行复杂任务管理当你要AI完成一个多步骤任务比如“重构这个模块”在它给出计划后你可以说“好的按这个计划执行每一步完成后告诉我。” AI会利用status来跟踪进度你可以在任何时间暂停或继续。定期通过Web控制台进行“记忆维护”可以查看哪些记忆很少被访问考虑是否归档或删除。也可以合并一些高度相似的记忆保持记忆库的清洁。5.3 常见问题与排查1. AI不调用记忆工具检查规则文件确认run install生成的Steering规则文件已正确放置在IDE的特定目录如Cursor的.cursor/rules/。检查MCP配置确认IDE的MCP配置文件中已正确指向aivectormemory服务器。可以尝试在项目根目录手动运行run命令看服务器是否能正常启动。重启IDE会话有时IDE需要重启或新建一个聊天会话才能加载新的MCP配置和规则。2. 向量搜索效果不理想记忆内容太短或太模糊确保remember的内容是具体、有信息量的句子或段落。“用FastAPI”是差记忆“本项目使用FastAPI并且统一使用Depends进行依赖注入全局异常处理器在app/middleware/exception.py中”是好记忆。首次运行下载慢嵌入模型首次运行需要下载约200MB文件。如果网络慢可以设置环境变量加速export HF_ENDPOINThttps://hf-mirror.com或者在MCP配置的env字段中添加。3. 桌面应用无法启动或连接失败确保Python包已安装桌面应用本质上是一个GUI外壳它需要调用本机安装的aivectormemoryPython包。请确认已通过pip install成功安装。检查端口冲突Web控制台默认使用9080端口确保该端口未被其他程序占用。查看日志在终端运行run web或桌面应用查看是否有具体的错误信息输出。4. 如何彻底卸载如果你需要移除AIVectorMemory不要只是删除Python包。使用以下命令进行干净卸载# 在项目目录下运行 run uninstall这个命令会移除该项目的所有IDE配置MCP、规则、钩子但会保留你的记忆数据库文件。如果你想完全删除数据需要手动删除~/.aivectormemory/目录。5.4 性能与数据安全完全本地这是最大的优点。所有数据包括记忆文本和向量都存储在你本地硬盘的SQLite文件中。没有数据上传到任何服务器。资源占用由于使用了量化后的ONNX模型内存占用比早期版本下降了50%以上。通常运行时内存占用在700MB-1GB左右对于开发机来说可以接受。数据备份你的记忆数据库文件位于~/.aivectormemory/memory.db。你可以定期备份这个文件。Web控制台的设置页面也提供了数据库备份和恢复功能。经过几个月的深度使用AIVectorMemory 已经从一个小工具变成了我开发流程中不可或缺的一环。它不仅仅是一个“记忆外挂”更是一个推动AI助手向“准初级工程师”角色演进的工作流框架。最大的改变是我不再需要反复向AI解释项目上下文对话变得高效而专注。当AI主动说“根据之前的记录这个API的限流规则是...”或者“我记得你更倾向于使用路径操作函数而不是路由器类”时那种顺畅感是传统的文档方式无法比拟的。