3,583 papers
arXiv:2610.04658 79 3 окт. 2026 г. FREE

RETRACE: из запутанной истории PR в готовый опыт починки CI по проблемам

КЛЮЧЕВАЯ СУТЬ
Обнаружено: старый запрос на слияние кода (PR) почти не помогает агенту чинить упавшие автопроверки (CI). Метод RETRACE позволяет превратить кашу из старого PR в чистые записи «одна проблема → правки, которые её решили». Фишка: смотри на PR с двух сторон и оставляй только то, что подтверждает лог CI. Первый взгляд идёт от финальной разницы в коде (диффа) назад к ошибкам. Второй идёт по коммитам вперёд. Результат: доля задач, решённых с первой попытки, растёт с ~20% до ~32%.
Адаптировать под запрос
⚡

TL;DR

RETRACE — способ превратить историю старых pull request'ов (PR, запрос на слияние кода) в аккуратные записи «одна проблема → какие правки её решили». Модель смотрит на PR с двух сторон. Сначала от финального диффа назад: какие из оставшихся правок связаны с упавшими проверками. Потом по коммитам вперёд: когда правки появились, менялись или откатывались. Оба взгляда сверяются по логам CI, и в запись попадает только то, что подтверждается доказательствами. Запись хранится на трёх уровнях: конкретная правка, стратегия для похожего проекта, общий паттерн.

Главная находка: если дать агенту старый PR целиком, пользы мало. В PR перемешаны несколько проблем, неудачные попытки, откаты и посторонние правки. Агент получает много контекста и не понимает, какая правка лечит какую проблему. Поэтому «история целиком» (а также прямое повторение прошлого плана починки) работает слабо. Если же разобрать историю по проблемам, доля задач, решённых с первой попытки, растёт с ~20% до ~32%. Это рост примерно в полтора раза.

Суть метода в четыре шага. Упорядочить логи CI. Выделить кандидатов на «проблема → правка» двумя взглядами, от финала и от истории. Сверить их и выбросить всё без доказательств. Записать каждую проблему на трёх уровнях абстракции. Для новой аварии метод отдельно подбирает опыт под каждую проблему, а не под весь сбой сразу.


🔬

Схема метода

ПОДГОТОВКА (по каждому старому PR)
ШАГ 0: Разобрать логи CI → список ошибок, статус проверок (✓ / ✕ / не дошли), зависимости шагов
ШАГ 1: Взгляд от финала (endpoint) → финальный дифф разбит на группы,
        для каждой: «какую ошибку лечит?» Нет связи с логами — выбросить
ШАГ 2: Взгляд по истории (development) → коммиты по порядку,
        для каждого: «какие ошибки закрывает?» Откаты и посторонние правки — отдельно
ШАГ 3: Сверка → пары записей: equivalent / complementary / conflicting / distinct
        Поле без доказательства из истории — удалить
ШАГ 4: Три уровня записи → L1 конкретика → L2 стратегия → L3 общий паттерн

ПРИМЕНЕНИЕ (новая авария CI)
ШАГ 5: Разбить сбой на атомарные проблемы (в т.ч. скрытые за ранними падениями)
ШАГ 6: Для каждой проблемы отдельно подобрать записи L1, L2, L3
        и отфильтровать по совпадению механизма сбоя
ШАГ 7: Добавить зависимые проблемы («починишь A — вылезет B») и повторяющиеся для этого репозитория
ШАГ 8: Упорядочить, чинить по одной, в конце прогнать весь CI целиком

Шаги 0–4 можно сделать в одном длинном промпте или в нескольких запросах подряд. Шаги 5–8 — отдельная работа агента.


🚀

Пример применения

Задача: команда интернет-магазина на Python держит CI в GitLab. Разработчик месяц назад чинил красный пайплайн в PR «Обновление зависимостей». В PR 9 коммитов, правки перемешаны. Сейчас пайплайн упал снова, и хочется превратить старый PR в урок, который не утонет в шуме.

Промпт:


Ты разбираешь историю починки CI. Твоя задача — для каждой проблемы
найти правки, которые её решили, и отбросить всё остальное.




Шаг setup: ERROR: No matching distribution found for httpx==0.19.0
Шаги unit-tests и integration-tests: не запускались
Падение при повторном прогоне: AttributeError: 'Session' object has no attribute 'get_async'


