# memo Локальная библиотека заметок с семантическим поиском. **Markdown на диске — истина, `.db` рядом — пересобираемый кэш.** Агент (или человек) пишет и читает обычные `.md`-файлы своими штатными средствами: `memo` не требует ни специального API записи, ни изменения привычек. Он следит за файловой системой, держит рядом с каждой папкой-темой индекс (SQLite + sqlite-vec + FTS5) и отвечает на смысловые вопросы гибридным поиском (BM25 + вектор + RRF). ## Статус Проектирование завершено. Код не написан. | Документ | Что внутри | |---|---| | [`docs/SPEC.md`](docs/SPEC.md) | полная спека: модель данных, индекс, маршрутизация, watcher, интерфейс, приёмка | | [`TASK.md`](TASK.md) | ТЗ для исполнителя (opencode): стек, схема БД, контракты, чего не делать | | [`TESTING.md`](TESTING.md) | тест-план: 6 приёмочных проверок, команды, признаки провала | ## Идея - Коллекций (папок-тем) — сколько угодно; они не мешают друг другу. - Индекс каждой коллекции живёт в её `.memo/index.db` и **удаляется без потерь** — пересобирается. - Поиск — обычный read-only инструмент; записи в markdown он не делает никогда. - Только локально: эмбеддинг на CPU, сеть не нужна ни при индексации, ни при поиске. ## Состав (JVM-first, один Gradle-проект) ``` memo-cli # memo index|search|status — ручные проверки и приёмка без агента memo-core # чанкер по заголовкам, sqlite-схема, инкрементальная переиндексация, гибридный поиск memo-watch # демон: WatchService + debounce + реконсиляция по mtime memo-mcp # MCP-сервер (stdio): memo_search / memo_status / memo_reindex ``` `memo-core` не знает ни про watcher, ни про MCP — это драйверы поверх ядра. ## Зависимости (проверено 02.10.2026) | Что | Координата | Откуда | |---|---|---| | SQLite + sqlite-vec + FTS5 | `pw.binom.db:ksqlite:0.1.4` | Maven Central | | Текстовый эмбеддинг (SigLIP2 int8, 768 dims) | `pw.binom.ai.embeddingtext:api:5` + `:siglip:5` | `http://nexus.xx/repository/caffeine/` | Модель (в артефакты не входит, скачивается отдельно): ```bash mkdir -p models/siglip2 curl -fSL -o models/siglip2/text_model_int8.onnx http://static.binom.pw/models/siglip2/text_model_int8.onnx # 283M curl -fSL -o models/siglip2/tokenizer.model http://static.binom.pw/models/siglip2/tokenizer.model # 4.2M ``` ## Требования JDK 21. Индекс и поиск работают офлайн после скачивания модели. ## Лицензия Apache-2.0.