TL;DR
ReHarness — это способ вести у агента память из коротких «уроков» (выводов из прошлых задач) так, чтобы они обновлялись, а не только копились. После каждой новой задачи отдельный проход берёт уроки, которые агент использовал, и смотрит, помогли они или навредили. Затем он переписывает их: добавляет условия применимости, убирает слишком смелые обобщения, но опирается только на ту задачу, из которой урок родился.
Обычная память работает в одну сторону: решил задачу, записал вывод, потом достаёшь его. Записанный урок почти никогда не проверяют по итогам повторного использования. Вывод «ставь большие числа первыми» выведен на сортировке по убыванию. Потом приходит сортировка по возрастанию, урок вводит агента в заблуждение, а в памяти остаётся и продолжает вредить. Когда задачи меняются, устаревшие и самоуверенные уроки повторяют одну и ту же ошибку. В экспериментах многие методы «структурированной памяти» оказывались хуже агента без памяти.
Метод добавляет к обычному циклу «прочитал → решил → записал» ещё один шаг, обратную ревизию. Всего три шага: достать уроки и решить задачу, переписать использованные уроки по результату, записать новый урок из этой задачи. Главное правило ревизии: новое содержимое урока должно подтверждаться только исходной задачей, из которой он взят. Текущая задача служит лишь проверкой «сработало или нет».
Схема метода
ШАГ 1 (прямое чтение): достаём k самых похожих уроков → агент решает задачу → получаем результат
ШАГ 2 (обратная ревизия): для КАЖДОГО использованного урока берём
[урок + исходная задача, из которой он выведен + итог текущей задачи]
→ переписываем урок: добавляем условия, убираем лишнее
(новые факты — только из исходной задачи)
ШАГ 3 (прямая запись): из текущей задачи пишем НОВЫЙ урок,
опираясь на уже исправленные уроки как на образцы
→ в память: исправленные старые + новый
Каждый шаг — отдельный вызов модели (в авторской реализации — автоматический конвейер).
Пример применения
Задача: Селлер на Wildberries ведёт в Claude Project файл «уроки» для генерации карточек товара. Первый урок вывели на пауэрбанках: «в заголовок — цифры (ёмкость) и ключевик в первые 3 слова, эмодзи не нужны». Потом тот же урок применили к детской одежде. Заголовок получился сухим, конверсия упала. Урок остался в файле и снова всплывёт на следующей карточке из одежды.
Промпт:
Ты — ревизор «уроков» для генерации карточек товара на Wildberries.
УРОК, КОТОРЫЙ ИСПОЛЬЗОВАЛИ:
«В заголовок — цифры (ёмкость, размер) и главный ключевик в первые 3 слова. Эмодзи не нужны.»
ИСХОДНАЯ ЗАДАЧА, ИЗ КОТОРОЙ ВЫВЕДЕН УРОК:
Карточка «Пауэрбанк 20000 mAh». Вариант с цифрами и ключевиком в начале
дал CTR 6,1% против 4,3% у «эмоционального» заголовка.
ТЕКУЩАЯ ЗАДАЧА И ЕЁ РЕЗУЛЬТАТ (используй только как проверку, не как источник фактов):
Карточка «Комбинезон детский демисезонный». Заголовок по уроку: «Комбинезон 80 см
демисезонный для малышей». CTR 2,2% при среднем по категории 4,0%.
ПРАВИЛА РЕВИЗИИ:
1. Реши, подтвердился урок, был слишком общим или устарел.
2. Если слишком общий — добавь условия применимости («только для техники»,
«если покупатель выбирает по характеристикам»).
3. Любое новое утверждение в уроке должно следовать из ИСХОДНОЙ задачи.
Факты из текущей задачи в урок не переноси.
4. Не выдумывай причин, которых нет в данных. Если данных не хватает,
так и напиши: «гипотеза, не подтверждена».
ФОРМАТ ОТВЕТА:
- Вердикт (подтверждён / слишком общий / устарел)
- Что именно в исходной задаче поддерживает правку
- Исправленный урок (1-3 предложения, с условиями применимости)
Результат: Модель выдаст вердикт и коротко объяснит, на каком основании он вынесен. Затем даст переписанный урок с ограничением: правило про цифры и ключевики относится к техникам с выбором по характеристикам. Если в исходной задаче нет данных про одежду, она честно пометит это как гипотезу. Вторым запросом попросите записать новый урок из текущей задачи (шаг 3).
Почему это работает
Слабость. Модель, которая пишет урок после одной задачи, склонна обобщать: «это сработало, значит сработает всегда». Такой урок потом выглядит как установленный факт и ведёт агента мимо. Если уроки только добавлять, старый ошибочный урок продолжает всплывать рядом с похожими запросами. Новый урок его не отменяет.
Сильная сторона. Модель хорошо сравнивает текст урока с фактическим исходом и находит, чего в уроке не хватало. Если дать ей и исходную задачу, и итог новой, она неплохо формулирует условия применимости. Это обычная работа с текстом, а не прогнозирование.
Как метод это использует. Ревизия получает обратную связь: новая задача показывает, где урок споткнулся. Ограничение «новое только из исходной задачи» не даёт модели просто вписать в урок свежий ответ или подогнать его под одну точку. В проверке авторов более 95% утверждений в исправленных уроках оставались подтверждёнными исходной задачей.
Рычаги управления: - Число уроков на ревизию (k) → меньше уроков дешевле, но часть ошибок не поправится. - Правило «только из исходной задачи» → ослабишь, и урок начнёт подгоняться под последний случай. Оставь жёстким. - Сигнал результата → чем точнее итог (CTR, принято или отклонено клиентом, тесты прошли), тем лучше ревизия. Чем шумнее итог, тем меньше пользы. - Формат вердикта («подтверждён / слишком общий / устарел») → удобно фильтровать, какие уроки менять.
Шаблон промпта
Это реконструкция по описанию в статье. Точные тексты промптов авторы вынесли в приложение A, в предоставленном фрагменте его нет.
Ты — ревизор памяти агента. Твоя работа — проверить, не стал ли записанный урок
вредным или устаревшим, и переписать его с условиями применимости.
{урок_который_использовали}
{исходная_задача_и_её_результат}
{текущая_задача_ответ_и_результат}
1. Сравни урок с итогом в CurrentTrajectory: помог он, навредил или не повлиял?
2. Если навредил или повлиял слабо — найди, чего не хватало в уроке:
• пропущенное свидетельство из SourceTrajectory;
• слишком смелое обобщение;
• отсутствие условий применимости.
3. Перепиши урок так, чтобы с ним агент не ошибся бы в CurrentTrajectory.
4. ЖЁСТКОЕ ПРАВИЛО: CurrentTrajectory — только проверка.
Любое новое утверждение должно подтверждаться SourceTrajectory.
Если данных не хватает — пометь «гипотеза».
Вердикт: подтверждён / слишком общий / устарел
Основание из SourceTrajectory: {...}
Исправленный урок: {1-3 предложения с условиями}
Вот исправленные уроки: {исправленные_уроки}.
Вот текущая задача: {текущая_задача_и_результат}.
Запиши ОДИН новый урок. Оставляй только то, что подтверждено данными.
Урок должен дополнять исправленные, а не повторять их.
Что подставлять: {урок_который_использовали} — запись из вашего файла уроков. {исходная_задача_и_её_результат} — материал, из которого урок выведен. {текущая_задача_ответ_и_результат} — свежий случай, где урок применили, с итогом.
🚀 Быстрый старт — вставь в чат:
Вот шаблон ReHarness (ревизия «уроков» агента). Адаптируй под мою задачу: {опиши, какого агента ты ведёшь и какие уроки он копит}.
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит, откуда у вас берётся результат задачи (метрика, решение клиента, проверка) и где хранятся уроки. Эти данные нужны ревизии: без итога нечего проверять, без исходной задачи нечем подтверждать правки. Она подстроит роль, формат вердикта и поля под вашу область.
Ограничения
⚠️ Нужен внятный сигнал результата: метод лучше всего работает, когда итог диагностичен: задача решена или нет, тесты прошли или упали. Там, где результат сильно зависит от случая (в эксперименте это покер со скрытыми картами), выигрыш был лишь небольшим. Ревизия по одному случайному исходу ухудшает уроки.
⚠️ Нужен конвейер, а не один промпт: в статье это автоматический цикл с поиском похожих уроков по эмбеддингам и отдельными вызовами модели. В обычном чате его можно воспроизвести только вручную, одной-двумя задачами.
⚠️ Прирост над сырой историей скромный: хранить сырые прошлые случаи оказалось сильным базовым вариантом. Над ним ReHarness выигрывает, но статистическая значимость лишь на грани. Если задач мало, проще положить всю историю в контекст.
⚠️ Дороже простого поиска похожих случаев: на задачах с Claude метод стоил примерно в три раза больше, чем «достать несколько похожих случаев» (около 254 против 85 долларов за прогон), но дешевле полной истории (около 314 долларов).
⚠️ Привычная «умная» память не гарантирует пользы: методы, которые извлекают факты или ведут «справочник правил», в ряде случаев работали хуже агента без памяти. Не считайте, что запись уроков сама по себе улучшает агента.
Как исследовали
Идея была простой: если память агента только пополнять, ошибочные уроки живут вечно. Авторы взяли три набора потоковых задач, где агент решает последовательность заданий и должен учиться по ходу: от работы с кодом и базами данных до длинных текстов и планирования. Всего вышло 16 задач. Проверяли на трёх современных моделях и сравнивали с шестью конкурентами: Mem0, банк уроков, ACE и другие. Были и два «сырых» варианта: вся история целиком и только похожие случаи. Метрика — нормированный прирост над той же моделью без памяти. Поток шёл строго онлайн: без обучающей и проверочной выборок и без повторного прохода по задачам.
ReHarness показал лучший средний прирост (0,240 против 0,168 у лучшего базового варианта) и вышел на первое место или разделил его в восьми из девяти сочетаний «набор задач — модель». Удивило то, что сырая история оказалась сильнее многих «умных» методов с хранением выводов. Значит, плохо поддерживаемые уроки хуже, чем отсутствие уроков.
Чтобы проверить, что ревизия не «подглядывает» в ответ, авторы разложили исправленные уроки на отдельные утверждения. Более 95% из них подтверждались исходной задачей, а утечки из текущей составляли около 1-2%. Контрфактический тест дал более сильный результат. Исправленный урок применили к той же задаче, по которой его правили. Прирост вырос до 0,335 против 0,144 без ревизии. Значит, правки действительно содержат нужную информацию. Практический вывод: ревизия работает, когда итог диагностичен, и слабее всего там, где результат шумный.
Адаптации и экстраполяции
🔧 Техника: правила в CLAUDE.md / AGENTS.md → условия применимости вместо вечных правил
После сессии с агентом (Claude Code, Cursor) вставьте в чат:
Вот правила из моего файла инструкций, которые агент применял в этой сессии: {правила}.
Вот что в итоге произошло: {итог: что пошло не так, что сработало}.
Для каждого правила: подтвердилось / слишком общее / устарело.
Слишком общие перепиши с условием «применять только если…».
Не добавляй ничего, чего нет в истории, из которой правило выведено.
Это ручная версия ревизии для файла инструкций. Статья проверила идею на автоматическом конвейере, а перенос на файлы инструкций — наша экстраполяция.
🔧 Техника: проверка «предотвратил бы урок ошибку?» → быстрая диагностика
Идея из контрфактического теста статьи:
Если бы вместо старого урока в памяти стоял исправленный вариант, предотвратил бы он ошибку в этой задаче? Да/нет и почему.
Если «нет», правка бесполезна, и её лучше отбросить.
Ресурсы
- Recurrent Harness for Agentic Continual Learning (ReHarness). Авторы и университет в предоставленном фрагменте не указаны. Промпты опубликованы в приложении A статьи.
- Бенчмарки, на которых проверяли: CL-Bench (Asawa et al., 2026), MemoryBench (Ai et al., 2026), MemoryArena (He et al., 2026).
- Конкурирующие методы: Mem0 (Chhikara et al., 2025), ACE (Zhang et al., 2026c), GEPA (Agrawal et al., 2026), «Разнообразные размышления» DoT (Lingam et al., 2025), банк уроков RBank (Ouyang et al., 2026).
