TL;DR
CSRS (Calibrated Step Reward System) — метод обучения моделей на собственных траекториях через двухуровневую проверку: грубую валидацию "успех/провал" на всей траектории + детальную генерацию рассуждений LLM для каждого шага. Исследователи из StepFun показали, как создавать качественные обучающие данные для GUI-агентов (моделей, которые кликают по интерфейсам): модель генерирует последовательность действий, система проверяет итоговый результат (сработало или нет), мощная LLM извлекает 7 типов знаний (прогресс, состояние, эффект действия, самоанализ, проверка, намерение, следующее действие), и всё это становится обучающими данными для следующей итерации.
Главная находка: проверка целиком работает лучше проверки по шагам. Когда аннотаторы оценивают каждый шаг отдельно — субъективность зашкаливает ("правильно ли открыта именно эта вкладка?"). Когда проверяют финальный результат — объективность >90% ("задача выполнена или нет?" — очевидно). Экономия 10-100× по сравнению с пошаговой разметкой. Причина: итоговый результат объективно верифицируем (либо файл скачался, либо нет), а промежуточные шаги допускают разные интерпретации ("можно было открыть другую вкладку и тоже прийти к цели").
CSRS применяет селективное обучение от траекторий: из успешных берёт всё (знания + действия), из провальных — только знания, но не действия. Логика: "учись понимать на ошибках, но не копируй неправильные действия". Модель запоминает что пошло не так и почему, но не повторяет сломанную последовательность шагов. Это даёт итеративное улучшение: модель N генерирует траектории → CSRS извлекает данные → модель N+1 сильнее → генерирует лучшие траектории → цикл продолжается.
Схема метода
ТРАЕКТОРИЯ: Модель выполняет задачу (серия действий) → финальный результат
ПРОВЕРКА: Верификатор/человек → бинарная метка (успех/провал)
ИЗВЛЕЧЕНИЕ (если успех):
LLM генерирует для каждого шага:
1. Progress tracking → оценка продвижения к цели
2. State summary → описание текущего состояния
3. Effect prediction → что произойдёт после действия
4. Self-reflection → анализ решения
5. State verification → подтверждение ожидаемого состояния
6. Intent execution → связь намерения и действия
7. Action prediction → следующее действие
ИЗВЛЕЧЕНИЕ (если провал):
Только пункты 1-6 (знания), пункт 7 (действие) отбрасывается
ОБУЧЕНИЕ: Модель тренируется на извлечённых данных → следующая итерация
Вся схема работает в цикле: улучшенная модель генерирует лучшие траектории для следующего раунда.
Пример применения
Задача: Ты запускаешь серию экспериментов по контент-стратегии в Telegram-канале. Пробуешь разные подходы (время постинга, форматы, темы), часть заходит, часть проваливается. Нужно извлечь знания из всех попыток, но не копировать неудачные действия.
Промпт:
Я тестирую 5 гипотез для Telegram-канала о стартапах (15К подписчиков).
Вот траектории:
ТРАЕКТОРИЯ 1: Утренний дайджест (7:00) → новости + мем → охваты 45% → вовлечённость 8% → УСПЕХ
ТРАЕКТОРИЯ 2: Вечерний лонгрид (20:00) → кейс + разбор → охваты 12% → вовлечённость 2% → ПРОВАЛ
ТРАЕКТОРИЯ 3: Обеденный опрос (13:00) → вопрос + 4 варианта → охваты 38% → вовлечённость 15% → УСПЕХ
ТРАЕКТОРИЯ 4: Ночной анонс (23:00) → тизер события → охваты 5% → вовлечённость 0.5% → ПРОВАЛ
ТРАЕКТОРИЯ 5: Дневной карусель (15:00) → 5 слайдов инсайтов → охваты 30% → вовлечённость 6% → УСПЕХ
Задача:
1. Для УСПЕШНЫХ траекторий: извлеки все 7 категорий знаний
- Прогресс к цели (вовлечённость аудитории)
- Состояние (время, настроение аудитории, контекст)
- Эффект (что произошло после публикации)
- Самоанализ (почему сработало)
- Проверка состояния (подтверждение гипотезы)
- Намерение (какую цель преследовали)
- Следующее действие (что делать дальше)
2. Для ПРОВАЛЬНЫХ траекторий: извлеки только категории 1-6 (знания), НЕ предлагай повторить действия
3. На основе извлечённых знаний предложи улучшенную стратегию для следующей недели
Важно: из провалов учись пониманию (почему не зашло, какой контекст, что упустили), но не копируй сломанные паттерны.
Результат:
Модель выдаст структурированный анализ: - Для успешных траекторий: полный разбор по 7 категориям — покажет как аудитория реагирует на разное время/формат, что происходит с охватами, почему именно эти паттерны работают, и предложит конкретные следующие шаги - Для провальных траекторий: анализ контекста и причин (вечером аудитория не готова к лонгридам, ночью все спят), но НЕ предложит "попробуй ещё раз в 23:00 с анонсом" - Итоговая стратегия: синтез из успешных паттернов (утро + дайджест, обед + опрос, день + карусель) + понимание почему провалилось (не то время, не тот формат для контекста)
Получишь стратегию, которая учится на всех данных, но не повторяет ошибки.
Почему это работает
LLM склонны к имитации без понимания причинности. Если скормить модели траекторию "открыл вкладку X → кликнул кнопку Y → задача провалилась", она может запомнить паттерн "вкладка X + кнопка Y" как релевантный, хотя он ведёт к провалу. Проблема: модель учится на корреляциях, не на каузальности. Провальная последовательность действий похожа на успешную (те же глаголы, та же структура), и без явного сигнала "это плохо" модель впитывает оба паттерна одинаково.
LLM отлично умеют в ретроспективный анализ и извлечение знаний. Когда провальная траектория анализируется мощной моделью (thinking model), она генерирует рассуждения: "На шаге 3 состояние было X, я ожидал эффект Y, но произошёл Z, потому что упустил условие W". Это чистое знание — описание контекста, причинно-следственных связей, условий применимости. Модель учится понимать что, почему и когда срабатывает, но не запоминает конкретную сломанную последовательность действий.
CSRS использует двухуровневую валидацию как рычаг: грубый сигнал (успех/провал) даёт объективный якорь, а детальная генерация LLM обогащает каждый шаг рассуждениями. Из успешных траекторий берётся всё — и знания, и действия (модель учится "делай так"). Из провальных — только знания без действий (модель учится "понимай контекст, но не повторяй"). Это селективное обучение предотвращает закрепление неправильных паттернов, одновременно используя провалы для расширения понимания.
Рычаги управления:
- Категории извлечения (7 типов): Можешь убрать "Effect prediction" если задача простая (экономия токенов), или добавить свою категорию "Risk assessment" для критичных задач
- Условие успеха/провала: Вместо бинарной метки можешь использовать градацию ("полный успех / частичный / провал") и извлекать действия только из полных успехов
- Глубина рассуждений: Проси "кратко объясни" для простых задач, "пошагово с альтернативами" для сложных — контролируешь детальность анализа
- Число траекторий: 3-5 траекторий для быстрого инсайта, 10-20 для глубокого понимания паттернов
Шаблон промпта
Я выполняю задачу: {описание задачи}
Вот мои траектории (попытки):
ТРАЕКТОРИЯ 1: {описание шагов} → {результат} → {УСПЕХ/ПРОВАЛ}
ТРАЕКТОРИЯ 2: {описание шагов} → {результат} → {УСПЕХ/ПРОВАЛ}
[добавь столько траекторий, сколько есть]
Задача:
1. Для УСПЕШНЫХ траекторий извлеки все знания:
- Прогресс: как двигался к цели на каждом шаге
- Состояние: что было до действия, какой контекст
- Эффект: что произошло после действия
- Самоанализ: почему это решение сработало
- Проверка: подтвердилось ли ожидание
- Намерение: какую цель преследовал
- Действие: что конкретно делал (можно копировать)
2. Для ПРОВАЛЬНЫХ траекторий извлеки ТОЛЬКО знания (пункты 1-6), НЕ предлагай повторять действия
3. На основе извлечённых знаний предложи улучшенную стратегию для следующей попытки
Принцип: из успехов учись всему, из провалов — только пониманию контекста и причин, но не копируй сломанные паттерны.
Что подставлять:
- {описание задачи} — твоя общая цель (одним предложением)
- {описание шагов} — что делал на каждой попытке (3-5 ключевых действий)
- {результат} — что получилось (измеримо: метрики, факты, исходы)
- {УСПЕХ/ПРОВАЛ} — итоговая оценка попытки
Если есть частичный успех, уточни: "ЧАСТИЧНЫЙ УСПЕХ: сработало X, провалилось Y" — модель извлечёт действия только для успешной части.
Ограничения
⚠️ Требует итеративности: Метод работает через циклы "генерация → проверка → извлечение → обучение". Для разового запроса в чате получишь анализ, но не самоулучшающийся цикл. Полная ценность раскрывается при повторяющихся задачах, где каждая итерация улучшает следующую.
⚠️ Зависит от качества валидации: Если бинарная метка "успех/провал" неточна (субъективная оценка вместо объективной верификации), извлечённые знания будут шумными. Работает лучше всего для задач с чёткими критериями успеха (задача выполнена / не выполнена), хуже для субъективных оценок (текст красивый / некрасивый).
⚠️ Провалы должны быть информативными: Если траектория провалилась на первом же шаге, извлекать почти нечего. Метод эффективен когда провальные траектории доходят до середины/конца задачи — тогда есть контекст для анализа. Ранние провалы дают мало знаний.
Ресурсы
Step-GUI Technical Report — исследование StepFun (GELab-Team) о системе обучения GUI-агентов через калиброванные награды, включает описание CSRS, архитектуры GUI-MCP, бенчмарка AndroidDaily. Авторы: StepFun Research Team.
Связанные концепции из работы: Error-driven knowledge injection (конвертация ошибок выполнения в VQA-пары для целевого закрытия пробелов), Pass-rate labeling (оценка качества через множественные попытки), Curriculum learning (от простых задач к сложным).