c1: requirements.txt: httpx 0.18.2 → 0.25.0
c2: api_client.py: Session() → Client()
c3: api_client.py: попробовал AsyncClient()
c4: api_client.py: откатил AsyncClient(), вернул Client()
c5: utils.py: переименовал хелпер format_price → fmt_price


requirements.txt: httpx 0.18.2 → 0.25.0
api_client.py: Session() → Client()
utils.py: format_price → fmt_price




1. Организуй логи: ошибки, статус каждой проверки (прошла / упала / не дошла), зависимости между шагами. Отметь, какие проблемы могли скрываться за ранними падениями.
2. ВЗГЛЯД ОТ ФИНАЛА: разбей финальный дифф на группы связанных правок. Для каждой группы скажи, какую ошибку из логов она лечит. Если связи в логах нет — пометь «не связано».
3. ВЗГЛЯД ПО ИСТОРИИ: пройди по коммитам по порядку. Для каждого скажи, какие ошибки он закрывает. Откаченные и посторонние правки пометь отдельно и не включай в итоговую починку.
4. СВЕРКА: сравни записи двух взглядов. Для каждой пары укажи: equivalent / complementary / conflicting / distinct. Equivalent объедини, complementary склей, conflicting проверь по логам, коммитам и финальному диффу.
5. Для каждого поля записи назови доказательство из входных данных. Нет доказательства — удали поле.



По каждой проблеме:
- Проблема и вероятная причина
- Какие правки её решили (файлы, символы)
- Доказательство (строка лога, коммит)
- Зависимость: какая проблема стала видна только после этой
Затем три уровня:
L1 — конкретная запись только по этой проблеме
L2 — стратегия: замени имена файлов и функций на роли; укажи признаки сбоя, шаги починки, как проверить, ловушки
L3 — общий паттерн без привязки к репозиторию: механизм сбоя, признаки, принципы починки, условия применимости, какие проблемы обычно вылезают следом

Результат: модель выдаст отдельные записи по двум проблемам: версия пакета и смена API клиента. Переименование хелпера будет помечено как не связанное с CI. Попытка с AsyncClient будет в истории как откаченная и не попадёт в итоговую починку. Для каждой записи будут указаны доказательства. Дальше пойдут три слоя (L1, L2, L3). В L3 видна связь «обновление версии открыло поломку API». Её можно сохранить в файл с playbook'ом команды.


🧠

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

Слабость. PR — это «сырой» результат работы человека. В нём правки по разным проблемам, пробы, откаты и посторонний рефакторинг. Итоговый дифф показывает только сумму изменений, а зелёный CI — что PR прошёл целиком. Если отдать такой PR агенту как пример, он не видит, какая правка лечит какую проблему. Старый план целиком тоже плохо переносится на новый сбой, потому что в нём та же каша.

Сильная сторона. LLM хорошо отвечает на узкие вопросы по небольшому куску: «эта группа правок связана с этой ошибкой?», «эти две записи об одном и том же?». Также она хорошо переписывает конкретику в более общий вид.

Как метод использует это. Большая запутанная задача превращается в много маленьких проверок. У двух взглядов разные слепые пятна. Финальный дифф не знает про откаты, история не знает, что в итоге осталось. Сверка по логам CI и требование доказательства для каждого поля отсекают выдумки. Три уровня абстракции нужны, потому что конкретная правка плохо переносится в другой проект, а общий паттерн теряет детали. Выбор уровня остаётся за задачей.

Рычаги управления: - Убери один из взглядов — получишь версию для случая, когда нет истории коммитов (после squash остаётся только взгляд от финала). Авторы показали: оба взгляда вместе лучше любого одного. - Требование «доказательство для каждого поля» — самый важный рычаг против выдумок. Не ослабляй. - Уровни L1/L2/L3 — для того же проекта бери L1 и L2, для другого — L3. - Разбивка по проблемам — подбирай опыт отдельно под каждую проблему, а не под весь сбой.


📋

Шаблон промпта


Ты разбираешь историю починки {тип_системы}. Твоя задача — для каждой проблемы найти
изменения, которые её решили, и отбросить всё остальное.



{логи_ошибок_и_статусы_проверок}
{список_коммитов_по_порядку}
{финальный_дифф}



