3,583 papers
arXiv:2609.32630 84 26 сент. 2026 г. FREE

ExpVoyager: навык под задачу из сырых логов прошлых запусков вместо готовых конспектов

КЛЮЧЕВАЯ СУТЬ
Готовые «уроки» из прошлых запусков теряют большую часть полезного. Их пишут вслепую, пока задача ещё неизвестна. Метод ExpVoyager позволяет собрать короткую инструкцию (skill.md) под текущую задачу прямо из сырых логов, даже если такую задачу агент раньше не делал. Фишка: куратор ищет не «похожие запуски», а ответы на конкретные вопросы, потому что нужное часто лежит в непохожих. Между шагами он ведёт две записи: что уже выяснено и какие вопросы остались. Итог: двузначный прирост успешности на трёх тестовых средах.
Адаптировать под запрос
⚡

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: закрой отвеченные, исправь те, что изменились,
   добавь новые пробелы.
Не бери логи только потому, что они «похожи на задачу». Ищи по тому,
что тебе нужно узнать. Нужное может лежать в непохожем запуске.



Когда закончишь, напиши skill.md:
- пошаговый порядок действий для этой задачи;
- блок «Проверь при выполнении» — всё из K с пометкой [проверить];
- блок «Осторожно» — провалы из логов: что пошло не так и как восстанавливаться;
- без привязки к конкретным значениям из чужих запусков.
Выведи также итоговые K и 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: закрой, исправь, добавь новые пробелы.



skill.md:
- пошаговый порядок для этой задачи;
- «Проверь при выполнении» — всё с пометкой [проверить];
- «Осторожно» — провалы из логов и как восстанавливаться;
- не больше {размер_инструкции}.

Что подставлять: {папка_с_логами} — где лежат записи прошлых запусков. {описание_текущей_задачи} — новая задача со всеми входными данными. {число_вопросов} — обычно 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

📋 Дайджест исследования

Ключевая суть

Готовые «уроки» из прошлых запусков теряют большую часть полезного. Их пишут вслепую, пока задача ещё неизвестна. Метод ExpVoyager позволяет собрать короткую инструкцию (skill.md) под текущую задачу прямо из сырых логов, даже если такую задачу агент раньше не делал. Фишка: куратор ищет не «похожие запуски», а ответы на конкретные вопросы, потому что нужное часто лежит в непохожих. Между шагами он ведёт две записи: что уже выяснено и какие вопросы остались. Итог: двузначный прирост успешности на трёх тестовых средах.

Принцип работы

Отдельный агент-куратор работает кругами, перед тем как исполнитель начнёт задачу. 1. Берёт один открытый вопрос. 2. Ищет в логах: по запуску целиком или по отдельному шагу. 3. Записывает находку в «знания» с ярлыком. 4. Закрывает вопрос и добавляет новые. Ярлыков три: «верно только в том запуске», «переносится» и «проверь при выполнении». Ярлык переносится не даёт чужим частностям попасть в инструкцию как факт. Это как следователь с доской: слева установлено, справа ещё неясно. Пока справа есть пробелы, дело не закрыто. Разница с обычной выжимкой в том, что вопросы задаёт текущая задача, а не прошлое.

Почему работает

Конспект опыта пишут до того, как известна задача. Что-то нужное выпадает, лишнее остаётся. Поиск «топ-k похожих запусков» тоже подводит: похожая тема не значит похожая процедура. А с ростом k в выдачу лезет мусор. Модель хорошо читает конкретные записи, когда ей задан конкретный вопрос. Она также различает «так было там» и «так можно сделать здесь». Вопрос превращает расплывчатое «изучи опыт» в серию точечных поисков, а ярлыки честно оставляют неизвестное проверкой, а не выдают за факт. Жесть: у конкурентов качество падает, когда архив растёт. У ExpVoyager выигрыш, наоборот, растёт вместе с архивом. Обратная сторона: при малом опыте прирост слабый, а иногда результат даже хуже.

Когда применять

Агенты с накопленным архивом логов (Claude Code, Cursor) → новая задача, похожая на прошлые лишь частично, особенно когда в архиве сотни запусков с успехами и провалами. Хорошо для повторяющихся и сложных процессов: куратор съест токены и время, но окупится. НЕ подходит: когда логов мало, в чате без доступа к файлам и поиску, и для простых задач. Если логи лежат сплошной простынёй, сначала разбей их на запуски и шаги. Метод проверяли на игровых средах, на реальных рабочих процессах не тестировали.

Мини-рецепт

1. Наведи порядок в архиве: запуск = итог и список действий, шаг = наблюдение, рассуждение, действие, результат. Простыню сначала разбери.
2. Назначь куратора: <роль>куратор навыков, который пишет инструкцию под ОДНУ задачу. Исполнитель инструкцию не обсуждает, он ей следует.
3. Дай два инструмента: поиск по логам (уровень, поля, шаблон поиска, лимит) и открытие запуска целиком по порядку.
4. Заведи две записи: знания с тремя ярлыками и открытые вопросы. Пусть начнёт с 4–6 вопросов из задачи.
5. Запрети искать по сходству: ищем то, что нужно узнать, а не то, что выглядит похоже.
6. Ограничь круги: 5–10 раундов. Для простой задачи меньше, для непонятной больше.
7. Потребуй финал: порядок шагов, блок «Проверь при выполнении», блок «Осторожно» с провалами и способами выйти из них. Не больше одной страницы, иначе исполнитель утонет.
8. Отдай исполнителю только skill.md: сырые логи ему не нужны.

