MemSearch 记忆层
为编码代理提供可跨平台检索的持久语义记忆。
这个 Agent 能做什么,适合哪些场景?
MemSearch 是面向 AI 编码代理的持久化语义记忆层,支持 Claude Code、Codex CLI、OpenClaw 和 OpenCode 插件,并提供 CLI 与 Python API。它把对话摘要和其他记忆保存为可编辑、可版本控制的 Markdown 文件,再用 Milvus 建立可重建的影子索引。检索采用向量、BM25 稀疏检索和 RRF 重排序,并支持从命中块扩展到完整 Markdown 段落或原始会话记录。默认可使用本地单文件 Milvus Lite;也可配置 Zilliz Cloud 或自托管 Milvus。它适合希望在多个编码代理或自建应用之间保留项目上下文的团队,但需要接受本地文件存储、索引维护和嵌入模型的运行成本。
插件在会话结束后捕获对话轮次并生成摘要,追加到 .memsearch/memory/ 下按日期保存的 Markdown 文件;Claude Code 示例还会写入 <!-- session:UUID --> 锚点。memsearch index 对 Markdown 重新分块,使用 SHA-256 跳过未变化内容,为新内容生成嵌入并写入 Milvus。memsearch search 执行 BM25 与稠密向量混合检索,再以 RRF 重排序;memsearch expand <chunk_hash> 返回命中块附近的完整段落。需要更深上下文时,文档所示的第三层可通过 parse-transcript <session.jsonl> 读取原始对话;开发者也可用 MemSearch(paths=[...])、await mem.index() 和 await mem.search() 嵌入自己的 Python 代理。
- 使用 Claude Code 与 Codex CLI 的开发者,希望在切换工具后继续检索此前关于 Redis、部署或架构决策的讨论。
- 维护长期代码库的工程师,需要在修改模块前找回某个功能、配置或迁移方案的历史取舍。
- 构建 Python 自定义代理的开发者,需要通过 `MemSearch` 为 Markdown 知识库加入索引和语义检索。
- 使用本地 Markdown 工作日志的个人或团队,希望文件仍可人工编辑、提交版本库,并让索引随改动更新。
- 需要用 Zilliz Cloud 或自托管 Milvus 为多用户环境配置专用后端的团队。
这个 Agent 有哪些优点和局限?
- Markdown 是事实来源,内容可人工编辑和版本控制;Milvus 索引可重建。
- 同一后端覆盖 Claude Code、Codex CLI、OpenClaw 和 OpenCode,并且提供 CLI 与 Python `MemSearch` API。
- 混合 BM25、稠密向量与 RRF 重排序,且支持 search → expand → transcript 的渐进式召回。
- SHA-256 内容哈希和文件监控可避免对未变更内容重复嵌入,并自动同步改动。
- 默认 ONNX bge-m3 首次使用需通过网络下载约 558 MB 模型。
- 默认 Milvus Lite 是单文件模式;多用户或团队专用实例需要配置 Zilliz Cloud 或 Docker 自托管 Milvus。
- 自动捕获依赖各平台插件及其 hooks;Codex CLI 文档要求以 `codex --yolo` 启动以允许 ONNX 模型网络访问。
- 高级 `PROJECT.md`、`USER.md` 维护和从记忆生成技能默认关闭,启用后还涉及模型、提供商和执行间隔配置。
如何安装或部署这个 Agent?
运行环境要求 Python >=3.10。作为 CLI 安装并使用默认本地 ONNX 嵌入:uv tool install "memsearch[onnx]"
然后执行:memsearch config initmemsearch index ./memory/
默认嵌入为本地 CPU 上运行的 ONNX bge-m3,首次启动会从 HuggingFace Hub 下载约 558 MB 模型,不需要 API 密钥。若改用 OpenAI 嵌入,执行 memsearch config set embedding.provider openai,并提供 OPENAI_API_KEY。Codex CLI 插件可按文档执行:git clone --depth 1 https://github.com/zilliztech/memsearch.gitbash memsearch/plugins/codex/scripts/install.shcodex --yolo
如何使用这个 Agent?
先把待检索 Markdown 放入目录并运行 memsearch index ./memory/。使用 memsearch search "Redis caching" 查询,或使用 memsearch search "auth flow" --top-k 10 --json-output 获取可供脚本处理的结果;对命中项运行 memsearch expand <chunk_hash> 查看完整段落。需要持续同步时运行 memsearch watch ./memory/。在 Python 中可创建 mem = MemSearch(paths=["./memory"]),调用 await mem.index(),再调用 await mem.search("Redis config", top_k=3)。安装 Codex CLI 插件后,可用 $memory-recall what did we discuss about deployment? 召回记忆。
这个 Agent 与同类方案有什么区别?
存储设计上,MemSearch 将 Markdown 作为可编辑的事实来源,将 Milvus 定位为可重建的影子索引;这不同于只把记忆保存在向量数据库中的方案。嵌入可选本地 ONNX、OpenAI、Ollama 等提供商,Milvus 后端可在 Milvus Lite、Zilliz Cloud 与自托管 Milvus 之间切换。