# Octobrain 0.7.0: память вашего ИИ теперь спит, забывает и фокусируется

> Octobrain 0.7.0 делает память самоподдерживающейся: автономная sleep consolidation сворачивает похожие воспоминания в чистые инсайты, half-life decay даёт неиспользуемым угасать, а goal-anchored consolidation схлопывает разрозненные заметки вокруг того, что вы на самом деле пытались сделать. Плюс HyDE recall включён по умолчанию (+10–30% на размытых запросах) и более компактная MCP-поверхность из 5 инструментов. Что изменилось и как обновиться.

# Octobrain 0.7.0: память вашего ИИ теперь спит, забывает и фокусируется

Память, которая только растёт, — это не память. Это ящик с хламом.

Каждый инструмент памяти ИИ до сих пор был аддитивным: храни, храни, храни. Куча растёт, поиск шумит всё сильнее, а то, что вам реально нужно, погребено под пятью почти одинаковыми заметками, которые вы написали об этом в прошлый вторник. Больше воспоминаний перестаёт означать лучший recall.

Мозг устроен иначе. Он консолидирует, пока вы спите. Он даёт неиспользуемому угасать. Он организуется вокруг того, что вы пытались сделать, а не вокруг порядка событий. Этот отсев — не баг человеческой памяти, а ровно та причина, по которой recall остаётся острым.

[0.6.0](/blog/octobrain-0-6-0-release) была про то, что Octobrain мог _находить_ — читать полные документы, грепать по индексированному контенту. 0.7.0 — про то, что память Octobrain делает, **когда вы не смотрите**. Она перестаёт быть пассивным логом и начинает вести себя как мозг.

---

## Sleep Consolidation — память, которая прибирается сама

Это главное. Octobrain теперь прогоняет «сон» — проход, который находит кластеры недавних похожих воспоминаний и сворачивает каждый кластер в один консолидированный инсайт.

Допустим, за неделю ваш агент сохранил пять отдельных заметок, гоняясь за одним и тем же багом с rate limiting. До 0.7.0 поиск вернул бы пять размытых пересекающихся попаданий и оставил ранжирование на волю случая. После прохода sleep эти пять схлопываются в один чистый инсайт с более высоким confidence — а оригиналы не удаляются, они приглушаются и сохраняются как провенанс, так что путь обратно к сырым заметкам остаётся.

Важная часть: **это автономно.** Никакого cron-задания. Никакого инструмента, который ваш агент должен помнить вызвать. Он запускается лениво сам по себе — при следующем старте Octobrain, если с прошлого прохода прошёл день, он отрабатывает и тихо уходит с дороги. Медленный или упавший проход никогда ничего не блокирует.

```toml
[memory]
sleep_consolidation_enabled        = true   # opt-out, not opt-in
sleep_consolidation_interval_hours = 24     # once a day
sleep_consolidation_threshold      = 0.85   # how similar memories must be to cluster
sleep_consolidation_min_cluster_size = 3    # need at least 3 to bother
sleep_consolidation_max_age_days   = 7      # only recent memories
```

Если хотите форсировать проход — для тестов или прямо перед крупным извлечением — CLI-override никуда не делся:

```bash
octobrain memory sleep-consolidate
```

Но по умолчанию вы его не трогаете. Память держит себя в чистоте сама.

---

## Half-Life Decay — забывание по умыслу

Octobrain теперь применяет кривую забывания. Importance каждого воспоминания со временем угасает по графику half-life — но в момент, когда вы обращаетесь к воспоминанию, оно подкрепляется. Часто вызываемые воспоминания остаются сильными; те, к которым ничего не обращается, мягко тускнеют.

