WikiTrace учит ИИ-агента сверять уроки памяти с исходными прогонами

Исследователи KAIST показали, что память ИИ-агента ломает часть задач, и предложили хранить уроки вместе с прогонами, из которых они выведены.

Обложка: WikiTrace учит ИИ-агента сверять уроки памяти с исходными прогонами

Исследователи из корейского института KAIST и компании DeepAuto.ai 10 ноября выложили на arXiv препринт «Don't Just Trust Your Memory» с системой памяти WikiTrace для ИИ-агентов: каждый урок, вынесенный из прошлых задач, хранится со ссылкой на прогон, из которого он выведен, и агент может свериться с этим прогоном до того, как уроку следовать. По замерам авторов на пяти бенчмарках средний результат агента с WikiTrace составил 90,2 против 79,5 без памяти и 87,0 с теми же уроками без доступа к источникам.

Работа касается всех, кто даёт агенту «опыт»: файлы с правилами, заметки о прошлых сессиях, базы уроков, память из заметок и вики. По данным авторов, агент с такой памятью проваливает часть задач, которые без неё решал, а предлагаемое средство простое: исходные журналы прогонов остаются рядом с уроками, и агент получает инструкцию к ним возвращаться. Препринт подан в ACL Rolling Review и рецензию ещё не прошёл, независимого воспроизведения результатов нет, код открыт на GitHub под лицензией Apache 2.0.

Ключевые выводы
  • Препринт arXiv:2611.14320 вышел 10 ноября 2026 года и находится на рецензии; все числа ниже — замеры самих авторов.
  • Средний результат по восьми наборам задач пяти бенчмарков: WikiTrace 90,2, те же уроки без источников (Insights Only) 87,0, ReasoningBank 81,7, AWM 81,6, ExpeL 80,3, агент без памяти 79,5.
  • Среди задач, которые агент решал без памяти, с WikiTrace проваливается 4,5%, с одними уроками 6,5%; повторный запуск того же агента без памяти даёт 9,7%.
  • Решение одной задачи с WikiTrace в среднем в 1,17 раза дороже, чем с теми же уроками без доступа к источникам.
  • Все уроки кладутся в первое сообщение агенту; случай, когда они перестают помещаться в контекст, авторы оставили открытым.

Почему память иногда делает агента хуже?

Потому что урок в памяти — это догадка о причине успеха или провала, и проверить её агенту нечем. Память агента обычно строят так: модель читает траекторию прошлой задачи, то есть последовательность действий и ответов среды, и сжимает её до короткого правила. У траектории при этом одна метка, «успех» или «провал», и она не говорит, какое из действий привело к исходу. Автор урока угадывает, а агент получает правило уже без траектории.

Авторы называют следствие в тексте статьи memory-induced degradation, деградацией из-за памяти, и приводят пример из ALFWorld, текстового симулятора домашних дел. В памяти метода ExpeL оказалось правило «задачи с лампой завершаются, когда предмет лежит рядом с включённой лампой». В задаче «рассмотри вазу под настольной лампой» агент с этим правилом включил лампу рядом с вазой и объявил задачу выполненной; без памяти он брал вазу в руки, включал лампу и задачу решал. Исходный прогон, из которого правило выведено, ему противоречит: там эпизод завершился, только когда агент взял предмет в руки.

Чтобы оценить масштаб, авторы отобрали задачи, которые агент решил во всех трёх прогонах без памяти и провалил с памятью, и отдали пары прогонов LLM-судье (gpt-5.6-sol со средним уровнем рассуждений). По его разметке в 52% таких случаев провал связан с записью из памяти, которой агент последовал. В 20% всех разобранных случаев неверной была сама запись, в остальных из этих 52% верное правило применили вне его условий, истолковали слишком широко или предпочли более подходящему. В прочих случаях связи с памятью судья не нашёл.

However, memory can also lead to memory-induced degradation, where an agent fails on tasks it would solve without memory, often because it follows a lesson that is incorrect, or misapplies or misreads a valid one.
Yukyeong Lee, Yumin Choi, Jinheon Baek, Sung Ju Hwangавторы препринта, KAIST и DeepAuto.ai, аннотация на arXiv (перевод редакции: «Однако память может приводить и к деградации из-за памяти: агент проваливает задачи, которые решил бы без неё, часто потому, что следует неверному уроку либо неправильно применяет или понимает верный»)

Как устроен WikiTrace?

