memo: спека, ТЗ, тест-план, MCP-зонд, gradle wrapper
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user