1. Организуй логи: ошибки, статус каждой проверки (прошла / упала / не дошла), зависимости между шагами. Отметь проблемы, которые могли скрываться за ранними падениями.
2. ВЗГЛЯД ОТ ФИНАЛА: разбей финальный дифф на группы связанных правок. Для каждой — какую ошибку из логов она лечит. Нет связи — «не связано».
3. ВЗГЛЯД ПО ИСТОРИИ: пройди по коммитам по порядку. Для каждого — какие ошибки он закрывает. Откаты и посторонние правки — отдельно, в итог не включай.
4. СВЕРКА: для каждой пары записей двух взглядов укажи equivalent / complementary / conflicting / distinct.
   - equivalent → объедини
   - complementary → склей
   - distinct → оставь раздельно
   - conflicting → проверь по логам, коммитам и финальному диффу
5. Для каждого поля записи укажи доказательство из входных данных. Нет доказательства — удали поле.



Для каждой проблемы:
- Проблема и вероятная причина
- Какие правки её решили
- Доказательство
- Зависимости (что обнаружилось только после этого исправления)
L1: конкретная запись только по этой проблеме
L2: стратегия — имена файлов и функций заменены ролями; признаки сбоя, шаги починки, проверка, ловушки
L3: общий паттерн — механизм сбоя, признаки, принципы починки, условия применимости, типичные проблемы-«хвосты»
Правило: L2 и L3 не добавляют новых фактов, которых нет в L1.

Что подставлять: - {тип_системы} — CI, сборка, миграции, деплой. - {логи_ошибок_и_статусы_проверок} — выжимка из логов с пометкой, какие шаги не запускались. - {список_коммитов_по_порядку} — сообщения и краткое описание правок (git log -p, если влезает). - {финальный_дифф} — суммарный дифф между сломанной и зелёной версией.

🚀 Быстрый старт — вставь в чат:

Вот шаблон RETRACE. Адаптируй под мою задачу: {опиши свою систему и что нужно разобрать}.
Задавай вопросы, чтобы заполнить поля.

[вставить шаблон выше]

LLM спросит, какие логи, коммиты и дифф у тебя есть, есть ли история коммитов или только итоговый дифф, какие проверки не дошли до запуска. Эти данные нужны: метод держится на сверке двух взглядов по логам, и без них доказательства для записей брать неоткуда.


⚠️

Ограничения

⚠️ Нужна история: без промежуточных коммитов остаётся один взгляд, от финального диффа. Авторы показали, что оба взгляда вместе лучше. Один взгляд даёт результат слабее.

⚠️ Полный метод требует инженерии: автоматический подбор по базе записей (поиск по похожести, фильтр, порядок проблем, последовательная починка в одном репозитории) — это код. В обычном чате воспроизводится только этап превращения одного PR в записи. Подбор записей под новую аварию придётся делать руками или собирать автоматизацию.

⚠️ Абсолютный результат скромный: лучший результат — около трети задач, решённых с первой попытки. Метод заметно помогает, но не заменяет разработчика.

⚠️ Узкая область: метод показан на починке CI в репозиториях. На других задачах, где опыт «запутан», идея может работать, но исследование этого не проверяло.

⚠️ Нет готовых промптов: в доступном тексте нет дословных промптов авторов (они, видимо, в приложении). Шаблон выше собран по описанию метода.

⚠️ Цена: много вызовов модели на каждый старый PR и на каждую новую аварию. Для редких сбоев и небольшой истории может не окупиться.

⚠️ Проверка авторов: бенчмарк создан теми же авторами. Независимых проверок в тексте нет.


🔍

Как исследовали

Команда взяла собственный набор CI-Repair-Bench: 565 починок PR из 101 репозитория, 12 категорий сбоев. Задачи тяжёлые: в среднем 10 файлов и 240 строк правок, в разы больше, чем в SWE-bench. В 84% случаев в одном PR несколько разных проблем. Именно поэтому «просто дать PR как пример» не работает.

Сравнивали три варианта: без опыта, повторение старого плана починки (Historical-Plan) и RETRACE. Проверяли двух агентов и разные модели. С mini-SWE-agent и MiniMax-M2.5 доля решённых с первой попытки выросла с 19,6% до 31,9%, с DeepSeek-V4-Flash — с 23,3% до 32,8%. Codex на подмножестве вырос с 15,5% до 27,5%. Успех засчитывался, только если проходил весь CI целиком.

