🧠 Что это
Iterative Context Retrieval (итеративное извлечение контекста) — это паттерн для многоагентных рабочих процессов, решающий проблему «контекстного дефицита» у дочерних агентов. Когда под-агент создаётся для выполнения конкретной задачи, он часто не знает, какие файлы, термины или архитектурные паттерны релевантны. Стандартные подходы — передать всё (переполнение токенов) или ничего (потеря точности) — не работают. Предлагается цикл из четырёх фаз: Dispatch (отправка широкого запроса), Evaluate (оценка релевантности), Refine (уточнение запроса) и Loop (повтор до 3 раз).
⚙️ Как работает
Паттерн реализует четырёхфазный цикл, который постепенно сужает поиск нужного контекста.
📦 1. Dispatch (отправка)
Начинается с широкого запроса: указываются маски файлов (src/**/*.ts), ключевые слова (authentication, user, session) и исключения (*.test.ts). Задача — собрать как можно больше потенциально релевантных кандидатов.
# Пример начального запроса
patterns: ['src/**/*.ts', 'lib/**/*.ts']
keywords: ['authentication', 'user', 'session']
excludes: ['*.test.ts', '*.spec.ts']
🔍 2. Evaluate (оценка)
Каждый найденный файл оценивается по шкале от 0 до 1:
- 0.8–1.0 — прямо реализует целевую функцию
- 0.5–0.7 — содержит связанные паттерны или типы
- 0.2–0.4 — слабо связан
- 0–0.2 — нерелевантен, исключается
Также фиксируются пробелы в контексте — что ещё не найдено.
🔧 3. Refine (уточнение)
На основе оценки уточняется запрос:
- Добавляются новые паттерны из высокорелевантных файлов
- Добавляются новые ключевые слова (например,
jwt, refresh, throttle)
- Исключаются пути с низкой релевантностью
- Определяются фокус-области для устранения пробелов
🔄 4. Loop (цикл)
С уточнённым запросом повторяются фазы 1–3. Максимум 3 цикла. Цикл прерывается досрочно, если набрано минимум 3 файла с релевантностью ≥ 0.7 и нет критических пробелов.
🧩 Когда использовать
- Генерация под-агентов, которым нужен контекст кодовой базы, но неизвестно заранее, какие файлы понадобятся.
- Многоагентные рабочие процессы, где каждый агент должен быстро погрузиться в задачу без перегрузки контекстом.
- Отладка ошибок, когда нужно найти корень проблемы — пример: «исправить ошибку истечения токена» → последовательно находятся
auth.ts, tokens.ts, session-manager.ts.
- Реализация новых функций — например, добавление rate limiting, когда кодовая база использует термин
throttle, а не rate limit.
💡 Важно знать
- Начинайте широко, не переопределяйте начальный запрос — первые циклы часто раскрывают реальную терминологию проекта.
- Учитесь на каждом цикле: даже низкорелевантные файлы дают новые ключевые слова и паттерны.
- Не гонитесь за полнотой: три файла с релевантностью ≥ 0.7 часто полезнее десяти средних.
- Исключайте уверенно: если файл получил < 0.2, он вряд ли станет полезным в следующих циклах.
- Оптимизируйте циклы: максимум 3, иначе тратятся лишние токены без значительного прироста качества.
🛠 Интеграция с агентами
В промпте агента можно использовать инструкцию:
Для извлечения контекста выполни:
- Начни с широкого поиска по ключевым словам.
- Оцени каждый файл по шкале 0–1.
- Определи, какого контекста не хватает.
- Уточни запрос и повтори (макс. 3 раза).
- Верни файлы с релевантностью ≥ 0.7.
Комментарии
Комментариев пока нет. Будьте первым.