Материал подготовлен автоматически по первоисточникам: ссылки на них — в конце статьи.
Обычная проверка изменений заставляет память кодового агента забывать сведения, которые остались верными. В нерецензированном препринте Thomson Reuters, где все числа получили сами авторы, доля обоснованных удалений достигла 79% против 29% при оценке диффа целиком. Значит, систему обновления памяти стоит строить вокруг отдельных утверждений, а не общего вердикта о коммите.
Проверка «изменилось ли поведение программы» отвечает не на тот вопрос. Коммит может менять одну функцию, не затрагивая сохранённый факт о другой; переименование, наоборот, сохраняет поведение, но делает неверным утверждение со старым именем. Поэтому агенту передавали сохранённое утверждение вместе с диффом и спрашивали, остаётся ли оно верным.
Разницу создала именно формулировка задачи. Когда модели показывали утверждение, но продолжали спрашивать о сохранении поведения, доля обоснованных удалений росла лишь на 1–2 процентных пункта. Когда вопрос меняли на «верно ли это утверждение после коммита», прирост составлял 49–65 пунктов. Модель читает один и тот же контекст, но общий вопрос толкает её удалять сведения обо всех потенциально затронутых частях системы.
Истину определяли исполнением тестов: утверждением служила тестовая функция, которая проходила до изменения и с тем же текстом проверки переставала проходить после него. Работу проверили на пяти моделях и 23 небольших Python-библиотеках; дополнительно тесты переписали как текстовые заметки, и преимущество сохранилось. Результат пока не переносится автоматически на крупные монорепозитории, другие языки и память из расплывчатых заметок.
Практическая схема следует из постановки задачи: хранить память как отдельные проверяемые утверждения, связывать каждое с относящимся к нему кодом и после коммита решать судьбу каждого факта отдельно. Анализ затронутых файлов или поведения всего диффа можно оставить фильтром, но не использовать как окончательное основание для удаления.
Источники
Похоже на вашу задачу?
Расскажите, что собираете. За полчаса разложим на этапы и назовём сроки — это бесплатно и ни к чему не обязывает.



