Files
memo/README.md
T

61 lines
3.4 KiB
Markdown

# 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.