Как работает ИИ-агент простыми словами: харнесс, контекст и память
Почему твой ИИ то гений, то золотая рыбка
Как устроен ИИ-агент изнутри: харнесс, контекстное окно, токены и память. Понятный разбор для вайбкодеров - чтобы Claude и GPT слушались с первого раза, а не с десятого.
Что такое ИИ-агент простыми словами
Представь, что ты нанял гениального повара. Тысячи рецептов в голове, готовит что угодно, пашет круглые сутки. Один нюанс: стоит он с завязанными глазами посреди пустой комнаты. Ни плиты, ни ножа, ни холодильника. И стоит тебе выйти за дверь - забывает вообще всё.
Этот повар - модель (Claude, GPT и компания). А кухня вокруг: плита, ножи, рецепты на стене, правило «не суй руку в огонь» - это харнесс Харнесс (от англ. harness - «упряжь, обвязка») - это вся обвязка вокруг модели: инструменты, которые ей дают, формат, в котором она видит результат, правила и память. Модель одна и та же, а харнесс у всех разный. . ИИ-агент = повар плюс кухня. Не что-то одно, а оба сразу.
Зачем вайбкодеру понимать, как думает агент
Ты вайбкодер. Руками код писать не обязан. Но как только врубаешься, как ИИ-агент думает, меняется вот что:
- злишься меньше, а чинишь причину, а не симптом;
- экономишь деньги - за «думанье» ты платишь токенами, скоро объясню;
- получаешь результат с первого-второго захода, а не с десятого;
- ставишь задачу так, что агент не «плывёт» на полпути.
«ИИ написал мне кривой сайт» против «ИИ написал мне рабочий сайт» - чаще всего это разница в понимании трёх штук: контекст, токены, память. С них и начнём.
Три кита: контекст, токены и память
Контекст - рабочий стол ИИ-агента
Памяти как у человека у агента нет. Есть контекстное окно Контекст (контекстное окно) - это весь текст, который модель «видит» прямо сейчас: твои сообщения, файлы, результаты команд, инструкции. Всё, что не влезло или вылетело - для модели не существует. - считай, рабочий стол. На стол влезает ограниченное число «бумажек»: задача, куски кода, ответы команд, инструкции.
Лежит нужное на столе - агент умница. Завалил стол хламом (старые сообщения, простыни логов, пять версий одного файла) - и повару буквально некуда положить нож. Тут он и начинает терять нить, путать детали, галлюцинировать.
Токены - валюта, которой ты платишь за стол
Каждая «бумажка» на столе стоит денег. Текст для модели режется на токены Токен - кусочек текста, примерно 3-4 символа или ¾ слова. Модель и читает, и пишет токенами. И за входные (что ты дал), и за выходные (что она сгенерила) токены ты платишь. . Больше текста даёшь, длиннее ответы просишь - больше токенов. А значит, дороже и медленнее.
Поэтому матёрые вайбкодеры весь проект в чат не суют. Дают ссылку на файл, нужный фрагмент - или просят агента самого найти, что надо. И платят за это копейки вместо рубля.
Память: короткая и долгая
Вот тут новичок и попадается. У агента два вида памяти, и их легко перепутать:
- Короткая (рабочая) - это и есть контекст, тот самый стол. Живёт ровно одну сессию. Закрыл чат или словил «компакт» - всё стёрлось.
- Долгая - это файлы на диске. Заметки,
MEMORY.md, правила проекта. В голове модель между запусками не держит ничего: она каждый раз перечитывает файлы заново.
Компакт: когда чистить контекст
Стол переполнился - случается компакт Компакт (compact) - сжатие истории разговора: агент сворачивает старое в краткую выжимку, чтобы освободить место. Полезно, но при этом теряются детали. : агент сворачивает старую переписку в короткую выжимку. Место освободилось - но детали ушли. Как смахнуть всё со стола в папку «разное»: место есть, а найти нужное теперь морока.
Весь фокус в том, когда это делать:
- На границе задач: закончил фичу - почистил, начал новую с чистого стола.
- После большого исследования, когда нагрёб кучу файлов, а нужен только вывод.
- Когда чувствуешь, что агент начал повторяться и путать детали.
- Посреди отладки сложного бага - потеряешь как раз те детали, которые искал.
- Прямо перед тем, как агент применит важное решение - он забудет, почему его принял.
- Слишком часто «на всякий случай» - каждый компакт = потеря контекста.
Хороший и плохой харнесс
Харнесс - это кухня. Вот как на глаз отличить удобную от кошмарной. Пригодится, когда дойдёшь до подключения инструментов - MCP, скиллов и прочего (это в следующих главах).
- У инструментов понятные имена и узкие задачи: «прочитать файл», «запустить тесты».
- Каждый ответ инструмента говорит агенту: что вышло и что делать дальше.
- Опасные действия (удалить, задеплоить) - отдельные кнопки с подтверждением.
- Тяжёлые инструкции вынесены в скиллы/файлы и грузятся только когда нужны.
- Один «мега-инструмент на всё» - агент путается, что и когда звать.
- Инструмент молча падает или возвращает простыню без подсказки «что теперь».
- Системный промпт раздут на тысячи строк - стол забит ещё до старта.
- Нет защиты - агент может снести прод одной командой.
Память ИИ: что помогает, а что мешает
- Важные правила и факты - в файлах, а не в одном сообщении.
- Память короткая и по делу: одна заметка = один факт.
- Агент сам дописывает выводы в память по ходу работы (continuous-learning).
- Память проверяется: устаревшие факты удаляются, а не копятся.
- Память превращается в свалку - агент тратит стол на чтение мусора.
- Противоречивые заметки: в одной «делай так», в другой «никогда так не делай».
- В память попали секреты (пароли, ключи) - а файл потом утёк.
- Агент верит старой заметке, хотя в проекте всё давно поменялось.
Пример из жизни: почему агент сломал рабочий лендинг
Просишь: «сделай мне лендинг кофейни». Агент бодро стартует, генерит 12 файлов. Ты по ходу 40 раз правишь: «кнопку левее», «шрифт другой», «нет, верни как было». А через час он внезапно ломает то, что отлично работало в начале. И ещё спорит, что «так и было».
Что случилось на самом деле:
- Стол завалили сорока правками и десятком версий файлов.
- Прилетел компакт - и агент забыл, как выглядел рабочий вариант.
- Правило «шрифт - Fraunces» жило только в чате и стёрлось вместе с историей.
А вот как тот же запрос дал бы человек, который понимает кухню:
Сделай лендинг кофейни. Прежде чем писать код:
- Запиши ключевые требования в файл DECISIONS.md (шрифт Fraunces,
палитра teal, одна страница, кнопка заказа сверху). Сверяйся с ним.
- Работай по одному блоку за раз: герой, меню, контакты.
После каждого блока показывай результат и жди моего «ок».
- Не переписывай уже одобренные блоки без моего разрешения.
- Если история переполняется - делай компакт ТОЛЬКО после
готового блока, не в середине.
Агент затупил? Мини-диагностика
Прежде чем бить тревогу, пробеги по чек-листу (это, по сути, скилл agent-introspection-debugging):
- Стол не завален? Разговор длинный, агент путается - почисти или начни заново.
- Контекст не потерян? Возможно, важное стёр компакт - повтори ключевые требования.
- Правило точно в файле? Сказал один раз в чате - не считается.
- Инструмент не молчит? Агент ходит по кругу - может, команда падает, а ошибки он не видит.
- Задача не великовата? Режь её на куски по пятнадцать минут работы.
Частые ошибки новичков в вайбкодинге
- Вываливать весь проект в чат. Дорого и забивает стол. Давай нужный кусок.
- Держать правила только в переписке. После перезапуска их нет. Выноси в файлы.
- Гнать одну гигантскую задачу. Агент захлёбывается. Режь на куски.
- Чистить контекст посреди отладки. Потеряешь ровно то, что искал.
- Не смотреть на токены. «Бесконечный» чат однажды приходит со счётом, от которого ёкает сердце.
- Спорить с агентом вместо перезапуска. Иногда дешевле начать сессию с чистого стола.
TL;DR - если коротко
- Модель - это мозг. Харнесс - руки, глаза и правила вокруг мозга. Вайбкодер крутит именно харнесс.
- Память агента - как рабочий стол: места мало (контекстное окно), и за это место ты платишь токенами.
- Стол завалили - агент тупеет. Компакт (чистку) делай на стыке задач, а не посреди отладки.
- Долгая память живёт в файлах, а не в голове ИИ. Нет файла - нет памяти после перезапуска.
- Девять из десяти «глюков ИИ» - это не тупая модель. Это заваленный стол, кривой инструмент или потерянный контекст.