CONTEXT_OPTIMIZATION_EXPLANATION.md•6.08 kB
# 🔧 Решение Проблемы Переполнения Контекста
## Проблема
Во время анализа рынка контекст переполнялся, и задача не могла быть завершена в рамках одного контекстного окна. Процесс "крутился по кругу" и не доходил до решения.
### Корневые Причины:
1. **Дублирование анализа:**
- `scan_market` уже вызывает `analyze_asset` для каждого кандидата
- Протокол требовал делать `analyze_asset` ЕЩЕ РАЗ для 20-30 активов
- Результат: один и тот же актив анализировался дважды
2. **Накопление огромного объема данных:**
- `analyze_asset` возвращает огромный объем данных для каждого таймфрейма:
- Все индикаторы (RSI, MACD, BB, EMA, ATR, ADX, Stochastic, и т.д.)
- Multi-TF анализ (5m, 15m, 1h, 4h, 1d)
- Паттерны, уровни S/R, Volume Profile
- Для 20-30 активов это тысячи строк данных в контексте
3. **Неэффективная фильтрация:**
- Протокол требовал анализировать 200-500 активов на УРОВНЕ 1
- Затем 50-100 на УРОВНЕ 2
- Затем 20-30 на УРОВНЕ 3 с полным `analyze_asset`
- Все данные накапливались в контексте
4. **Отсутствие использования уже полученных данных:**
- `scan_market` уже возвращает `analysis`, `score`, `probability`, `entry_plan`
- Но протокол игнорировал эти данные и требовал повторный анализ
## Решение
Создан **оптимизированный протокол** (`prompts/market_analysis_protocol_optimized.md`), который:
### 1. Использует Результаты scan_market Напрямую
**БЫЛО (неэффективно):**
```
scan_market() → получаем список
→ для каждого: analyze_asset() // ДУБЛИРОВАНИЕ!
→ накопление огромного объема данных
```
**СТАЛО (оптимизировано):**
```
scan_market() → получаем список с УЖЕ готовым analysis
→ используем analysis напрямую
→ дополнительный анализ ТОЛЬКО для топ 3-5
```
### 2. Ограничивает Количество Активов
**БЫЛО:**
- УРОВЕНЬ 1: 200-500 активов
- УРОВЕНЬ 2: 50-100 активов
- УРОВЕНЬ 3: 20-30 активов с `analyze_asset`
**СТАЛО:**
- ШАГ 1: 50-80 активов (из `scan_market` + `find_*`)
- ШАГ 2: 10-20 активов (фильтрация по score)
- ШАГ 3: 3-5 активов (детальный анализ)
### 3. Немедленная Фильтрация
**Правило:** Отбрасывать слабые результаты сразу, не хранить в контексте.
```
Если score < 7.0 → исключить сразу
Если probability < 65% → исключить сразу
Если volume < $1M → исключить сразу
```
### 4. Детальный Анализ Только для Лучших
**Правило:** `analyze_asset` ТОЛЬКО для топ 3-5 кандидатов с score >= 8.0
**Не делать:**
- ❌ `analyze_asset` для всех 20-30 активов
- ❌ `get_kline` для всех активов на всех TF
- ❌ Накопление промежуточных данных
**Делать:**
- ✅ Использовать `analysis` из `scan_market` результатов
- ✅ Использовать `score` и `probability` из `scan_market`
- ✅ Детальный анализ ТОЛЬКО для финальных кандидатов
## Результат
### До Оптимизации:
- ~50-100 вызовов инструментов
- Анализ 20-30 активов с полным `analyze_asset`
- Тысячи строк данных в контексте
- Переполнение контекста → невозможность завершить задачу
### После Оптимизации:
- ~10-12 вызовов инструментов
- Детальный анализ только 3-5 топ кандидатов
- Минимальное накопление данных
- Задача завершается в рамках одного контекста ✅
## Использование
1. **Читай оптимизированный протокол:**
```
prompts/market_analysis_protocol_optimized.md
```
2. **Следуй правилам:**
- Используй результаты `scan_market` напрямую
- НЕ вызывай `analyze_asset` повторно для уже проанализированных активов
- Фильтруй и отбрасывай слабые результаты сразу
- Детальный анализ ТОЛЬКО для топ 3-5 кандидатов
3. **Обновленные инструкции:**
- `prompts/agent_core_instructions.md` обновлен с ссылкой на оптимизированный протокол
- `prompts/market_analysis_protocol.md` содержит предупреждение об использовании оптимизированной версии
## Ключевые Принципы
> **Используй то, что уже есть.**
> **Анализируй детально только лучшее.**
> **Отбрасывай слабое сразу.**
---
*Создано: 2024*
*Версия: 1.0*