Удивительный момент: повторение старого плана дало результат не лучше, а местами хуже варианта без опыта — RETRACE обошёл его на 13,5 пункта (против 12,3 пункта над «без опыта»). Нерасчленённая история не просто бесполезна, она путает. Абляции показали, что объединение двух взглядов лучше любого одного во всех настройках. Практический вывод: качество опыта важнее его объёма.


💡

Адаптации и экстраполяции

🔧 Техника: добавить «ловушки» → меньше повторных ошибок

В уровень L2 добавляй пункт «что пробовали и откатили, и почему не сработало»:

L2 дополнительно: раздел «Ловушки» — попытки из истории коммитов, которые были откачены,
и причина (из логов или сообщений коммитов). Если причины в данных нет — пиши «причина неизвестна».

Откаты — самое ценное, что теряется в итоговом диффе. Но это моё дополнение: авторы упоминают «известные ловушки» (pitfalls) в L2, а отдельный раздел из откатов — уже адаптация.

Экстраполяция: L3-паттерны в файл инструкций агента

Если накопил несколько L3-паттернов, положи их в CLAUDE.md / AGENTS.md:

## Известные паттерны поломок CI (из истории PR)
При падении CI сначала разбей сбой на отдельные проблемы и пойми, какие проверки не запускались.
Затем сверься с паттернами ниже. Применяй паттерн, только если совпадают механизм сбоя
и условия применимости.

### Паттерн: обновление версии зависимости открывает несовместимость API
- Признаки: ошибка установки пакета в setup; после правки версии — AttributeError / ImportError в тестах
- Починка: обнови версию, затем найди вызовы изменённого API и исправь их
- Условие применимости: пакет менял мажорную/минорную версию
- Типичный «хвост»: падение интеграционных тестов, которые раньше не запускались

Авторы такой формат не проверяли (у них опыт подбирается автоматически и отдельно под каждую проблему). Идею «чинить по одной проблеме в порядке зависимостей и после всего прогнать полный CI» можно записать и прямо в инструкцию агенту.


🔗

Ресурсы

  • Название работы: RETRACE: From Entangled Repair Histories to Reusable Experience for CI Repair
  • Авторы: Rabeya Khatun Muna, Md Ahasanuzzaman, Md Nakhla Rafi, Yisen Xu, Jinqiu Yang, Tse-Hsun (Peter) Chen
  • Организации: SPEAR Lab (Software Performance, Analysis, and Reliability), Concordia University
  • Бенчмарк: CI-Repair-Bench (Muna et al., 2026) — 565 починок, 101 репозиторий, 12 категорий сбоев
  • Агенты и модели: mini-SWE-agent, Codex, MiniMax-M2.5, DeepSeek-V4-Flash

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

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

Обнаружено: старый запрос на слияние кода (PR) почти не помогает агенту чинить упавшие автопроверки (CI). Метод RETRACE позволяет превратить кашу из старого PR в чистые записи «одна проблема → правки, которые её решили». Фишка: смотри на PR с двух сторон и оставляй только то, что подтверждает лог CI. Первый взгляд идёт от финальной разницы в коде (диффа) назад к ошибкам. Второй идёт по коммитам вперёд. Результат: доля задач, решённых с первой попытки, растёт с ~20% до ~32%.

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

В PR всё свалено в кучу. Там несколько проблем, неудачные пробы, откаты и посторонний рефакторинг. Итоговый дифф показывает только сумму правок. Он не знает про откаты. История коммитов знает про откаты, но не знает, что в итоге осталось. У каждого взгляда своё слепое пятно. Сверяй два взгляда между собой и по логам: выжило только то, что подтверждено доказательством. Процесс такой: разобрать логи → взгляд от финала → взгляд по истории → сверка → запись на трёх уровнях. Каждая пара записей получает метку: equivalent (то же самое), complementary (дополняют), conflicting (спорят) или distinct (разные). Три уровня записи: L1 — конкретная правка, L2 — стратегия для похожего проекта, L3 — общий паттерн. Это как карта: L1 — план одной улицы, L3 — схема всего города. Для своего проекта бери L1 и L2, для чужого — L3.

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

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

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

