model: команда memo model и автоскачивание модели (докачка, сверка размера, отключатель); manual: раздел про модель

This commit is contained in:
2026-10-02 04:53:04 +03:00
parent 69a0ebe0fa
commit 607137fdf7
5 changed files with 314 additions and 24 deletions
+51 -12
View File
@@ -68,21 +68,54 @@
```bash
cd /root/WORK/memo
# 1. Собрать всё
./gradlew installDist
# 2. Скачать модель (в артефакты не входит, 287 МБ, один раз)
mkdir -p models/siglip2
curl -fSL -o models/siglip2/text_model_int8.onnx http://static.binom.pw/models/siglip2/text_model_int8.onnx
curl -fSL -o models/siglip2/tokenizer.model http://static.binom.pw/models/siglip2/tokenizer.model
# 3. Сказать, где модель (добавьте в ~/.bashrc, чтобы не повторять)
export MEMO_MODEL_DIR=/root/WORK/memo/models/siglip2
```
Без переменной `MEMO_MODEL_DIR` программы ищут модель в `/root/WORK/memo/models/siglip2` —
если у вас этот путь, шаг 3 можно пропустить.
**Больше ничего делать не надо.** Модель (287 МБ) скачается сама при первом использовании —
при первом `index`, `search` или `status`. Выглядит это так:
```
модель не найдена в /root/WORK/memo/models/siglip2, скачиваю с http://static.binom.pw/models/siglip2 (≈287 МБ, один раз)
скачиваю text_model_int8.onnx: 45% (128 МБ / 283 МБ)
скачано text_model_int8.onnx: 283 МБ
скачано tokenizer.model: 4 МБ
```
Качается один раз: если файлы на месте, в сеть никто не ходит — поиск и индексация работают офлайн.
### Скачать заранее (необязательно)
Если хотите подготовить модель до первого запуска:
```bash
CLI=/root/WORK/memo/memo-cli/build/install/memo/bin/memo
$CLI model
#> скачано: text_model_int8.onnx, tokenizer.model (287679278 байт)
$CLI model # повторный запуск: ничего не качает
#> модель уже на месте в /root/WORK/memo/models/siglip2: text_model_int8.onnx, tokenizer.model
$CLI model --force # перекачать принудительно
$CLI model --dir /другой/путь
```
Скачивание можно прервать и продолжить: файл пишется как `<имя>.part`, а при следующем запуске
закачка **дописывается с места обрыва** (сервер поддерживает докачку). Целевой файл появляется
только после того, как размер сошёлся, — «битого, но выглядящего рабочим» файла не будет.
### Где живёт модель и как это менять
По умолчанию — `/root/WORK/memo/models/siglip2`. Одна копия на все три программы, поэтому
в дистрибутивы она не кладётся (иначе было бы 287 МБ × 3).
| Переменная | Смысл |
|---|---|
| `MEMO_MODEL_DIR` | где лежит модель (иначе `/root/WORK/memo/models/siglip2`) |
| `MEMO_MODEL_AUTO_DOWNLOAD=0` | запретить автоматическое скачивание. Тогда при отсутствии модели будет ошибка `модель не найдена в <путь>; запустите: memo model` |
```bash
export MEMO_MODEL_DIR=/root/WORK/memo/models/siglip2 # добавьте в ~/.bashrc, чтобы не повторять
```
После сборки появятся три программы:
@@ -124,6 +157,7 @@ $CLI search ~/notes/infra "где публикуются релизы"
```bash
$CLI index <путь> # проиндексировать (повторный прогон — быстрый)
$CLI model # скачать модель (обычно не нужно — сама скачается)
$CLI search <путь> "<вопрос>" # искать: и смысл, и точные слова
$CLI search <путь> "<вопрос>" --k 5 # вернуть 5 результатов (по умолчанию 8)
$CLI search <путь> "<вопрос>" --json # машинный вывод (для скриптов и агента)
@@ -307,6 +341,11 @@ $CLI index ~/notes
MCP-серверы читаются при старте Hermes: начните новую сессию. Проверьте, что путь к `memo-mcp`
в конфиге верный и файл исполняемый.
**Агент долго не отвечает на первый запрос.**
Скорее всего, скачивается модель (287 МБ) — в stderr `memo-mcp` идёт строка
`модель не найдена ..., скачиваю ...`. Это разовое: скачайте заранее командой `$CLI model`
или подложите файлы в `MEMO_MODEL_DIR`.
**Где посмотреть, что вообще происходит.**
```bash
$CLI status ~/notes # по каждой коллекции: файлов, чанков, когда индексировали