Это три слоя файлов, связанных ссылками сверху вниз. Нижний слой raw/ хранит прогон как он был: задачу, исход и полный журнал ходов с рассуждениями, действиями и ответами среды. Средний слой compilation/ — разбор прогона, который пишет модель-компилятор: ключевые решения, если задача решена, или вероятные причины провала. Верхний слой insight/ — короткие уроки, не больше трёх на прогон; в каждом сказано, что делать, когда это применимо, из какого прогона урок взят и был ли тот успешным. Слои описаны в README модуля памяти.

WikiTrace учит ИИ-агента сверять уроки памяти с исходными прогонами_10
Как WikiTrace строит память (a), как выглядят её документы (b) и когда агент идёт по ссылкам к источнику (c). Источник: Lee et al., arXiv:2611.14320, CC BY 4.0

Компилятор вызывается один раз на прогон и видит только задачу, ходы и признак успеха; эталонного решения у него нет. Уроки не объединяются, не фильтруются и после записи не меняются, поэтому в памяти могут лежать повторяющиеся и противоречащие друг другу правила. Шаблон документа урока в репозитории выглядит так:

			---
type: insight
id: insight-NNNN
title: <title>
source_step: step-NNNN
---

## Insight
<guideline>

## Applicability
<when it applies>

## Source episode
step-NNNN (success | failure)
- Task: <the source run's instruction>
- Compilation: /work/corpus/compilation/step-NNNN.md
- Raw trajectory: /work/corpus/raw/step-NNNN/
		

На новой задаче агент получает в первом сообщении все уроки и список трёх прошлых прогонов, чьи задачи больше всего похожи на текущую. Сама память смонтирована в песочнице только для чтения в каталог /work/corpus, и агент читает её обычными инструментами терминала read и bash. Когда идти по ссылке к источнику, задаёт промпт; авторы называют этот шаг спуском (descent). Вот его ключевая часть в варианте для ALFWorld, по шаблону в репозитории и приложению к статье:

			Reading the wiki with `read` or `bash` costs no game steps. Go down to an insight's source
run and compilation when it tells you what to do but not exactly how, when it came from a
failed run, or when two insights disagree. Check this before your first `act` for the
insights you will rely on, and again whenever an action fails. Look for the one fact that
settles it, such as a command format, in the run.

Memory rules
- Never replay a past run. It started from a different state than this task, even when
  its task reads the same, and steps that worked there fail here.
- Take from a run only a fact you can check against this task, such as a command format.
  Name what differs before you use it.
- From a failed run, take only the action to avoid, never the plan.
		

Условий спуска четыре: урок говорит, что делать, но не говорит, как именно; он взят из неудачного прогона; два урока расходятся; действие не удалось. Воспроизводить прошлый прогон целиком правила запрещают: из него берётся только факт, проверяемый на текущей задаче. Выше в том же промпте модель предупреждают, что достоверны только сырые ходы: «Only the raw turns are certain».

Что показали замеры и с чем сравнивали?

WikiTrace оказался первым на всех восьми наборах задач, а главный контроль — вариант Insights Only с теми же уроками, но без смонтированных источников и без инструкции спускаться — отстал в среднем на 3,2 пункта. Бенчмарков пять. Три — текстовые миры, где агент отдаёт по одной команде: ALFWorld (домашние дела), ScienceWorld (научные опыты) и PlanCraft (крафт в Minecraft). Два — среды с вызовом инструментов: AppWorld (повседневные задачи через API приложений) и tau3-bench Retail (диалог с симулированным покупателем и операции над базой заказов).

Все методы работали на одном агенте — терминальном агенте Pi с моделью deepseek-v4-flash на высоком уровне рассуждений; та же модель строила память. Каждый метод один раз собирал память из одних и тех же прогонов без памяти на обучающих задачах (от 38 до 54 задач на бенчмарк) и проверялся на одних и тех же тестовых (от 76 до 134 задач в наборе), по три повтора. Сравнивали с тремя опубликованными методами: AWM превращает успешные траектории в сценарии, ExpeL ведёт список правил в свободной форме, ReasoningBank извлекает стратегии из успешных и неудачных прогонов и подбирает их по сходству задач.

WikiTrace учит ИИ-агента сверять уроки памяти с исходными прогонами_19
Средний результат агента на deepseek-v4-flash по восьми наборам задач пяти бенчмарков, три повтора. График: Tproger по данным Lee et al., arXiv:2611.14320, таблица 1

