1. 先想清楚「本地 AI 记忆」到底要解决谁的什么问题
「本地 AI 记忆」这个词最近被聊得很多,但真正动手做的人会发现,它压根不是一个功能,而是一整套围绕数据主权、上下文连续性、跨工具复用的系统工程。我见过太多团队一上来就冲着「做个记忆层」去,结果三个月后做出来一个四不像的向量数据库封装,既不像产品也不像中间件。所以如果你正在找技术合伙人一起做这件事,第一件要做的不是写代码,而是把问题定义清楚。
1.1 本地优先和云端记忆的本质分歧
云端记忆方案的逻辑很简单:所有对话、文档、偏好都传到服务端,服务端做 embedding、做检索、做摘要,客户端只负责展示。这条路 OpenAI、Anthropic 都在走,工程上成熟,但代价是用户的所有思考痕迹都在别人服务器上。而本地 AI 记忆的核心主张是:原始数据不出本机,索引和检索也在本机完成,只有必要的推理请求才走外部模型。
这个分歧直接决定了技术栈。云端方案可以随便用 Postgres + pgvector + 一堆托管服务,本地方案就必须考虑单机资源占用、模型体积、冷启动速度、跨平台打包。我实测过在一台 16GB 内存的 MacBook Air 上跑本地 embedding 模型加向量索引,如果选型不当,光是常驻内存就能吃掉 4GB,用户开个浏览器就卡了。所以技术合伙人的第一个硬门槛,是对资源约束有真实的体感,而不是只会调 API。
1.2 目标用户不是「所有人」,而是三类具体的人
我建议你把目标用户收窄到这三类,每一类的需求差异很大:
- 重度 AI 工具用户:每天在多个 AI 客户端之间切换,希望自己的偏好、项目背景、常用术语能跨工具同步。这类人最在意的是协议兼容性,也就是最近很火的 MCP 这类标准化接口。
- 隐私敏感的知识工作者:律师、医生、研究员、独立开发者。他们不是不用 AI,而是不能把原始材料传出去。这类人愿意为本地方案付费,但要求可审计、可离线、可导出。
- 多项目并行的创作者:同时推进好几个项目,每个项目有独立的上下文、术语表、参考资料。他们需要的是项目级的记忆隔离,而不是一个全局大杂烩。
把这三类人混在一起做,产品必然失焦。我见过一个团队试图用一套记忆系统同时服务个人用户和企业团队,结果个人嫌重、企业嫌浅,两边都不买账。
1.3 「记忆」这个词被滥用了,得拆成四层
很多人说「AI 记忆」,其实说的是四件不同的事,混在一起讨论必然吵架:
| 层级 | 具体内容 | 技术手段 | 更新频率 |
|---|---|---|---|
| 会话记忆 | 当前对话的上下文 | 上下文窗口管理 | 秒级 |
| 偏好记忆 | 用户的语言风格、格式习惯 | 结构化配置 + 少量样本 | 天级 |
| 知识记忆 | 项目文档、参考资料、历史结论 | 向量索引 + 关键词索引 | 周级 |
| 关系记忆 | 人物、项目、概念之间的关联 | 知识图谱 | 月级 |
技术合伙人如果分不清这四层,就会陷入「用向量数据库解决一切」的陷阱。实际上偏好记忆用结构化存储就够了,硬上向量检索反而慢且不准。我在实际项目里的做法是:会话记忆交给模型上下文,偏好记忆用 YAML 配置,知识记忆才上向量库,关系记忆按需建图。分层之后,每一层的技术选型都清晰了。
2. 技术合伙人的能力画像:别只看会不会写代码
找技术合伙人这件事,最怕的就是「找个会写代码的朋友」。本地 AI 记忆这个方向,对技术合伙人的要求比一般 SaaS 项目更特殊,因为它同时踩在系统编程、AI 工程、桌面应用三个领域的交叉点上。
2.1 必须有的三项硬能力
第一项是本地运行时的手感。这不是会写 Python 就行,而是要理解进程模型、内存管理、文件锁、跨平台路径差异。比如你要做一个常驻后台的记忆索引服务,在 macOS 上要考虑 App Nap 会不会把它挂起,在 Windows 上要考虑服务权限,在 Linux 上要考虑 systemd 集成。这些细节没有踩过坑的人根本想不到。
第二项是检索系统的实战经验。向量检索听起来简单,但真正做好需要理解:chunk 策略怎么定、embedding 模型怎么选、混合检索怎么加权、重排序什么时候上。我见过太多项目直接用固定 512 token 切块,结果把代码块和表格切得稀碎,检索出来的东西根本没法用。这块的经验只能靠实际调优积累。
第三项是协议和接口的设计能力。本地 AI 记忆如果要跨工具复用,就必须有一套稳定的接口。最近 MCP 这类协议火起来,本质就是大家在找一个标准化的方式让 AI 工具访问外部能力。你的技术合伙人需要能判断:哪些能力应该暴露成标准协议,哪些应该做成 SDK,哪些干脆做成 CLI。这个判断力比写代码本身更重要。
2.2 加分项:做过桌面端或本地优先产品
如果候选人做过 Obsidian 插件、本地笔记软件、桌面端开发工具,那基本可以放心。这类产品的共同点是:用户数据在本地、需要处理文件系统、要兼顾性能和体验。做过这类产品的人,对本地 AI 记忆的很多约束是天然理解的。
反过来,如果候选人一直在做纯云端微服务,简历上全是 K8s、服务网格、分布式事务,那要谨慎。不是能力不行,而是思维惯性会让他倾向于「先起个服务」,而本地优先产品的第一原则恰恰是能不起服务就不起服务。
2.3 股权和分工:先把丑话说在前面
技术合伙人的股权安排,我建议遵循几个原则:
- 全职才给实股,兼职一律用项目制付费或期权,别一上来就给 20% 股权。
- 明确退出机制,比如约定服务满多久股权才逐步兑现,中途退出怎么回购。
- 技术决策权要写清楚,哪些事技术合伙人可以拍板,哪些必须双方同意。本地 AI 记忆涉及大量技术取舍,如果每个决定都要开会,进度会被拖死。
我见过最惨的案例是两个创始人一个懂技术一个懂市场,股权五五开,结果技术路线分歧时谁也说服不了谁,项目直接停摆。所以决策机制比股权比例更重要。
3. 从零到一的技术路线:先跑通最小闭环再谈架构
很多团队死在「架构设计阶段」,画了一堆图,写了厚厚一份技术方案,结果三个月没跑通一个能用的 demo。本地 AI 记忆这个方向,我的建议是两周内必须有一个能用的最小闭环,哪怕很粗糙。
3.1 最小闭环长什么样
最小闭环只需要三件事:
- 一个本地目录,存放用户的原始资料(Markdown、PDF、代码文件都行)。
- 一个索引进程,把这些资料切块、embedding、存进本地向量库。
- 一个查询接口,输入问题,返回相关片段,拼进 prompt 发给模型。
就这三件事,不要加用户系统、不要加云同步、不要加多端。我实测下来,一个熟练的开发者用 Python + sentence-transformers + sqlite-vec,两天就能跑通。跑通之后再谈优化,比空想架构强一百倍。
3.2 技术选型的关键取舍
选型这块我踩过不少坑,直接给结论:
| 组件 | 推荐方案 | 备选 | 不推荐 | 理由 |
|---|---|---|---|---|
| 向量库 | sqlite-vec | LanceDB、Chroma | 独立部署的 Milvus | 本地场景要的是零运维,嵌入式最合适 |
| Embedding | bge-small-zh / nomic-embed | bge-m3 | OpenAI embedding | 本地优先,中文场景 bge 系列实测更稳 |
| 切块 | 语义切块 + 代码感知 | 固定长度 | 纯固定长度 | 代码和表格必须特殊处理 |
| 接口 | MCP + 本地 HTTP | 纯 SDK | 只做 GUI | 跨工具复用必须走标准协议 |
| 存储 | SQLite + 文件系统 | DuckDB | 纯内存 | 要能持久化、能备份、能迁移 |
这里重点说 embedding 模型的选择。很多人一上来就想用最大的模型,觉得效果一定好。但本地场景下,模型体积直接决定冷启动时间和内存占用。bge-small-zh 只有 100MB 左右,在 M 系列芯片上单条推理 10ms 以内,效果对中文知识检索完全够用。除非你的用户全是英文技术文档,否则没必要上大模型。
3.3 索引管线的设计细节
索引管线是本地 AI 记忆的核心,设计不好后面全是坑。我的经验是分成四个阶段:
采集阶段要处理各种格式。Markdown 直接读,PDF 用 pymupdf 提取,代码文件按语言解析。这里的关键是保留元数据:文件路径、修改时间、所属项目。后面检索时这些元数据能大幅提升准确率。
切块阶段是最容易出问题的地方。固定长度切块会把一个完整的函数切成两半,检索出来根本没法用。我的做法是:代码文件按 AST 切,Markdown 按标题层级切,PDF 按段落切。切完之后每个块加上前后各 100 字的上下文,保证语义完整。
向量化阶段要注意批处理和缓存。同一个文件没改过就不要重复 embedding,用文件哈希做缓存键。我见过一个项目每次启动都全量重建索引,用户等五分钟才能用,体验极差。
存储阶段要设计好 schema。除了向量本身,还要存原文、元数据、块之间的关系。sqlite-vec 的好处是可以和普通 SQLite 表 join,检索时能同时做向量相似度和元数据过滤。
4. 跨工具复用:MCP 这类协议到底解决了什么
最近 MCP 相关的话题特别热,从 IDE 到设计工具到逆向工具都在接入。很多人问本地 AI 记忆和 MCP 是什么关系,我的理解是:MCP 是让 AI 工具访问外部能力的标准协议,而本地 AI 记忆是其中一类能力。
4.1 为什么必须走标准协议
如果你的记忆系统只支持自己的客户端,那用户就得把所有工作都搬到你的客户端里,这几乎不可能。用户已经在用各种工具:写代码用 IDE,画图用设计工具,查资料用浏览器。记忆系统要做的不是替代这些工具,而是在这些工具之间做粘合。
MCP 的价值就在这里。它定义了一套标准的资源、工具、提示模板的暴露方式,任何支持 MCP 的客户端都能访问你的记忆系统。你不需要为每个工具写适配,只需要实现一次 MCP server。
4.2 实现 MCP server 的实操要点
我实际做过 MCP server 的接入,几个关键点:
- 资源(Resource)适合暴露只读数据,比如「当前项目的术语表」「最近修改的文档」。客户端可以主动拉取。
- 工具(Tool)适合暴露需要参数的操作,比如「搜索记忆」「写入记忆」。客户端按需调用。
- 提示模板(Prompt)适合暴露常用工作流,比如「基于项目上下文回答问题」。
实现上,MCP server 本质是一个标准输入输出或 HTTP 服务,处理 JSON-RPC 消息。我用 Python 的 mcp 库做过一个原型,核心代码不到 200 行就能跑通搜索和写入两个工具。难点不在协议本身,而在权限控制和性能:用户可能同时开五个客户端,每个都在查记忆,你的索引服务要能扛住并发。
4.3 不接 MCP 的替代方案
MCP 不是唯一选择。如果你的目标用户主要用某一类工具,也可以做针对性集成:
- IDE 插件:直接做成 VS Code / JetBrains 插件,体验最顺滑。
- 本地 HTTP API:暴露 REST 接口,任何工具都能调,灵活但需要用户自己配置。
- CLI 工具:适合脚本化和自动化场景,开发者接受度高。
我的建议是先做 CLI + 本地 HTTP,再补 MCP。CLI 最快能验证核心逻辑,HTTP 让其他工具能接入,MCP 是锦上添花。别一上来就死磕 MCP,协议还在演进,过早绑定有风险。
5. 那些没人告诉你但一定会踩的坑
这部分是我最想分享的,因为都是真金白银换来的教训。
5.1 索引重建的性能陷阱
用户第一次使用时,你的系统要索引他所有的历史资料。如果用户有几万个文件,全量索引可能要跑几个小时。这时候如果 UI 卡死或者没有进度反馈,用户直接卸载。
我的做法是:索引过程完全异步,UI 只显示进度,用户可以边用边索引。已经索引好的部分立即可检索,未索引的部分后台慢慢处理。另外要支持增量索引,文件没改就不重新处理。
5.2 中文分词的隐藏问题
做中文检索时,很多人直接用英文的 tokenizer,结果中文被切成单字,检索效果惨不忍睹。必须用中文分词,或者用支持中文的 embedding 模型。我用 bge 系列时发现,它对中文的语义理解明显好于多语言通用模型,检索准确率能差 20% 以上。
5.3 内存泄漏的排查
本地常驻服务最容易出的问题就是内存泄漏。索引进程跑几天,内存从 200MB 涨到 2GB,用户电脑直接卡死。排查这类问题要用工具:Python 用 tracemalloc,Node 用 heap snapshot。我遇到过一次是 embedding 模型的缓存没清理,每次查询都往缓存里塞东西,改成 LRU 之后问题解决。
5.4 用户对「记忆」的预期管理
这是产品层面的坑。用户以为「记忆」就是 AI 什么都记得,实际上你的系统只能记住你索引过的内容。如果用户问了一个你没索引的问题,AI 答不上来,用户会觉得「这记忆系统没用」。
解决办法是明确告诉用户记忆的边界:哪些内容被记住了,哪些没有。可以在 UI 上显示「本次回答参考了以下 3 个片段」,让用户知道记忆是怎么工作的。透明度上去了,预期就合理了。
6. 找合伙人之前,你自己得先想明白的几件事
最后说点实在的。找技术合伙人不是找救世主,你自己如果对技术一无所知,合作很难长久。
6.1 你得能判断技术方案的好坏
不需要你会写代码,但你要能听懂技术合伙人在说什么,能判断他的方案是不是在忽悠你。比如他说「我们用向量数据库做记忆」,你要能追问:「切块策略是什么?embedding 模型选哪个?检索怎么评估效果?」这些问题答不上来,说明他也没想清楚。
6.2 你得能定义清楚产品边界
技术合伙人最怕的是需求天天变。今天要做本地记忆,明天要做云同步,后天要做企业版。你得先把 MVP 的边界定死:只做本地、只做单机、只做检索、不做生成。边界清晰了,技术才能聚焦。
6.3 你得准备好至少半年的投入
本地 AI 记忆不是一个能快速变现的方向。用户教育成本高,付费意愿需要培养。如果你指望三个月回本,那趁早别做。我见过太多项目死在「技术做出来了但没人用」,问题不在技术,在于创始人对市场节奏的误判。
找技术合伙人,本质是找一个能和你一起熬过这段长跑的人。技术能力是基础,但对这件事的认同感和长期投入的意愿才是关键。我建议在正式合作前,先一起做一个小项目,比如两周内跑通一个最小闭环,看看彼此的节奏和沟通方式合不合。这比任何背景调查都管用。