Это [кривая забывания Эббингауза](https://en.wikipedia.org/wiki/Forgetting_curve), позаимствованная напрямую из того, как работает человеческая память. Эффект в том, что **ранжирование улучшается само.** Вы ничего не курируете. Воспоминания, которыми вы реально пользуетесь, всплывают; те, что вы сохранили однажды и больше не понадобились, тонут — так и не будучи выброшенными.

Здесь важны два предохранителя:

- **Ничто не обнуляется.** Есть пол importance; редко вызываемое воспоминание уходит в хвост, но никогда не исчезает. Decay — это сигнал переранжирования, а не удаление.
- **Decay сохраняется.** Счётчики обращений и таймстампы последнего доступа хранятся и переживают рестарты. Понимание памятью того, что «горячо», не сбрасывается каждую сессию.

```toml
[memory]
decay_enabled       = true
decay_half_life_days = 90   # higher = memories stay relevant longer
```

Можно также тюнить decay для каждого воспоминания — быстро устаревающей заметке можно сказать угасать вдвое быстрее, фундаментальному решению — вдвое медленнее, — но почти для всех дефолт просто работает.

---

## Goal-Anchored Consolidation — память со смыслом

Вот идея, вокруг которой постоянно кружит исследование памяти агентов: **консолидируй по цели, а не по часам.** Воспоминания не должны резюмироваться просто потому, что прошло время — они должны схлопываться вокруг того, чего вы пытались добиться.

0.7.0 делает это полноценным workflow. Появился новый тип воспоминания `Goal` и настоящий жизненный цикл для каждого воспоминания — `Working → Consolidated → Archived`. Воспоминания, вносящие вклад в цель, связываются с ней отношением `achieves`. Когда цель закрыта, вы её завершаете, и Octobrain сворачивает каждое вносящее вклад воспоминание в один консолидированный инсайт: его importance поднимается выше источников, источники приглушаются и подвешиваются под ним как запись о том, как вы к этому пришли.

```bash
# Five scattered findings, one closed goal → one durable insight
octobrain memory consolidate goal_4f2a -s "Shipped rate limiting: token bucket, 429 + Retry-After"
```

Пропустите summary — и Octobrain синтезирует его из заголовков источников. В любом случае то, что было пятью разрозненными заметками, становится одним воспоминанием, которое что-то значит, — заякоренным к намерению, которое его породило.

И это та же машинерия, на которой под капотом работает sleep consolidation: каждый кластер получает синтетическую цель, а goal-пайплайн делает остальное. Один движок консолидации, два способа его запустить — вручную, когда вы что-то завершаете, и автоматически, пока вы спите.

---

## Recall стал умнее — HyDE-lite, включён по умолчанию

Размытые запросы — это где семантический поиск обычно проваливается. «То, что про ретраи» не эмбедится никуда близко к заметке, которую вы реально написали.

0.7.0 приносит расширение запроса **HyDE-lite** и включает его по умолчанию. Механизм прост: делаем первый проход поиска, берём топ результатов, усредняем их в центроид и подмешиваем обратно в исходный запрос перед настоящим поиском. Запрос фактически выучивает, как выглядят его собственные ответы, и целится точнее.

На практике это **+10–30% recall на long-tail и недоопределённых запросах** — ровно тех, что люди реально набирают. Стоит это одного лишнего векторного lookup на поиск, не требует LLM (это чистая математика), и `remember` включает его автоматически. Ключевая (BM25) половина поиска по-прежнему использует ваш буквальный текст, так что запросы на точное совпадение не задеты.

Вы ничего не настраиваете. Размытые вопросы просто чаще находят нужное воспоминание.

---

## Более компактная поверхность инструментов — с 8 MCP-инструментов до 5

Каждый инструмент, который вы выставляете через MCP, стоит вашему агенту контекста **на каждом ходу** — примерно 500–2000 токенов схемы, которую ему нужно прочитать, прежде чем что-то сделать. Раздутая поверхность инструментов — это налог на каждый запрос.

Поэтому мы урезали MCP-поверхность Octobrain с восьми инструментов до пяти отдельных глаголов:

```
memorize     store a memory   (now with optional related_to[])
remember     recall           (HyDE expansion + 1-hop neighbors, automatic)
forget       delete           (with confirmation)
consolidate  close a goal     (fold N memories into 1 insight)
knowledge    documents        (index, read, match, search)
```

Три инструмента ушли из MCP, потому что больше не оправдывали стоимость своей схемы:

- **`sleep_consolidate`** — теперь автономен, так что агенту никогда не нужно его вызывать.
- **`relate`** — вложен в `memorize`. Можно передать `related_to[]` и связать воспоминание с другими _в том же вызове_, который его сохраняет. Внести вклад в цель теперь — это один round-trip: сохранить находку и пометить, что она `achieves` цель, разом.
- **`memory_graph`** — `remember` уже возвращает ближайших соседей воспоминания, что покрывает типичный случай.

Ни один из них не исчез — все они по-прежнему живут в CLI для администрирования и отладки. Они просто больше не съедают контекст вашего агента ради фич, которыми он редко пользуется. Пять инструментов, пять глаголов, никаких перегруженных флагов режима.

---

## Мы начали измерять качество памяти — LongMemEval

Нельзя улучшить то, что не измеряешь. 0.7.0 добавляет benchmark-харнесс [LongMemEval](https://github.com/xiaowu0162/LongMemEval) — с чекпоинтингом для долгих прогонов — чтобы оценивать долгосрочный recall Octobrain между релизами на реальном бенчмарке, а не на ощущениях. Это инфраструктура, которую вы никогда не запустите, но именно она делает заявления о recall и консолидации выше теми заявлениями, за которые мы можем поручиться, — и так же будет с будущими.

---

## Под капотом

Горстка более тихих изменений держит свет включённым по мере роста памяти:

- **Периодическое обслуживание LanceDB** запускается автоматически, чтобы со временем держать векторное хранилище компактным и быстрым.
- **Асинхронные авто-связывание и graph-извлечение** — связанные воспоминания соединяются в фоне, не тормозя запись, которая их запустила.
- **Консолидированный SQL-модуль** с централизованным экранированием литералов и упрочнением — меньше острых углов, одно место, чтобы рассуждать о запросах.

Ничего из этого вы не заметите напрямую. В этом и смысл.

---

## Как выглядит 0.7.0 на практике

Неделя из жизни воспоминания, от начала до конца:

1. **Понедельник.** Ваш агент сохраняет три заметки, дебажа флакающий вебхук — каждую через `memorize`, одну из них помечая, что она `achieves` цель «починить ретраи вебхука», в том же вызове.
2. **Всю неделю.** Вы продолжаете спрашивать об этом. Каждый `remember` подкрепляет воспоминания, к которым вы обращаетесь, и тихо гасит те, к которым нет.
3. **Пятница.** Вы выкатываете фикс и делаете `consolidate` цели. Три заметки становятся одним прочным инсайтом: _«Ретраи вебхука: экспоненциальный backoff, ключи идемпотентности, dead-letter после 5»._
4. **Ночью.** Sleep consolidation подметает почти одинаковые наблюдения, которые вы так и не связали явно, и сворачивает их тоже.
5. **Через месяц.** Кто-то спрашивает «как мы обрабатывали сбои вебхуков?» — размытый запрос, который HyDE расширяет, попадая в консолидированный инсайт, а не в пять полузабытых фрагментов.

Никто ничего не курировал. Память организовала себя сама.

---

## Апгрейд

С 0.6.x миграция небольшая:

**Конфиг — один ренейм.** Если в вашей секции `[embedding]` задан `text_model`, переименуйте его в `model`. Это единственное breaking-изменение конфига.

```toml
[embedding]
model = "fastembed:nomic-ai/nomic-embed-text-v1.5"   # was: text_model
```

**MCP-клиенты — три инструмента переехали только в CLI.** Если конфиг вашего клиента или промпты агента зовут `sleep_consolidate`, `relate` или `memory_graph` через MCP, обновите их:

- Уберите вызовы `sleep_consolidate` целиком — теперь он автономен.
- Замените `relate` на `related_to[]` у `memorize`, чтобы связывать по ходу сохранения (или используйте `octobrain memory relate` в CLI для связей между существующими).
- Типичный случай `memory_graph` покрыт результатами соседей у `remember`; более глубокий обход остаётся в `octobrain memory graph`.
- `consolidate_goal` переименован в `consolidate` — та же схема, более чистый глагол.

**Хранилище — делать нечего.** Новые колонки жизненного цикла и трекинга обращений добавляются при первом запуске, а legacy-воспоминания по умолчанию полностью активны. Ни ручной миграции, ни простоя.

**Дефолты — sleep consolidation и HyDE теперь включены.** Если хотите старое поведение, выставьте `sleep_consolidation_enabled = false` или `[search.hyde] enabled = false`. Большинству стоит оставить их включёнными.

Исходники и бинарники: [github.com/muvon/octobrain](https://github.com/muvon/octobrain). Что-то сломалось — открывайте issue, мы их читаем.