Результаты по наборам задач, среднее трёх повторов (deepseek-v4-flash, агент Pi)

9 сервисов, 7 столбцов
Результаты по наборам задач, среднее трёх повторов (deepseek-v4-flash, агент Pi)
Набор задачБез памятиAWMReasoningBankExpeLInsights OnlyWikiTrace
ALFWorld, seen94,494,792,194,496,798,7
ALFWorld, unseen94,397,392,898,097,398,8
ScienceWorld83,788,985,091,994,996,1
PlanCraft, seen72,376,384,774,088,793,3
PlanCraft, unseen56,357,361,351,073,081,3
tau3-bench Retail86,885,586,482,585,188,2
AppWorld, Test-Normal75,479,380,880,586,889,5
AppWorld, Test-Challenge72,773,470,770,073,775,8
Среднее79,581,681,780,387,090,2
Листайте столбцы →Смахните влевоВсе 7 столбцов
Источник: Lee et al., arXiv:2611.14320, таблица 1. Метрики у бенчмарков разные: доля успешных задач в ALFWorld и PlanCraft, средний балл в ScienceWorld, доля выполненных задач (TGC) в AppWorld, доля пройденных задач в tau3-bench

Таблицу стоит читать с двумя оговорками. Среднее складывается из разных метрик, поэтому 90,2 нельзя читать как «90,2% решённых задач». И разброс между повторами местами велик: на PlanCraft unseen у WikiTrace 81,3 при стандартном отклонении 8,5, у Insights Only 73,0 при 10,7. На tau3-bench Retail все остальные методы с памятью оказались ниже агента без памяти; WikiTrace, по словам авторов, единственный ни на одном наборе не опустился ниже этой планки.

Насколько реже агент ломает то, что умел без памяти?

По замерам авторов, с WikiTrace проваливается 4,5% задач из тех, что решались без памяти, с одними уроками 6,5%. Средний балл не различает, помогла память решить новое или сломала старое, поэтому авторы считают эти эффекты отдельно. Gain — доля успехов на задачах, которые агент без памяти проваливал, Regression — доля провалов на задачах, которые он без памяти решал; «решал» означает исход большинства из трёх прогонов без памяти.

WikiTrace учит ИИ-агента сверять уроки памяти с исходными прогонами_24
Regression: доля провалов среди задач, которые агент решал без памяти; среднее по восьми наборам. График: Tproger по данным Lee et al., arXiv:2611.14320, раздел 4.3

Строка «повторный запуск без памяти» задаёт уровень шума: агент недетерминирован, и три дополнительных прогона без всякой памяти дают Regression 9,7%. Поэтому сам показатель не доказывает, что конкретный провал вызвала память. У WikiTrace, как пишут авторы, Regression ниже, чем у Insights Only, на семи наборах из восьми, и это единственный метод, чей 95-процентный доверительный интервал целиком лежит ниже полосы повторного запуска. Gain у WikiTrace выше уровня повторного запуска на 35 процентных пунктов, у Insights Only на 27, у опубликованных методов на 7–14.

К источникам агент обращается чаще там, где труднее: в трёх текстовых мирах он открывал разбор или сырой прогон в 22% запусков на лёгких задачах и в 44% на трудных. Открытый прогон менял план агента в 43% запусков со спуском, и в них отрыв от Insights Only составил 8,3 пункта против 4,4, когда источник лишь подтвердил план или не пригодился. Эти доли размечали LLM-судьи, а агент сам выбирает, когда спускаться, поэтому запуски со спуском и без него отличаются не только спуском.

Сколько это стоит и повторяется ли на другой модели?

На этапе решения задача с WikiTrace обходится в среднем в 1,17 раза дороже, чем с Insights Only; это среднее по наборам задач, и база сравнения здесь — вариант с теми же уроками; с агентом без памяти эта цифра ничего не сравнивает. Увеличенный бюджет на построение памяти конкурентам не помог: когда построитель AWM прогнали по тем же траекториям девять раз, а ExpeL и ReasoningBank по три, их средние выросли до 83,8, 83,3 и 82,8 и остались ниже 87,0 у Insights Only.

Вторую модель проверили в меньшем объёме: GLM-5.3-flash на среднем уровне рассуждений и только на трёх наборах задач (оба PlanCraft и ScienceWorld). Там WikiTrace набрал в среднем 92,7 против 90,9 у Insights Only и 71,2 без памяти, а каждый из трёх опубликованных методов хотя бы на одном наборе оказался ниже агента без памяти. Основной результат 90,2 относится только к deepseek-v4-flash.