Починка автопроверок (CI) в репозиториях → конкретно для случаев, когда в истории есть старые PR с красным пайплайном, который потом позеленел. Особенно полезно, когда за ранними падениями прячутся другие ошибки: починил одну, вылезла следующая. Если истории коммитов нет (после склейки остался только итоговый дифф), работает один взгляд, и результат слабее. НЕ подходит для редких сбоев и маленькой истории: на каждый PR нужно много вызовов модели, и это может не окупиться. Не ждите чуда: лучший результат — около трети задач с первой попытки. Бенчмарк сделан теми же авторами, независимых проверок нет. Полный метод с автоподбором записей под новую аварию требует кода. В обычном чате воспроизводится только первая половина: превращение одного PR в записи.

Мини-рецепт

1. Собери три куска: лог падения, коммиты по порядку, финальный дифф. Отметь шаги проверки, которые вообще не запускались.
2. Разбери логи: список ошибок, статус каждой проверки (прошла / упала / не дошла), зависимости шагов.
3. Взгляд от финала: раздели дифф на группы правок. Для каждой напиши, какую ошибку она лечит. Нет связи в логах — «не связано».
4. Взгляд по истории: иди по коммитам по порядку. Откаты и посторонние правки складывай отдельно, в итог их не бери.
5. Сверь: пометь пары как equivalent, complementary, conflicting или distinct. Спорные случаи проверь по логам и диффу.
6. Потребуй доказательства: для каждого поля — строка лога или коммит. Нет доказательства — поле долой.
7. Запиши три уровня: L1 — конкретика, L2 — стратегия с ролями вместо имён файлов, L3 — общий паттерн. Правило: L2 и L3 не добавляют фактов, которых нет в L1.
8. Сохрани в файл команды. При новой аварии разбей её на отдельные проблемы и подставляй записи по одной, а не весь сбой разом.

Задай роль: Ты разбираешь историю починки CI. Для каждой проблемы найди правки, которые её решили, и отбрось всё остальное.

Примеры

[ПЛОХО] : Вот старый PR с 9 коммитами. Почини похожую ошибку в нашем CI.
[ХОРОШО] : Ты разбираешь историю починки CI. Вот лог, коммиты и финальный дифф. Шаг 1: выпиши ошибки и статус каждой проверки (прошла / упала / не дошла). Шаг 2: разбей финальный дифф на группы и скажи, какую ошибку лечит каждая. Нет связи в логе — пиши «не связано». Шаг 3: пройди по коммитам по порядку. Откаты и посторонние правки пометь отдельно. Шаг 4: сверь два списка, пометь пары equivalent / complementary / conflicting / distinct. Для каждого поля назови доказательство, нет доказательства — удали поле. Выдай по каждой проблеме записи L1, L2, L3. Что получится: отдельные записи про версию пакета и про смену API клиента. Переименование хелпера в utils.py попадёт в «не связано». Откаченная проба с AsyncClient не попадёт в итоговую починку. В L3 останется связь «обновление версии открыло поломку API»: её можно положить в файл с памяткой команды.
Источник: RETRACE: From Entangled Repair Histories to Reusable Experience for CI Repair
ArXiv ID: 2610.04658 | Сгенерировано: 2026-10-06 05:00

Проблемы LLM

ПроблемаСутьКак обойти
Сырой пример с несколькими проблемами сбивает модельДаёшь модели прошлый случай целиком. Это история правок, переписка или разбор инцидента. Внутри перемешано всё: несколько проблем, неудачные пробы, откаты, посторонние правки. Итог показывает только сумму изменений. Модель не видит, какое действие лечит какую проблему. Она копирует лишнее или берёт не то. Старый план целиком тоже плохо переносится на новый случай, потому что в нём та же кашаНе давай сырой случай как пример. Сначала разбери его на записи «одна проблема → какие действия её решили». Откаты и посторонние правки выбрось. Дай модели только эти записи

Методы

