План лекции
Сначала мы разберем MemSearch как cross-platform semantic memory for AI coding agents. Затем рассмотрим его архитектурную идею: Markdown files являются source of truth, а Milvus работает как rebuildable shadow index.
После этого пройдем ключевые mechanics: capture from agent plugins, daily memory journals, live watcher, hashing, hybrid search, RRF reranking and 3-layer progressive retrieval. В конце обсудим advanced memory maintenance, skills from memory, self-host choices and сравним MemSearch с memU and EverOS.
Цель лекции
Понять MemSearch как open-source memory search engine для coding agents, который объединяет readable Markdown память, Milvus index, plugin capture and progressive recall.
Ожидаемый результат
После лекции читатель понимает:
- почему MemSearch использует Markdown как source of truth;
- зачем Milvus называется shadow index;
- как работает capture and recall cycle;
- что означает 3-layer progressive retrieval;
- как PROJECT.md, USER.md and skills form higher-level memory;
- где MemSearch подходит лучше wiki-style or profile-style memory tools.
Короткая карточка инструмента
| Поле | Значение |
|---|---|
| Repository | https://github.com/zilliztech/memsearch |
| Docs | https://zilliztech.github.io/memsearch |
| Stars snapshot | GitHub page показывает публичный проект; fork snapshot около 220 на 2026-08-08 |
| Primary language | Python |
| License | MIT |
| Category | Semantic memory for AI coding agents |
| Source of truth | Markdown files |
| Index | Milvus / Milvus Lite / Zilliz Cloud / self-hosted Milvus |
| Retrieval | Dense + BM25 + RRF, progressive search -> expand -> transcript |
MemSearch описывает себя как persistent, unified memory layer for AI agents backed by Markdown and Milvus. Он ориентирован прежде всего на coding agents: Claude Code, OpenClaw, OpenCode, Codex CLI and custom agents через CLI/Python API.
Главная идея: файлы главные, индекс вторичен
MemSearch разделяет source of truth and retrieval acceleration.
Markdown files = durable, human-editable memory
Milvus = derived, rebuildable search index
Это важное архитектурное решение. Если индекс считается primary memory, пользователь зависит от формата базы. Если Markdown считается primary memory, индекс можно пересобрать.
Термин shadow index здесь очень удачный. Milvus ускоряет поиск, но не владеет смыслом памяти.
Capture cycle
Для пользователей MemSearch обычно начинается с plugin. После каждого conversation turn plugin:
- получает last turn;
- суммаризирует важное;
- добавляет запись в daily Markdown file;
- ставит session anchor;
- запускает indexing.
Это превращает хаотичную историю чатов в дневник памяти.
Важно, что запись обычно summary-based. Это снижает noise, но создает риск потерять детали. Поэтому MemSearch добавляет progressive retrieval down to transcript.
Recall: 3-layer progressive retrieval
README описывает recall как 3-layer progressive search:
memsearch searchreturns ranked chunks.memsearch expandreturns full Markdown section.- parse transcript returns raw dialogue if needed.
Это очень правильный memory search pattern. Не нужно сразу тащить raw transcript. Большинство вопросов закрывается summary or expanded section. Но когда важны exact steps, можно вернуться к original session.
В терминах курса это баланс между token efficiency and fidelity.
Hybrid search
MemSearch использует dense vector search + BM25 sparse search + RRF reranking.
| Компонент | Что ловит |
|---|---|
| Dense vectors | Semantic similarity: похожие смыслы, разные слова. |
| BM25 | Exact terms: names, commands, file paths, error codes. |
| RRF | Combines rankings from several retrieval signals. |
Для coding memory hybrid search особенно важен. Вопрос "что мы решили по кешу?" может требовать semantic match. А вопрос "где была ошибка poetry.lock?" требует exact token match.
Только vector search часто плохо справляется с commands, identifiers and file paths. Только BM25 плохо справляется с paraphrases. Hybrid search снимает часть проблемы.
Live sync and hashing
MemSearch watcher отслеживает изменения Markdown files. Каждый chunk получает SHA-256 hash; unchanged chunks skip re-embedding.
Это практичная оптимизация:
- human edits can be indexed automatically;
- large memory files не переиндексируются целиком;
- embeddings cost снижается;
- index stays close to files;
- rebuild remains possible.
Для local memory tools такие детали решают удобство. Если после каждого edits нужно руками запускать full rebuild, память быстро перестает использоваться.
Agent plugins
MemSearch имеет plugins for Claude Code, Codex CLI, OpenClaw and OpenCode. Все plugins share same backend, so memory can flow across agents.
Это решает боль power users: разные agents знают разные части истории. MemSearch пытается сделать one project memory that every coding agent can search.
Такой pattern близок к memU, но MemSearch сильнее акцентирует retrieval engine and indexing.
PROJECT.md and USER.md maintenance
MemSearch может поддерживать higher-level notes:
PROJECT.md- durable project state: active threads, decisions, risks, next steps;USER.md- reusable preferences, working style, recurring goals.
Эти notes обновляются background tasks and disabled by default. Это правильная позиция: semantic consolidation полезна, но она должна быть opt-in.
Daily journals дают episodic memory. PROJECT.md and USER.md дают semantic memory. Skills from memory дают procedural memory.
daily .md journals -> episodic memory
PROJECT.md / USER.md -> semantic memory
skills -> procedural memory
Skills from Memory
MemSearch поддерживает distillation recurring workflows into reusable, installable skills. Кандидаты живут в .memsearch/skill-candidates/, git-tracked, diffable and inert until user installs them.
Это сильный safety pattern:
- agent can suggest a skill;
- user reviews candidate;
- skill is not active until installed;
- diff can be inspected;
- installed skill becomes real command/workflow.
В отличие от invisible auto-learning, здесь procedural memory проходит через explicit adoption.
Storage choices
MemSearch поддерживает несколько вариантов Milvus backend:
| Backend | Когда использовать |
|---|---|
| Milvus Lite | Local single-file quick start. |
| Zilliz Cloud | Managed vector storage. |
| Self-hosted Milvus | Multi-user/team or advanced deployment. |
Embedding default по README - ONNX bge-m3 locally on CPU, with model download on first launch. Также можно выбрать OpenAI, Ollama and other providers.
Это дает flexibility, но добавляет setup decisions:
- local speed vs cloud availability;
- embedding quality vs privacy;
- storage ownership vs maintenance;
- single-user vs team usage.
Python API для custom agents
Помимо plugins, MemSearch можно использовать как library:
mem = MemSearch(paths=["./memory"])
await mem.index()
results = await mem.search("Redis config", top_k=3)
Этот API полезен, если вы строите custom agent and хотите:
- хранить memory as Markdown;
- индексировать локальные notes;
- использовать Milvus-compatible backend;
- делать scoped search by path prefix;
- добавлять recall before LLM call.
В отличие от full memory platforms, MemSearch не навязывает complex user/profile model. Он дает search engine around memory files.
Типы памяти из курса
| Тип памяти | Как MemSearch его закрывает |
|---|---|
| Episodic memory | Daily journals and session anchors. |
| Semantic memory | PROJECT.md and USER.md maintenance. |
| Procedural memory | Skills from Memory. |
| Shared memory | One backend across multiple agents. |
| World memory / RAG | Markdown folders can become searchable knowledge base. |
| Reflection memory | Background maintenance and skill distillation. |
MemSearch интересен именно как layered memory: сначала raw-ish journals, затем consolidated notes, затем skills.
Мини-кейс: debugging thread
Пользователь неделю назад решал проблему с Redis TTL. Сегодня похожий bug вернулся.
Без памяти агент спросит details again. С MemSearch:
- User asks: "что мы решили по Redis TTL?"
- L1 search finds journal summary.
- L2 expand returns full decision section.
- If needed, L3 transcript recovers exact command or config.
- Agent answers with context and source.
Это хороший example of progressive recall: cheap summary first, exact evidence later.
Мини-кейс: architecture decision recovery
В проекте выбрали one migration path over another. Через месяц команда спрашивает "почему мы не взяли вариант B?"
MemSearch can retrieve:
- decision summary in daily journal;
- related PROJECT.md state;
- expanded section with tradeoffs;
- raw transcript if rationale was detailed.
Для engineering work this is gold. Agent memory becomes project archaeology.
Сравнение с memU
| Критерий | memU | MemSearch |
|---|---|---|
| Главный фокус | Shared LLM wiki and skill extraction | Semantic search over Markdown memory |
| Retrieval | Relevant skills/memory before answer | Progressive search -> expand -> transcript |
| Index | Local/cloud backends depending setup | Milvus shadow index |
| Procedural memory | Core emphasis through skills | Skills from Memory as third layer |
| Daily journals | Less central | Central capture artifact |
| Best for | Reusable workflows across agents | Finding past decisions, sessions, exact context |
memU учит agents "как действовать". MemSearch помогает agents "что мы уже обсуждали and where is the evidence".
Сравнение с EverOS
EverOS and MemSearch both value Markdown as source of truth. Difference:
- EverOS is broader local memory runtime with user/agent tracks and wiki;
- MemSearch is focused retrieval and plugin capture around coding-agent memory;
- EverOS uses SQLite + LanceDB stack;
- MemSearch uses Milvus as vector shadow index and emphasizes hybrid search.
Если вам нужен memory OS, EverOS шире. Если нужен практичный search layer for coding conversations, MemSearch проще и прямее.
Риски и ограничения
Первый риск - summary loss. Capture summarization может потерять детали; progressive transcript fallback mitigates but only if raw transcripts remain available.
Второй риск - model download and local resources. ONNX bge-m3 download is convenient but nontrivial in restricted environments.
Третий риск - Markdown noise. Daily files can grow into clutter if summaries are low quality.
Четвертый риск - cross-agent scope. Shared backend is useful, but not all conversations should be globally searchable.
Пятый риск - Milvus operational complexity. Milvus Lite is simple, but team-scale Milvus requires real database operations.
Как тестировать MemSearch
| Тест | Что проверяет |
|---|---|
| Capture | Plugin writes daily Markdown after conversation. |
| Index sync | New memory appears in Milvus search. |
| Exact term search | BM25 finds commands, paths, identifiers. |
| Semantic search | Dense retrieval finds paraphrases. |
| Progressive expand | Chunk expands to full Markdown section. |
| Transcript fallback | Raw dialogue can be recovered when needed. |
| File edit sync | Manual Markdown edits re-index correctly. |
| Skill candidate flow | Candidate is inert until installed. |
| Backend switch | Milvus Lite -> cloud/self-host works without data loss. |
Особенно важно тестировать exact technical queries. Coding memory часто ломается не на смыслах, а на identifiers.
Практический rollout
Начните с одного agent plugin and local Milvus Lite. Дайте системе накопить несколько daily journal files. Затем проверьте retrieval on real questions:
- "что мы решили по deploy?";
- "какую команду запускали для проверки?";
- "какой файл меняли при фиксе меню?";
- "почему выбрали этот подход?"
После этого включайте PROJECT.md maintenance. Skills from memory подключайте только после review процесса, потому что installed skill directly changes agent behavior.
Антипаттерны
Первый антипаттерн - полагаться только на summary and удалять raw transcripts too early.
Второй антипаттерн - считать Milvus source of truth. Source of truth should remain Markdown.
Третий антипаттерн - включать automatic skill distillation without review.
Четвертый антипаттерн - складывать personal and work memories in one project directory.
Чек-лист выбора MemSearch
MemSearch стоит рассмотреть, если:
- вы используете several coding agents;
- нужно искать по прошлым sessions;
- важны exact commands, file paths and decisions;
- вы хотите Markdown-readable memory;
- нужен hybrid search and progressive retrieval;
- procedural skills полезны, но должны быть reviewable;
- Milvus/Zilliz stack acceptable.
Если нужен social peer modeling, выбирайте Honcho. Если нужен compact personal profile API, Supermemory/Mem0. Если нужен broad local memory runtime, EverOS.
Источники
- GitHub repository: https://github.com/zilliztech/memsearch
- README: https://github.com/zilliztech/memsearch/blob/main/README.md
- Documentation: https://zilliztech.github.io/memsearch
- Skills from Memory guide: https://zilliztech.github.io/memsearch
- Milvus project: https://milvus.io
Краткое резюме
MemSearch показывает практичный retrieval-first подход к памяти coding agents. Он хранит memory in Markdown, индексирует ее в Milvus, использует hybrid search and progressive retrieval, а затем добавляет semantic consolidation and procedural skills.
Главный урок: хорошая agent memory должна уметь двигаться от дешевого summary к исходному transcript only when needed. Это сохраняет token budget and keeps factual fidelity.
Вопросы для самопроверки
- Почему Milvus в MemSearch называется shadow index?
- Что дает 3-layer progressive retrieval?
- Почему hybrid search важен именно для coding memory?
- Чем daily journals отличаются от PROJECT.md and USER.md?
- Почему skill candidates должны быть inert until install?
- Какие риски есть у summary-based capture?
- Когда MemSearch лучше memU?
- Как проверить, что Markdown remains source of truth?
Что дальше
В следующей лекции мы разберем Agentic Context Engine - инструмент из класса context engineering, где память рассматривается как управляемый context layer around agent workflows.