TL;DR
ExpVoyager — схема, в которой агент-«куратор» не берёт готовый конспект опыта, а сам ходит по сырым логам прошлых запусков и собирает из них короткую инструкцию (skill.md) под текущую задачу. Он ищет по логам, открывает нужные куски, а между шагами ведёт две записи: что уже выяснено и какие вопросы остались. Потом исполнитель получает итоговую инструкцию.
Обычно опыт агента сжимают в «уроки» заранее, когда ещё неизвестно, какая задача придёт. Дальше случается одно из двух. Либо ключевая деталь выброшена при сжатии. Либо в инструкции осталась куча частностей чужого запуска, и они мешают. Авторы замерили: готовые навыки теряют большую часть полезных знаний из сырых траекторий. Поиск «топ-k похожих запусков» тоже не спасает: нужное лежит в непохожих запусках, а с ростом k добавляется мусор.
Метод в трёх частях: (1) два вида доступа к логам (по запуску целиком или по отдельному шагу), (2) состояние «знания + открытые вопросы», которое обновляется каждый раунд, (3) финальный синтез инструкции с пометками «проверь при выполнении» и «осторожно, тут были провалы». На трёх тестовых средах метод дал двузначный прирост успешности. Чем больше накоплено логов, тем сильнее выигрыш, а у конкурентов качество при росте архива падает.
Схема метода
ШАГ 0: Задача x + архив сырых логов E
Состояние Z₀: K = ∅ (знания), Q = вопросы из задачи
ЦИКЛ (R раундов или пока Q не пуст / есть бюджет):
ШАГ 1: выбрать один открытый вопрос из Q
ШАГ 2: выбрать действие навигации:
• search_exp(уровень: запуск|шаг, поля, regex, лимит)
• inspect_traj(ссылка) — развернуть весь запуск по порядку
ШАГ 3: прочитать результат → обновить K:
[что специфично для источника] / [что переносится] / [что проверить при выполнении]
ШАГ 4: обновить Q: закрыть, исправить, добавить новые вопросы
ФИНАЛ: синтез skill.md = шаги + проверки на этапе выполнения + предостережения из провалов
→ отдать замороженному исполнителю
Всё идёт отдельным агентом-куратором, который работает перед исполнителем.
Пример применения
Задача: Владелица магазина детской одежды на Wildberries. Её агент в Claude Code уже полгода загружает карточки товаров. В папке /logs лежат сотни логов прошлых запусков: где-то загрузка прошла, где-то отклонена модерацией, где-то упала на размерной сетке. Сегодня нужно загрузить новую категорию «Детская обувь» с размерными сетками. Раньше такого не делали.
Промпт:
Ты — куратор навыков. Твоя задача: изучить архив логов в папке /logs
и написать для исполнителя короткую инструкцию skill.md под ОДНУ текущую задачу.
Исполнитель инструкцию не обсуждает, он ей следует.
Загрузить на Wildberries карточки новой категории «Детская обувь» (45 товаров,
размерная сетка 20–35, фото из папки /photos, цены из price.xlsx).
- search_exp(уровень="запуск" | "шаг", поля, regex, лимит) — найти записи в логах
(grep по файлам). Запуск = итог и список действий. Шаг = наблюдение,
рассуждение, действие, результат.
- inspect_traj(ссылка) — открыть весь запуск целиком по порядку.
K (знания): для каждого пункта пометь одно из:
[источник] — верно только в том запуске, откуда взято;
[переносится] — процедура или правило, которое можно использовать в новой задаче;
[проверить] — условие, которое надо проверить уже при выполнении.
Q (открытые вопросы): что мне ещё нужно узнать, чтобы инструкция была полной.
Начни с Q: выпиши 4–6 вопросов, исходя из задачи.
Повторяй до 8 раундов или пока Q не опустеет:
1. Выбери ОДИН вопрос из Q.
2. Выбери действие: search_exp (какой уровень, какие поля, какой regex)
или inspect_traj. Объясни в одну строку, почему именно оно.
3. Прочитай результат. Обнови K с пометками. Не копируй частности
(конкретные артикулы, даты) в «переносится».
4. Обнови Q: закрой отвеченные, исправь те, что изменились,
добавь новые пробелы.
Не бери логи только потому, что они «похожи на задачу». Ищи по тому,
что тебе нужно узнать. Нужное может лежать в непохожем запуске.
Результат: Агент несколько раундов будет искать по логам. Например, по ошибкам модерации, по размерным сеткам, по загрузке фото. Каждый раунд он покажет, какой вопрос закрывает и как меняются списки K и Q. В конце получится skill.md с порядком шагов, проверками по ходу и предупреждениями по прошлым провалам. Конкретику из чужих запусков (например, «в тот раз категория называлась так-то») он пометит как требующую проверки, а не вставит как факт.
Почему это работает
Слабость: Заранее сжатый конспект опыта пишется «вслепую». Когда делаешь выжимку, ты не знаешь, какая задача придёт. Что-то нужное выпадает, а лишнее остаётся. Поиск «похожих запусков» тоже подводит: сходство по теме ≠ сходство по нужной процедуре. Критическая деталь может быть в совсем другом запуске.
Сильная сторона: Модель хорошо читает конкретные записи, когда ей задан конкретный вопрос. Она умеет различать «так было там» и «так можно сделать здесь». Это и есть переносимое знание. Ещё она хорошо ведёт список «что известно / что неясно».
Как метод это использует: Вопросы из списка Q превращают расплывчатое «изучи опыт» в серию точечных поисков. Пометки в K отделяют частности от процедур. Финал честно сохраняет неопределённость: то, что нельзя знать заранее, становится проверкой в инструкции, а не «фактом».
Рычаги управления: - Число раундов R → меньше для простых задач (экономия), больше для новых и непонятных. - Уровни просмотра → «запуск» даёт общую картину, «шаг» — причины ошибок. Можно требовать начать с первого. - Пометки в K → добавь свои, например [риск], [стоимость]. - Условие выхода → «пока Q не пуст» заменяется на «пока нет ответа на все критичные вопросы». - Размер вывода → попроси ограничить skill.md 1 страницей, иначе исполнитель утонет в деталях.
Шаблон промпта
Ты — куратор навыков. Изучи архив логов в {папка_с_логами} и напиши
для исполнителя короткую инструкцию skill.md под ОДНУ текущую задачу.
{описание_текущей_задачи}
- search_exp(уровень="запуск" | "шаг", поля, regex, лимит) — найти записи в логах.
Запуск = итог и список действий. Шаг = наблюдение, рассуждение, действие, результат.
- inspect_traj(ссылка) — открыть весь запуск целиком по порядку.
K (знания) — для каждого пункта одна пометка:
[источник] — верно только в исходном запуске;
[переносится] — процедура или правило для новой задачи;
[проверить] — надо проверить при выполнении.
Q (открытые вопросы) — что ещё нужно узнать.
Начни с Q: выпиши {число_вопросов} вопросов из задачи.
Повторяй до {число_раундов} раундов или пока Q не опустеет:
1. Выбери ОДИН вопрос из Q.
2. Выбери действие (search_exp или inspect_traj) и объясни почему.
3. Прочитай результат, обнови K с пометками. Частности в [переносится] не копируй.
4. Обнови Q: закрой, исправь, добавь новые пробелы.
Что подставлять: {папка_с_логами} — где лежат записи прошлых запусков. {описание_текущей_задачи} — новая задача со всеми входными данными. {число_вопросов} — обычно 4–6. {число_раундов} — 5–10. {размер_инструкции} — например «одна страница».
🚀 Быстрый старт — вставь в чат агента с доступом к файлам (Claude Code, Cursor):
Вот шаблон ExpVoyager. Адаптируй под мою задачу: [твоя задача и где лежат логи].
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
Агент спросит, в каком формате хранятся логи и что именно нужно сделать сейчас. Первое нужно, чтобы правильно настроить поиск по запускам и шагам (какие поля есть, что искать regex-ом). Второе — чтобы вопросы Q были про процедуру, а не про общие слова.
Ограничения
⚠️ Нужен архив логов: метод работает, когда накоплено много прошлых запусков. В онлайн-режиме при малом опыте он давал слабый прирост, а иногда ухудшал результат. Выигрыш появляется, когда опыта становится много.
⚠️ Нужен доступ к файлам и инструменты поиска: в статье куратор вызывал функции поиска через код. В чате без файлов не получится. В агенте вроде Claude Code, где есть grep и чтение файлов, можно повторить описанием в промпте, но готового решения нет.
⚠️ Структура логов важна: метод опирался на логи, разделённые на запуск и шаги (наблюдение, рассуждение, действие, результат). Если у тебя логи в виде сплошной простыни, придётся сначала привести их в порядок.
⚠️ Доп. расходы: перед исполнением идёт отдельная работа куратора. Это токены и время. Выгодно для сложных или повторяющихся задач.
⚠️ Тесты были на игровых средах: домашние задачи в симуляции, магазин-симулятор, научные задачки. На реальных рабочих процессах метод не проверяли. Часть про совместимость с уже существующими навыками в доступном тексте обрывается.
Как исследовали
Сначала авторы показали, в чём проблема. Они собрали 80 «эталонных» навыков, которые гарантированно помогали исполнителю, и разметили 300 исходных траекторий: где лежат нужные знания. Выяснилось: существующие методы сжатия опыта теряют большую часть нужного. Поиск «топ-k» тоже подводит: охват мал, а с увеличением k точность быстро падает.
Потом сравнили ExpVoyager с обычным агентом (ReAct) и с четырьмя методами: AWM, ReasoningBank, Trace2Skill (заранее сжатые навыки) и SkillTTA (синтез навыка на лету). Тесты шли на трёх средах — ALFWorld (домашние задачи), WebShop (интернет-магазин), ScienceWorld (научные задачи) — и с двумя исполнителями. Для ALFWorld с Qwen3.5-9B успешность выросла с 41% до 64%, с Gemma4-31B — с 54% до 70%. Лучший конкурент дал 51% и 62%. Шагов на задачу тоже стало меньше.
Любопытные детали. Маленький куратор помогает большому исполнителю: 9B-модель, собирающая навык, поднимала 31B-исполнителя. А куратор GPT-5.4-mini дал ещё больше: 76% на ALFWorld. Вывод для практики: качество инструкции для исполнителя важно не меньше, чем сила самого исполнителя.
Самый показательный результат — масштабирование. Когда архив рос до 1000 траекторий, у конкурентов качество падало (больше опыта → шумнее конспект). У ExpVoyager оно росло. Но при малом опыте метод проигрывал и в онлайн-режиме стартовал хуже. Идея в том, что копить сырой опыт и искать по нему под задачу может быть лучше, чем непрерывно пересобирать общий конспект.
Адаптации и экстраполяции
🔧 Техника: убрать пометки → получится обычный «поиск по логам». Без меток [источник] / [переносится] / [проверить] куратор будет копировать частности как факты. Именно эти пометки отделяют метод от простого «найди похожее».
🔧 Техника: добавить лимит на длину skill.md → короче инструкция. Добавь в : «не больше 15 пунктов, каждый — одно действие». Исполнитель меньше путается, но возможна потеря редких деталей.
Экстраполяция: журнал K/Q в обычном исследовании. Принцип «записывай, что выяснено и что осталось» можно перенести в любой длинный ресёрч в чате, без логов:
Веди рабочую записку из двух блоков и обновляй её после каждого шага:
ВЫЯСНЕНО: пункты с пометкой [проверено в источнике] / [допущение] / [надо проверить].
ОТКРЫТЫЕ ВОПРОСЫ: что мешает дать итоговый ответ.
Каждый следующий поиск делай под один открытый вопрос. Итог пиши только когда критичные вопросы закрыты.
Эта часть метода в статье отдельно не проверялась (там проверена вся схема целиком), так что считай её гипотезой.
Ресурсы
- Работа: ExpVoyager: Direct Experience Navigation for Dynamic Agent Skill Synthesis (препринт)
- Авторы: Kwangwook Seo, Dongha Lee — Yonsei University
- Код: https://github.com/tommyEzreal/ExpVoyager
- Среды тестирования: ALFWorld, WebShop, ScienceWorld
- Сравнивали с: AWM, ReasoningBank, Trace2Skill, SkillTTA