Что делать тем, кто строит агентов с памятью?

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

  • Хранить сырые журналы прогонов рядом с выжимками и ставить в каждом уроке ссылку на прогон-источник и пометку, успешным ли он был.
  • Описать в промпте условия, при которых агент обязан свериться с источником: уроку не хватает деталей, он взят из неудачного прогона, два урока расходятся, действие не удалось.
  • Измерять отдельно, что память починила и что сломала, и сравнивать с повторным запуском без памяти: средний балл эти эффекты смешивает. О том, как устроить проверку памяти у себя, мы писали в материале о методике проверки памяти ИИ-агента.

Чтобы повторить замеры, нужны Python 3.11 или новее, uv, Node 20, Docker и ключ OpenRouter. Команды из README репозитория: установка окружения и бенчмарка ALFWorld, построение памяти на обучающих задачах, тестовый прогон метода wikitrace и расчёт Gain и Regression. Это один повтор. Чтобы analyze посчитал показатели, по документации модуля анализа у каждой задачи должны быть результаты метода no-memory для повторов 0, 1 и 2, а у сравниваемого метода — те же повторы, то есть build и run повторяются с --trial 0, 1 и 2, а run запускается ещё и с --method no-memory.

			uv sync --extra dev
cp .env.example .env              # set OPENROUTER_API_KEY
set -a; . ./.env; set +a

scripts/setup/pi.sh               # the Pi terminal agent at a pinned commit, with its patches
scripts/setup/sandbox_image.sh    # the --network none sandbox the agent runs in
DATA_ROOT=/path/to/data scripts/setup/alfworld.sh

uv run wikitrace build \
    --config     configs/alfworld.yaml \
    --benchmark  alfworld \
    --suite      valid-seen \
    --trial      0

uv run wikitrace run \
    --config     configs/alfworld.yaml \
    --benchmark  alfworld \
    --suite      valid-seen \
    --trial      0 \
    --method     wikitrace

uv sync --extra analysis
uv run wikitrace analyze all \
    --runs  outputs/ \
    --out   analysis/
		

Чего эта работа не доказывает?

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

A source link lets the agent check an insight against its run but does not verify the insight.
Yukyeong Lee, Yumin Choi, Jinheon Baek, Sung Ju Hwangавторы препринта, KAIST и DeepAuto.ai, раздел Limitations (перевод: «Ссылка на источник позволяет агенту сверить урок с его прогоном, но не верифицирует сам урок»)
  • Масштаб. Все уроки кладутся в первое сообщение, чтобы агент ни одного не пропустил, и промпт растёт вместе с памятью. В примере промпта для ALFWorld из приложения к статье в сообщении 141 урок. Поиск по памяти, которая не помещается в контекст, авторы оставили открытой задачей.
  • Разметка причин. Категории провалов и причины спусков определяли LLM-судьи по рассуждениям агента, то есть они описывают, что агент написал, и не обязательно то, что привело к исходу. Согласие двух судей авторы оценивают каппой Коэна 0,77 для повода к спуску, 0,63 для его цели и 0,46 для эффекта.
  • Сравнение. Конкурентов запускали по официальным реализациям, но в общем для всех офлайн-протоколе: память строится один раз и замораживается. ReasoningBank поэтому не обновлялся после каждой тестовой задачи, а ExpeL работал без повторных попыток и подбора примеров.
  • Охват. Основной эксперимент проведён на одной модели, а среди пяти бенчмарков нет задач на работу с репозиторием кода.

Статья подана в октябрьский цикл ACL Rolling Review 2026 года, и её выводы могут измениться после рецензии. О соседней проблеме длинной истории — наш разбор того, как контекст агента деградирует в продакшене. Пошаговый пример авторы выложили на странице проекта WikiTrace.

Источники: Lee et al. Don't Just Trust Your Memory: Evidence-Linked Memory Reduces Memory-Induced Degradation in LLM Agents (arXiv:2611.14320), HTML-версия препринта, Репозиторий WikiTrace на GitHub, README модуля памяти WikiTrace, Шаблон промпта спуска descend.j2, Документация модуля анализа Gain и Regression, Страница проекта WikiTrace, Pi Agent Harness

Изображение на обложке: Изображение: Lee et al., arXiv:2611.14320