Примеры

[ПЛОХО] : Прочитай все логи в /logs, сделай выжимку, что у нас получалось, и загрузи карточки детской обуви : Найди 5 самых похожих запусков и действуй по ним
[ХОРОШО] : Ты куратор навыков. Задача: загрузить на Wildberries 45 карточек детской обуви с размерными сетками 20–35. Такое раньше не делали. Начни с 5 вопросов, что тебе нужно знать. Каждый раунд: один вопрос, один поиск по логам в /logs (по запуску или по шагу, объясни выбор), обновление знаний с ярлыками [только там] / [переносится] / [проверить]. Не копируй артикулы и даты в [переносится]. Максимум 8 раундов. В конце напиши skill.md на страницу: шаги, блок «Проверь при выполнении», блок «Осторожно» с прошлыми провалами Что меняется: куратор не берёт «похожие» запуски с обувью, которых нет. Он спросит, почему модерация отклоняла карточки, и найдёт причину в запуске с одеждой. Потом спросит, где падала загрузка размерной сетки, и откроет нужные шаги. Название категории из чужого запуска попадёт в инструкцию как «проверь», а не как факт.
Источник: ExpVoyager: Direct Experience Navigation for Dynamic Agent Skill Synthesis
ArXiv ID: 2609.32630 | Сгенерировано: 2026-10-09 09:00

Проблемы LLM

ПроблемаСутьКак обойти
Заранее сжатый опыт теряет нужное и оставляет лишнееПросишь модель сделать выжимку из прошлых запусков, пока новой задачи ещё нет. Выжимка пишется «вслепую». Ключевая деталь для будущей задачи выпадает. А частности чужого запуска остаются и мешают исполнителю. Проблема касается любых конспектов, заметок и памяти агентаНе храни только выжимки. Оставь сырые записи. Пусть отдельный проход под конкретную задачу собирает инструкцию из сырья (см. метод «Куратор с вопросами»)
Поиск «похожих» прошлых случаев приносит не тоБерёшь топ-k записей, похожих на задачу по теме. Но нужная процедура часто лежит в записи на другую тему. Если увеличить k, в запрос попадает мусор. Сходство по теме не равно сходству по нужному действиюИщи не «похожее на задачу», а «то, что нужно узнать». Сначала выпиши вопросы. Потом ищи ответ на каждый отдельным поиском

Методы

МетодСуть
Куратор с вопросами — инструкция под задачу из сырого архиваПодготовь отдельный проход перед исполнением. Куратор получает задачу и доступ к архиву. Он ведёт два списка: K (что выяснено) и Q (что ещё неясно). Начни с Q: 4–6 вопросов из задачи. Каждый раунд: (1) выбрать ОДИН вопрос; (2) выбрать действие: найти по шаблону (search_exp) или открыть запуск целиком (inspect_traj); (3) обновить K; (4) закрыть, исправить или добавить вопросы в Q. Остановись через 5–10 раундов или когда Q пуст. В конце куратор пишет короткую инструкцию (файл skill.md), и её получает исполнитель. Почему работает: расплывчатое «изучи опыт» превращается в серию точечных поисков. Модель хорошо читает записи, когда ищет ответ на конкретный вопрос. Список «неясно» не даёт остановиться раньше времени. Уровни просмотра: сначала итоги запусков (общая картина), потом отдельные шаги (причины ошибок). Когда да: архив большой, задача новая или повторяющаяся и сложная. Когда нет: опыта мало, задача простая, нет доступа к файлам и поиску. Куратор — это лишние токены и время
Три пометки у каждого знания — отделить частное от переносимогоКогда куратор записывает знание, он ставит одну из трёх пометок. [источник] — верно только в том запуске, откуда взято. [переносится] — процедура или правило, годится для новой задачи. [проверить] — условие, которое нельзя знать заранее. Добавь запрет: не копировать в [переносится] частности (артикулы, даты, имена). Почему работает: модель умеет различать «так было там» и «так можно сделать здесь». Пометка заставляет это различение сделать явно. В инструкцию попадает процедура без чужого мусора. Как использовать в финале: всё с [проверить] идёт в блок «Проверь при выполнении». Провалы из логов идут в блок «Осторожно: что пошло не так и как восстановиться». Можно добавить свои пометки: [риск], [стоимость]. Работает и без архива логов: для любой выжимки из прошлого материала под новую задачу

Тезисы

ТезисКомментарий
Неизвестное заранее лучше записать как проверку, а не как фактИз прошлого опыта нельзя узнать всё. Например, как называется нужное поле именно сейчас. Если вписать старое значение как факт, исполнитель ошибётся уверенно. Если вписать «проверь это на шаге 3», он сверится с реальностью. Неопределённость остаётся честной. Применяй: в любой инструкции по мотивам прошлого опыта выдели блок «Проверь при выполнении». Туда идёт всё, что зависит от текущего состояния
Конкретный вопрос делает чтение архива точнее«Изучи опыт» даёт расплывчатый пересказ. «Как в прошлых запусках исправляли отказ по размерной сетке?» даёт точную выборку. Вопрос задаёт, что считать нужным. Остальное модель пропускает. Новые вопросы появляются по ходу, когда видны пробелы. Применяй: перед работой с большим материалом попроси модель выписать вопросы. Потом пусть ищет ответ на каждый отдельно

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с