МетодСуть
Два взгляда на один случай со сверкой — чистые записи «проблема → решение»Разбери запутанный случай дважды. Взгляд 1, от итога: возьми финальный результат и разбей на группы. Для каждой спроси: «Какую проблему это лечит?» Нет связи с логами или симптомами — выбрось. Взгляд 2, по ходу событий: иди по шагам по порядку. Для каждого спроси: «Какие проблемы он закрывает?» Откаты и посторонние шаги помечай отдельно. Сверка: сравни пары записей из двух взглядов. Метки: equivalent (то же самое — объедини), complementary (дополняют — склей), distinct (разное — оставь раздельно), conflicting (спорят — проверь по исходным данным). Почему работает: у взглядов разные слепые пятна. Итог не знает про откаты. История не знает, что в итоге осталось. Вместе они отсекают лишнее. Каждый вопрос узкий, и модель отвечает на него лучше, чем на «разберись во всём». Для каждого поля записи требуй доказательство из входных данных: строку лога, номер шага. Нет доказательства — поле удаляется. Это главный защитный механизм от выдумок. Когда да: есть и итог, и история шагов, случай содержит несколько проблем. Примеры: починка сборки, разбор инцидента, правки в договоре, длинная переписка с поддержкой. Когда нет: истории нет (остаётся один взгляд, результат слабее), случай простой и с одной проблемой. Метод проверен только на починке автопроверок кода. Перенос на другие области вероятен, но не доказан
Три уровня записи — выбор нужной конкретики под задачуКаждую готовую запись о проблеме сохрани в трёх видах. L1: конкретика — файлы, имена, точные правки. L2: стратегия — имена заменены ролями («файл с зависимостями», «клиент API»). Добавь признаки сбоя, шаги, проверку, ловушки. L3: общий паттерн без привязки к проекту — механизм сбоя, признаки, принципы, условия применимости, какие проблемы обычно вылезают следом. Правило: L2 и L3 не добавляют новых фактов, которых нет в L1. Почему работает: конкретная правка плохо переносится в другой проект. Общий паттерн теряет детали. Один уровень не годится для всех задач. Применяй: для того же проекта бери L1 и L2. Для другого проекта бери L3. Просто попроси модель переписать запись три раза с нужным уровнем абстракции
📖 Простыми словами

RETRACE: From Entangled Repair Histories to Reusable Experience for CI Repair

arXiv: 2610.04658

Пытаться научить AI чинить тесты по старым pull request’ам напрямую — это полный провал. В сыром PR всегда намешана каша: случайный рефакторинг, тупиковые попытки и откаты правок. Модель видит, что в финале сборка позеленела, но не понимает, какая строчка спасла ситуацию, а какая была просто случайным шумом. Метод RETRACE решает корень проблемы: он распутывает эту историю и оставляет только чистую связку «одна ошибка — одно точное решение».

Это как учиться готовить блюдо по содержимому мусорного ведра на кухне ресторана. Там лежат разбитая тарелка, сгоревший чеснок и формально идеальный стейк на выходе. Непонятно, что именно привело к успеху, а что шеф просто выкинул в приступе ярости. Агент без разбора делает то же самое: слепо копирует чужой хаос, пытаясь применить неудачные кулинарные эксперименты к совершенно другой проблеме.

Чтобы отделить зёрна от плевел, система просвечивает историю правок с двух сторон. Сначала идёт обратный анализ от финального диффа к упавшим проверкам, затем — прямой прогон по коммитам, чтобы увидеть, когда изменения появились и отменялись. Всё это сверяется с логами тестов, а опыт раскладывается на три уровня абстракции: конкретный патч, тактика под проект и общий паттерн починки. Никаких догадок — только железобетонные пруфы.

Тестировали подход на Python и GitLab, но механика универсальна для любого стека. У тебя может быть GitHub Actions на Node.js или древний Jenkins на Java — суть не меняется. Вместо того чтобы заставлять нейронку страдать над чужим диффом из 9 хаотичных коммитов, ты скармливаешь ей выжимку доказанного опыта. Инженерия переходит от слепого копирования чужих костылей к нормальной базе знаний.

Главный урок: хватит скармливать моделям сырые логи и ждать чудес. Грязный контекст рождает бредовые патчи. Либо ты используешь RETRACE и превращаешь историю коммитов в структурированные уроки, либо агент продолжит тащить в твой код чужие метания и ронять прод. Выбирай: системный разбор ошибок или бесконечные ночные дебаги вручную.

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

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

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