EnglishРусский Map

Обнаружение конфликтов в памяти

title
Обнаружение конфликтов в памяти
type
concept
summary
Поиск противоречий в знаниях и сохранение обоих вариантов вместо тихого перезаписывания
tags
ai-agents, memory, design-patterns
created
2026-04-07
updated
2026-09-14
lang
ru
source_updated
2026-09-14
translated
2026-09-14
translator
lllm/antigravity/gemini-3.7-flash-medium

Практика выявления ситуаций, когда новая порция знаний противоречит уже имеющейся, с сохранением обоих вариантов на виду вместо тихого перезаписывания. Это важно для любой системы знаний, где факты меняются со временем, - памяти агентов, вики, конфигурационных баз данных, - поскольку тихое перезаписывание уничтожает контекст: что именно изменилось и почему.

Проблема перезаписывания

Самый простой подход к обновлению знаний: найти старую запись и заменить её новой. Это работает, когда новая информация однозначно верна. Подход ломается, когда:

  • "Новая" информация может оказаться ошибочной (агент неверно что-то прочитал, источник ненадёжен);
  • Старая и новая информация частично верны каждая в своём контексте;
  • Понимание самого противоречия ценно само по себе (оно указывает на изменение в системе или на пробел в понимании).

В памяти агентов тихое перезаписывание приводит к потере истории. Если в скрипте развёртывания требование флага --force сменилось на его отсутствие, полезны оба факта: текущее состояние и знание о том, что раньше всё работало иначе.

Как работает обнаружение конфликтов

При сохранении нового воспоминания:

  1. Проверить имеющиеся записи памяти на смысловое пересечение (та же тема, похожие теги, совпадающие сущности).
  2. Сравнить утверждения: если новое воспоминание утверждает нечто, противоречащее существующему, пометить конфликт.
  3. Сохранить обе записи и создать запись о конфликте, связывающую их.
  4. Показать конфликт агенту или человеку для явного разрешения.

Обнаружение может быть простым (точное совпадение тега и сущности при различающихся значениях) или сложным (сходство эмбеддингов выше порога при противоположной тональности утверждений). hippo-memory использует более простой подход: конфликты сохраняются в SQLite и дублируются в виде файлов в .hippo/conflicts/, а разрешаются явно через команду hippo resolve <id> --keep <mem_id>.

Стратегии разрешения

  • Оставить самое свежее - довериться последнему наблюдению. Просто, но теряется история.
  • Оставить оба варианта с контекстом - снабдить обе записи временными метками и предоставить выбор потребителю. Сохраняет максимум информации.
  • Объединить - создать новую запись, отражающую нюансы ("для развёртывания требовался --force до версии v2.3, после этого флаг не нужен"). Наиболее точный вариант, но требует понимания сути.
  • Арбитраж человеком - отправить на ручную проверку. Самый безопасный вариант для критически важных знаний. Это форма human-in-the-loop в применении к управлению знаниями.

Связь с этой вики

В этой вики конфликты обрабатываются через процедуру lint: периодические проверки находят противоречия между страницами и передают их на рассмотрение человеку. По своей сути этот подход близок к обнаружению конфликтов, но работает пакетами, а не в реальном времени. Если скорость ingest'а в вики вырастет, обнаружение конфликтов в реальном времени при добавлении материалов (проверка новых утверждений по существующим страницам) позволит выявлять проблемы раньше.

proposition-identity-memory-tool - это отчёт автора, пытавшегося автоматизировать второй шаг (сравнение утверждений) и обнаружившего, что проверка того, выражают ли два высказывания одну и ту же мысль, упирается в проблему тождества пропозиций (proposition identity), не решённую в философии языка. Это довод в пользу того, чтобы оставить разрешение противоречий человеку, как это сделано в lint-процедуре, а не полагаться на автоматический анализатор противоречий.

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