Разработка и запуск
Создано 10.10.2026
Обновлено 09.10.2026
Как выбирать контекст ИИ-агента, разделять историю, память и состояние, сохранять ограничения после сжатия и проверять продолжение длительной задачи.
Контекстная инженерия — это управление информацией, которую модель получает перед очередным шагом работы. Для длительной задачи разделите сохранённую историю, долговременную память, состояние выполнения и фактический контекст модели. Передавайте действующие условия и данные для ближайшего решения; объёмные источники оставляйте доступными для повторного чтения.
При сжатии сохраняйте цель, ограничения, исправления пользователя, готовые результаты, открытые вопросы и ссылки на исходники. Неизвестный исход внешнего действия отмечайте отдельно: перед повтором нужно проверить, состоялось ли оно. Затем проверьте не только сводку, но и следующий запрос модели и результат продолжения. На выходе должны получиться правила отбора данных, рабочая сводка и набор проверок, показывающих, какие условия теряются после паузы или сжатия.
Используйте этот порядок, если агент продолжает задачу после паузы, перезапуска или сжатия истории; работает с несколькими документами; получает исправления пользователя или выполняет действия во внешних системах. Он помогает найти, на каком участке теряются условия: при сохранении, поиске, сборке запроса или подготовке результата.
Для одного короткого запроса без продолжения достаточно проверить инструкции и исходные данные. Отдельное хранилище долговременной памяти не требуется автоматически: сначала определите, какие сведения действительно нужны между задачами. Эти проверки не заменяют настройку прав доступа и не гарантируют качество ответа LLM.
Разбор может начать разработчик или техлид. Владелец задачи подтверждает действующие условия и ожидаемый результат; ответственный за интеграцию проверяет эффекты внешних действий. В диагностические копии передавайте только необходимые данные, скрывая секреты и соблюдая ограничения доступа к истории.
Представим агента, который готовит технический отчёт. Он читает спецификацию, уточняет условия, сохраняет черновик и получает замечания. На каждом шаге меняется состав нужной информации: сначала требуется документация, затем — исправление пользователя и уже написанный раздел. Передавать всё прочитанное целиком необязательно, но потерять действующее ограничение опасно.
Промпт-инжиниринг помогает сформулировать инструкции. Контекстная инженерия, или context engineering, охватывает также отбор и обновление данных вокруг них. RAG — поиск внешних сведений для ответа — может быть частью этого отбора. MCP стандартизирует подключение инструментов и источников. Ни поиск, ни протокол подключения сами по себе не определяют, какие сведения попадут в очередной вызов модели.
В инженерном разборе Anthropic управление контекстом рассматривается как постоянная работа по выбору полезной информации в пределах окна модели. Для долгих задач описаны сжатие и внешние заметки. Полезная отправная точка здесь — проверять состав очередного входа модели, а не ограничиваться размером её окна.
Если нужно сначала разобраться, как модель, инструменты и среда выполнения образуют агента, это объясняет обзор agent loop и harness. Для продолжения задачи нужно определить, что передавать модели внутри этого цикла.
Под словом «память» часто объединяют разные данные. Из-за этого трудно понять причину сбоя: запись отсутствует, не найдена, не передана модели или неправильно использована. Для проектирования полезно разделить четыре слоя.
| Слой | Что хранит | Как используется |
|---|---|---|
| История | Сообщения, вызовы инструментов и их результаты | Помогает восстановить ход работы и найти исходную запись. В текущий запрос может попасть только её часть. |
| Память | Отобранные сведения для повторного использования: предпочтения, факты о проекте, принятые решения | Подключается по необходимости. Для записи важны происхождение, актуальность и область применимости. |
| Состояние задачи | Цель, выполненные шаги, открытые вопросы, подтверждения и результаты действий | Определяет, откуда продолжать работу и какие действия уже состоялись |
| Контекст модели | Информацию, фактически включённую в конкретный запрос | Служит входом для выбора следующего действия или подготовки ответа |
Это разделение по назначению, а не требование завести четыре базы данных. История и состояние могут храниться в одной системе, но правила их использования будут различаться. Запись «раздел сохранён» не заменяет сам раздел, а прежнее сообщение пользователя не всегда отражает его последнее решение.
В примере с отчётом история содержит первоначальную просьбу разобрать API v1 и последующее исправление на v2. Состояние должно отражать действующую версию v2. В текущий контекст достаточно включить это условие и нужную часть спецификации. Сохранять оба сообщения в архиве полезно; предъявлять их модели как две равноправные инструкции — уже другое решение.
Начните с вопроса: какое решение модель должна принять сейчас? Чтобы дополнить раздел отчёта, ей нужны действующие требования, соответствующая спецификация и текущий текст. Полный журнал предыдущих поисков может остаться в истории. Если возникнет спор о прежнем решении, нужную запись можно извлечь отдельно.
LangChain группирует подходы в четыре операции: записывать, отбирать, сжимать и разделять контекст. Это действия над информацией; их не следует путать с четырьмя слоями из таблицы. Записать рабочую заметку можно в состояние задачи, а отобрать для вызова — сведения сразу из нескольких слоёв.
Записывать стоит результаты, которые понадобятся после паузы: действующие условия, решения с основаниями, место черновика, незавершённые вопросы. Отбирать — конкретные фрагменты под следующий шаг. Сжимать — ту часть истории, которую нужно перенести в более коротком виде. Разделять — независимые задачи и сведения с разными областями применения.
Для каждого источника полезно сохранять адрес, дату чтения или версию. Ссылка на текущую документацию позволяет открыть её снова, но документ мог измениться. Если вывод зависит от конкретной редакции спецификации, продолжение должно опираться на эту редакцию либо явно учитывать изменение.
Отбор можно сделать постепенным: сначала передать короткое описание источника и адрес, затем прочитать нужный раздел. Но описание должно помогать выбрать документ: название «полезные материалы» не объясняет, зачем к ним обращаться. Лучше указать предмет, границы и версию — например, «Спецификация создания объектов, API v2». Иначе сведения формально доступны, но у агента нет понятного повода их извлечь.
У долговременной памяти есть дополнительный вопрос: когда запись перестаёт действовать? Предпочтение пользователя может сохраняться между задачами, а разрешение отправить один конкретный отчёт относится к определённому действию. Переносить такое разрешение на другие документы нельзя. Для изменяемых фактов нужны условия обновления, а для ошибочных сведений — возможность исправления или удаления.
Состав инструментов также входит в контекст. Для чтения спецификации модели нужны понятные средства поиска и чтения; доступ к публикации не следует выдавать только потому, что такой инструмент вообще существует. Постоянные правила и подробные процедуры можно организовать отдельно — см. разбор AGENTS.md, SKILL.md и MCP.
В описании опыта Manus внешние файлы используются как место хранения, к которому агент обращается по необходимости. Для нашей задачи полезен сам принцип: объёмный источник можно оставить вне текущего окна, сохранив способ его прочитать. Это работает только при доступном адресе и понятном основании для повторного чтения.
Сжатие контекста, или compaction, заменяет часть накопленного диалога более коротким представлением. Для продолжения важна не только длина сводки. Она должна сохранять сведения, от которых зависит следующий шаг: актуальную цель, ограничения, сделанное, открытые вопросы и доступ к исходникам.
Возьмём синтетический пример. Пользователь попросил отчёт по API v1, затем исправил версию на v2. Он также уточнил: персональные данные исключить, подготовить только черновик, ничего не публиковать. Агент прочитал спецификацию v2 и сохранил два раздела. Осталось описать, как обрабатывать неизвестный результат операции создания объекта.
«Пишем отчёт по API; два раздела готовы. Продолжить работу».
Сводка короткая и выглядит правдоподобно, но из неё исчезли версия API, ограничения и нерешённый вопрос. Следующий шаг может опереться на устаревшую документацию. Отдельно потерян запрет публикации: его нельзя восстанавливать догадкой о том, как обычно заканчивается подготовка отчёта.
Цель: подготовить технический отчёт по API v2.
Условия: без персональных данных; только черновик,
публикация не разрешена. Прежнее условие про v1 заменено.
Готово: спецификация v2 прочитана, два раздела сохранены.
Источник: sources/api-v2.txt, версия 2.
Черновик: drafts/api-report.txt.
Осталось: обработка неизвестного результата create.
Следующий шаг: перечитать раздел create в спецификации v2
и дополнить сохранённый черновик.
Пути здесь условные. В реальной системе они должны разрешаться в доступные файлы или идентификаторы документов. Перечень полей — отправная точка для этого сценария, а не универсальный формат памяти любого агента.
| Сведения | Что оставить в контексте | Что восстановить отдельно |
|---|---|---|
| Текущая задача и ограничения | API v2, запрет публикации и персональных данных | Историю изменения условий — если она нужна для разрешения противоречия |
| Исходная спецификация | Адрес, версия и факты, необходимые сейчас | Полный текст или конкретный раздел документа |
| Черновик | Место хранения, готовые разделы, оставшаяся работа | Текст раздела перед редактированием |
| Результаты действий | Что подтверждено, что отклонено, исход чего неизвестен | Ответ инструмента или состояние целевой системы |
Последняя строка особенно важна для агента с внешними действиями. Если соединение оборвалось после запроса на создание объекта, запись могла состояться. Сводка не должна превращать неизвестный исход в «не выполнено, повторить». Сначала требуется проверить целевую систему и поддерживаемую защиту от повторного эффекта.
Рабочая сводка также не должна менять техническое состояние исполнения. Фраза «документ согласован» требует основания в подтверждении пользователя или целевой системе. Если агент лишь предположил согласование, сохранение этой фразы в памяти не превращает её в разрешение. Результат действия, подтверждение человека и предположение модели нужно различать и при записи, и при последующем отборе.
Сжатие сводки ещё раз требует той же проверки: сохранились ли условия исходной задачи? Хорошо оформленный пересказ предыдущего пересказа может последовательно потерять исключение или незавершённый вопрос. Проверять нужно по существенным условиям задачи, а не только по наличию знакомых заголовков.
В разных системах сохранение и восстановление контекста устроены по-разному. Ниже — три отдельных механизма из версий, просмотренных 10 октября 2026 года. Фрагменты сокращены до обсуждаемого участка; это не готовые примеры для самостоятельного запуска.
В обработке сжатия OpenCode получает предыдущую завершённую сводку и отдельно выбирает сообщения для обработки. Служебные сообщения прежних сжатий исключаются из этого отбора.
const prior = completedCompactions(history)
const hidden = new Set(prior.flatMap((item) =>
[item.userIndex, item.assistantIndex]))
const previousSummary = prior.at(-1)?.summary
const selected = yield* select({
messages: history.filter((_, index) => !hidden.has(index)),
cfg,
model,
})
Здесь видно различие между сохранённой историей и выбранными данными. Дальше предыдущая сводка используется при подготовке нового запроса на сжатие. Исходный участок OpenCode показывает механизм, но не доказывает сохранение всех ограничений конкретной задачи.
В Hermes инструмент поиска сессий позволяет открыть определённую сессию или окно сообщений вокруг выбранной записи. Ветка с указанием сессии выглядит так:
if isinstance(session_id, str) and session_id.strip():
if around_message_id is not None:
return _scroll(db, session_id.strip(),
around_message_id, window, current_session_id)
return _read_scoped(db, session_id.strip(), profile)
Это отдельный путь к исходной истории, а не попытка вместить её целиком в сводку. Агенту всё равно нужно определить, какую запись искать и что из неё использовать. См. реализацию session_search.
В шаблоне контрольной сводки OpenClaw предусмотрены цель, ограничения, прогресс, блокеры, решения и следующие шаги. Например, соседние строки шаблона задают такие разделы:
`### In Progress\n${sections.inProgress}`,
`### Blocked\n${sections.blocked}`,
`## Key Decisions\n${sections.decisions}`,
`## Next Steps\n${sections.nextSteps}`,
Структура помогает явно отделить готовое от текущей работы. Однако заполненный раздел «Ограничения» может содержать устаревший текст или пропустить запрет. Шаблон OpenClaw задаёт форму; содержательную проверку нужно рассматривать отдельно.
Сначала проверьте, что именно получил следующий вызов модели. Наличие правильной записи в хранилище недостаточно, если сборка запроса её пропустила. Затем сопоставьте результат продолжения с действующими условиями: модель могла получить версию v2, но написать раздел по v1.
В разработке RB Tech был проверен ограниченный сценарий: после потери прежней истории аргументы отклонённого действия передавались модели вместе с причиной отказа, с предварительным скрытием секретов. Отдельный сценарий проверял продолжение сохранённого черновика после перезапуска. Эти проверки использовали детерминированную модель; они подтверждают передачу данных и восстановление, но не измеряют качество понимания реальной LLM.
Для содержательной оценки нужен другой вопрос: какие существенные факты и условия доступны после сжатия? В методике оценки Hermes ответы на вопросы из сжимаемой части истории сопоставляются с эталонами, а результат рассматривается вместе с сохранённым объёмом и стоимостью. Это полезный пример разделения смысловых потерь и экономии контекста.
Для собственного процесса начните с небольшого набора сценариев:
| Сценарий | Что проверить |
|---|---|
| Потеря ограничения | После сжатия в следующем запросе и результате сохраняется запрет публикации |
| Исправление пользователя | Новое условие v2 заменяет прежнее v1, а не добавляется как ещё один вариант |
| Недоступный или изменившийся источник | Агент обозначает ограничение и не выдаёт прежний факт за заново проверенный |
| Повторное сжатие | Существенные условия сравниваются с исходной задачей после нескольких сокращений истории |
| Другая задача | Чужой черновик, решение или разрешение не используются как состояние текущей работы |
| Неизвестный внешний эффект | Агент проверяет результат прежнего действия перед повтором, если запись могла уже состояться |
Наличие полей, доступность файлов и отсутствие ошибок исполнения проверяют техническую сторону. Полнота отчёта, правильность версии и соблюдение условий относятся к качеству результата. Расход токенов и задержка — ещё отдельные показатели. Сопоставляйте их на одинаковых задачах: более короткий контекст может потребовать дополнительных поисков и повторных чтений.
Для такого сравнения заранее задайте ожидаемые ответы и условия, которые нельзя потерять. Сохраните исходную историю, сводку и запрос продолжения. Отмечайте отдельно: факт отсутствовал во входе модели или присутствовал, но не был использован. Эти случаи требуют разных изменений — исправления сборки контекста либо работы с поведением модели и проверкой результата. Один удачный проход покажет возможность продолжения, но не частоту ошибок на других задачах.
После разбора одной задачи у команды должен быть небольшой проверяемый комплект:
Начните с одного исправления пользователя и одного недоступного источника, затем проверьте повторное сжатие и внешний эффект с неизвестным исходом. Исправляйте тот участок, где обнаружена потеря, и повторяйте затронутый сценарий.
Для организации файлов и результатов используйте разбор Agent Workspace. Постоянные инструкции описаны в руководстве по AGENTS.md и SKILL.md. Перед подключением внешних действий пройдите чек-лист доступа и подтверждений.
Обсудить проект
Если хотите применить этот материал к вашему проекту, напишите нам. Поможем уточнить вводные, риски и следующий шаг: оценку, discovery, разработку, интеграцию или сопровождение.
СвязатьсяПредыдущая
AGENTS.md и SKILL.mdСледующая
Стоимость и лимиты coding agents© 2018–2026, ООО «РоботБулл Технолоджи» ИНН 9710065224
ОКВЭД 62.01
Сведения об ИТ-деятельности