Лекция 6
$3 vs $0.30 — в чём разница
BPE, валюта, расходы
Зоны, позиции, bias
Пожиратели и кривая деградации
Вход, история, структура работы
Контекст за пределами сессии
4 типичные ловушки
Выводы и задание
Одна модель, один инструмент — результат отличается на порядок
$3.00 за задачу
4 итерации, каждая — уточнение, откат, повтор. Модель путается в контексте, забывает ранние инструкции, генерирует лишнее.
Результат: посредственный. Работает, но с костылями. Половину пришлось переделывать руками.
$0.30 за задачу
1 итерация. Чёткая структура запроса, нужный контекст подан заранее, лишнее отсечено. Модель сразу попала в цель.
Результат: чистый, готовый к коммиту. Без правок.
Разница не в модели и не в промпте. Разница — в управлении контекстом.
Context Engineering — осознанное проектирование того, что попадает в контекстное окно модели: что подать, в каком объёме, в каком порядке — и что отсечь.
Фокус на формулировке запроса. «Как спросить». Один текст, одна попытка.
Фокус на всём контекстном окне. «Что модель видит в момент генерации». Системный промпт, история, файлы, tool outputs, memory — всё вместе.
Prompt Engineering — подмножество Context Engineering. Хороший промпт необходим, но недостаточен: если контекст забит мусором, формулировка не спасёт.
Контекстное окно модели — фиксированный бюджет. У Claude Sonnet — 200K токенов. Каждый токен, отправленный в окно, тратит из этого бюджета.
Каждое слово, каждый символ кода, каждый вывод инструмента — это расход. Когда бюджет исчерпан, модель либо теряет ранний контекст, либо сессия останавливается.
Задача context engineer'а: максимизировать полезную информацию на единицу бюджета. Не «впихнуть побольше», а подать нужное в нужном объёме.
Прежде чем управлять — нужно понимать единицу измерения
Токен — минимальная единица текста, которую видит модель. Не буква, не слово — нечто среднее. Токенизатор разбивает любой текст на последовательность токенов из фиксированного словаря.
"Привет, мир!"
→ ["При", "вет", ",", " мир", "!"] — 5 токенов
"Hello world"
→ ["Hello", " world"] — 2 токена
Русский текст в ~1.5-2 раза дороже английского по токенам.
Алгоритм, которым обучается токенизатор. Начинает с отдельных байтов и шаг за шагом склеивает самые частые пары.
Начинаем с байтов: каждый символ — отдельный токен
Находим самую частую пару (например, t+h) и склеиваем в один токен
Повторяем до нужного размера словаря (~100K токенов)
Частые слова = 1 токен, редкие = несколько
BPE строит словарь по обучающим данным. Английского текста в них больше всего → английские слова компактнее. Кириллица, иероглифы, редкий код — дороже.
| Контент | Объём | Токены (примерно) | Доля окна 200K |
|---|---|---|---|
| Системный промпт (средний) | ~2 000 слов | ~3 000 | 1.5% |
| AGENTS.md / CLAUDE.md | ~1 500 слов | ~2 500 | 1.2% |
| Файл исходного кода (300 строк) | ~5 000 символов | ~2 000 | 1% |
Вывод ls -la (50 файлов) | ~3 000 символов | ~1 200 | 0.6% |
Полный package.json | ~2 000 символов | ~800 | 0.4% |
| Stack trace (ошибка) | ~1 500 символов | ~600 | 0.3% |
| 10 раундов диалога | ~8 000 слов | ~12 000 | 6% |
| Вся кодовая база (средний проект) | ~500 файлов | ~500 000+ | 250%+ |
Вывод: кодовая база не влезает целиком. Нужна стратегия отбора — что подать, а что отсечь.
Платим каждый запрос, нельзя уменьшить до нуля:
Обычно ~5-15% окна.
Растут с каждым ходом сессии:
Основной потребитель. Именно здесь — рычаг оптимизации.
Правило: минимизируй фиксированные, контролируй переменные. Контекст, который не помогает текущей задаче, — это шум, за который ты платишь.
Не буфер, а структура с зонами
Контекстное окно — максимальное количество токенов, которые модель видит одновременно. Всё, что за пределами, для модели не существует. Внутри — шесть чётких зон:
| Зона | Что в ней | Кто контролирует |
|---|---|---|
| System prompt | Инструкции инструмента, rules, skills | Инструмент + вы (CLAUDE.md, AGENTS.md) |
| MCP-схемы | Описания подключённых MCP-серверов и их tools | Инструмент |
| История диалога | Сообщения пользователя + ответы модели | Накапливается автоматически |
| Tool calls + результаты | Вызовы инструментов и их выходные данные | Агент |
| Текущий запрос | Ваше последнее сообщение | Вы |
| Ответ модели | Генерируемый текст | Модель |
Это не техническое ограничение, которое скоро «уберут». Это принципиальное устройство трансформерной архитектуры.
System prompt, MCP-схемы — присутствуют в каждой сессии, независимо от задачи.
Сократить: оптимизировать system prompt, подключать только нужные MCP-серверы.
История диалога, результаты вызовов инструментов — растут с каждым шагом агента.
Основное поле для управления контекстом.
Генерируемый текст — отдельная статья расходов.
Влиять можно лишь косвенно: через чёткость задачи и инструкции по формату вывода.
Каждая зона — статья бюджета. Одни зоны вы контролируете, другие — нет. Задача — минимизировать то, что не помогает текущей задаче.
Модель уделяет больше внимания началу и концу контекста. Середина длинного окна усваивается хуже.
| Модель | Контекстное окно |
|---|---|
| Claude 3.x / 4.x | 200 000 (Opus 4.6 / Sonnet 4.6 — до 1 000 000) |
| GPT-4.1 | 1 000 000 токенов |
| Gemini 1.5 / 2.x | 1–2 000 000 токенов |
| GLM 5.1 | 200 000 токенов |
Большое окно не устраняет bias: середина миллионного контекста усваивается не лучше, чем середина двухсоттысячного.
Главные пожиратели — не ваши промпты
В окне уже лежат:
50 токенов = 0.08% от того, что видит модель
Большую часть «голоса» в разговоре имеют не ваши слова, а то, что заложено заранее или накопилось в процессе.
Read файла — 2-5K токенов за вызов. Ответ MCP-сервера — 10-20K. За сессию десятки вызовов — все результаты оседают в истории.
После 20-30 шагов — легко 100K+ токенов. 80% объёма — устаревшие результаты инструментов из ранних шагов, которые уже не нужны.
10 MCP-серверов × 50 tools = тысячи токенов описаний. Присутствуют в каждом запросе. Не накапливаются — но всегда здесь.
Пересказ задачи, вводные фразы, повтор запроса «для ясности» — 5-15% каждого ответа. Не несут полезной нагрузки, но оседают в истории.
12 MCP-серверов «на всякий случай»
Расплывчатый запрос
30 шагов → 80K устаревших результатов
Контекст переполнен, модель теряет фокус
$3.00 — посредственный результат
3 целевых MCP-сервера
Конкретный запрос
1 проход — компактная история
Модель держит фокус на задаче
$0.30 — чистое решение
Качество не падает плавно по мере заполнения контекста.
Это скачок, а не наклон. К 70% — либо завершайте, либо сбрасывайте контекст.
Сокращение входа · Управление историей · Структура работы
Read с offset и limit — нужный фрагмент, а не весь файл. Grep с конкретным паттерном и фильтром по типу файла.
500 vs 5 000 токенов за один вызов. Умножьте на десятки вызовов в сессии.
Каждый подключённый MCP-сервер — фиксированные расходы в каждом запросе.
10 лишних серверов — тысячи «холостых» токенов. Подключайте только нужные для текущей сессии.
500 строк правил — ~3-5K токенов постоянного расхода.
Если инструкция не влияет на каждую сессию — выносите в skill или отдельный файл.
Смена сессии — не поражение. Задача сменилась, контекст накопился, фокус размылся — пора открыть чистое окно.
Артефакты на диске: файлы, конспекты, записи о решениях — обеспечивают передачу контекста без мусора.
compact сжимает накопленную историю в резюме.
Если история — 80% устаревших результатов инструментов — потери невелики. Если плотная и каждый шаг нёс решение — потери ощутимы.
Суммаризатор сохраняет: «что сделано», «к чему пришли».
Теряет: точные имена файлов, номера строк, результаты конкретных вызовов. Критические решения должны жить в файлах на диске.
Разбиение задачи на подзадачи — это про чистое окно для каждого субагента.
Субагент получает ровно тот контекст, который нужен для своей части, без истории всего процесса.
«Делегируем не потому что быстрее, а потому что один агент не удержит весь контекст»
Сначала — контекст, потом — задача. Не наоборот.
Если начинаете с задачи, а детали потом — модель уже построила первичное представление без части вводных.
Primacy/recency bias на практике: важная информация — до формулировки требования.
К третьей просьбе в той же сессии контекст забит артефактами первых двух.
Модель отвечает на третью задачу сквозь фильтр двух предыдущих.
Открытая сессия не сохраняет «фокус» — она накапливает помехи.
| Стратегия | На что влияет | Порядок экономии |
|---|---|---|
| Read/Grep с ограничениями | Переменные расходы на tool calls | 5-10x за один вызов |
| Подключать только нужные MCP-серверы | Фиксированные расходы (каждый запрос) | 1-5 тысяч токенов на запрос |
| Краткий и точный system prompt / AGENTS.md | Фиксированные расходы (каждый запрос) | 2-4 тысячи токенов на запрос |
| Новая сессия вместо накопления истории | Переменные расходы (история диалога) | Десятки тысяч токенов |
| Compact при шумной истории | Переменные расходы (история диалога) | 30-70% объёма истории |
| Декомпозиция на субагентов | Полный объём контекста задачи | Чистое окно для каждой части |
| Порядок: контекст → задача | Качество понимания при фиксированном объёме | Качественный, не количественный эффект |
Принцип: экономить на шуме, не на сигнале. Устаревшие результаты инструментов — шум. Подробное описание задачи и ограничений — сигнал.
Контекст за пределами одной сессии
Новая сессия — чистый лист. Агент не знает про вчерашние решения, выбранный стек, согласованные ограничения. Каждое «переоткрытие» — потраченные токены и риск противоречия.
| Уровень | Что хранит | Время жизни | Пример |
|---|---|---|---|
| Файлы проекта | Решения, правила | Пока в репо | CLAUDE.md, spec |
| Проектная память | Факты, предпочтения | Между сессиями | CC project memory |
| Персональная память | Роль, стиль | Между проектами | ~/.claude/memory/ |
Принцип: Memory — кэш, не архив. Хранить то, что дорого получить заново.
~/.claude/projects/<project>/memory/ — файлы с frontmatter, индекс MEMORY.md загружается в каждую сессию.
Дополнительные файлы подгружаются по ссылкам из индекса.
Memory bank через файлы в .kilocode/rules/memory-bank/, per-workspace.
С 2026 года рекомендуется использовать AGENTS.md.
Сессии сохраняются локально; межсессионная память — через сторонние расширения (opencode-mem и др.).
4 ловушки context engineering
Проблема: окно в 1-2M токенов создаёт иллюзию, что управление контекстом необязательно.
Решение: большое окно — запас прочности, не приглашение к расточительству. Деградация всё равно наступает скачком.
Проблема: стремление сократить каждый токен — телеграфный стиль, выброшенные детали.
Решение: экономить на шуме, не на сигнале. Подробное описание задачи — инвестиция, а не трата.
Проблема: в memory пишется всё подряд — тысячи токенов фиксированных расходов в каждой сессии.
Решение: memory — кэш, не архив. Регулярно пересматривайте, удаляйте устаревшее.
Проблема: работа до упора, затем compact — и агент забывает ключевые детали.
Решение: compact — аварийный инструмент, не штатный. Лучше новая сессия с компактным резюме.
Ключевые принципы и практика
Язык, формат и стиль влияют на расход. Русский текст дороже английского, JSON дороже строки, весь файл дороже нужного фрагмента.
Зоны, позиции, фиксированные и переменные расходы. Где лежит информация — не менее важно, чем что в ней написано.
Результаты вызовов инструментов, накопленная история, фиксированные расходы на system prompt и MCP-схемы — вот куда уходит бюджет.
Кривая деградации — главная причина, почему большое окно не спасает. К 70% заполнения уже нужно завершать или сбрасывать.
Сжатие, декомпозиция, новые сессии — инструменты борьбы с шумом. Описание задачи — инвестиция.
Хранить то, что дорого получить заново. Всё остальное — лишние фиксированные расходы.
RAG — embedding, vector store, retrieval. Когда контекстного окна не хватает — доставать нужное точечно.
Сканируйте QR или переходите по ссылке, чтобы получить обновления по следующим материалам.