Примечание автора: на примере механизма переключения контекста в openJiuwen WorkSwarm разбираем подход «итоговая сводка + поиск в архиве», а также варианты и компромиссы для долго работающих агентов, приближающихся к пределу контекстного окна.
Сообщество разработчиков openJiuwen, которое при поддержке Huawei развивает агентов с открытым исходным кодом, недавно представило кластерную архитектуру Hyper-Agent. Одна деталь заслуживает внимания разработчиков: когда контекстное окно агента приближается к пределу, он переключается на новое окно, передавая в него сводку с целью, прогрессом и следующими шагами, а при необходимости ищет детали в архиве истории. Механизм можно описать одним предложением, но за ним стоит инженерная задача, с которой сталкиваются все долго работающие агенты.
Это не слухи. Соответствующая функциональность уже выпущена в составе openJiuwen WorkSwarm, а её код открыт на GitHub под названием JiuwenSwarm. На примере этого механизма мы разберём три вопроса: что включать в сводку, когда переключать окно и когда обращаться к архиву. А ещё сравним компромиссы двух подходов: «полагаться на более длинный контекст» и «передавать сводку и искать в архиве».
Главная польза: после прочтения вы сможете применить эти идеи к своему агенту и разобраться, какие есть способы работы с пределом контекстного окна и какие риски связаны с каждым из них.

Краткий обзор: сводка передачи и поиск по архиву
Сначала разберёмся с фактами, которые подтверждаются источниками, а затем посмотрим, что они значат для разработчиков. Все сведения в таблице взяты из открытых публикаций. Детали реализации, которые не подтверждены публикациями, отдельно отмечены ниже.
| Пункт | Подробности |
|---|---|
| Разработчик | openJiuwen — сообщество разработки ИИ-агентов с открытым исходным кодом, которое поддерживает Huawei |
| Что представлено | Кластерная архитектура Hyper-Agent, реализованная в openJiuwen WorkSwarm |
| Открытый код | Код опубликован на GitHub под названием JiuwenSwarm |
| Главное изменение | Постоянный агент (Persistent Agent) сохраняет собственную идентичность и состояние, а сессии становятся ресурсом нижнего уровня, которым управляет система |
| Работа с контекстом | При приближении к пределу окна система переключается на новое, передавая сводку с целью, прогрессом и следующим шагом; при необходимости детали извлекаются из архива |
| Время публикации | Начало ноября 2026 года |
Почему постоянному агенту нужно решать проблему предела контекстного окна
Идея WorkSwarm — вывести агента за рамки отдельной чат-сессии, чтобы он мог постоянно работать как «цифровой сотрудник» в рабочих группах Feishu, DingTalk и других мессенджеров. Один и тот же агент может вести несколько задач в разных групповых чатах: получать запрос в одном канале, а передавать результат в другом. Шлюз соединяет приложения для обмена сообщениями и веб-интерфейс с системой, а AgentServer управляет агентами и рабочими сессиями.
В таком сценарии достижение предела контекстного окна — не случайность, а неизбежное событие. Чат-бот, который отвечает на отдельные вопросы, редко заполняет окно целиком. Но у агента, который несколько дней ведёт проект, постоянно накапливаются история диалога, результаты вызовов инструментов и содержимое файлов. В публикации также отмечается, что панель активности WorkSwarm показывает расход токенов каждого агента. Это значит, что за расходом контекста в таких системах нужно следить постоянно.
Сессия как ресурс: основа сводки передачи
Чтобы понять механизм сводки передачи, важно учесть, что WorkSwarm разделяет понятия «агент» и «сессия». Идентичность и состояние агента сохраняются постоянно, а сессия — лишь ресурс, который система выделяет, использует для параллельной работы и может восстановить вместе с контекстом. Если сессию можно заменить, то и решение «окно заполнено — переключаемся на новое» выглядит вполне естественно.
Сводка передачи переносит из старой сессии в новую минимальный, но достаточный объём информации о текущей работе. А архивная история позволяет сохранить детали старой сессии: они больше не находятся постоянно в контексте, но их можно извлечь по мере необходимости.

Первый вопрос при создании сводки для передачи: что в неё включить
В статье названы три элемента: цель, прогресс и следующие шаги. Структура простая, но на практике каждый пункт стоит проработать подробнее. В таблице ниже мы развили эти три элемента и добавили свои рекомендации по реализации. Это инженерные предложения, а не подтверждённое описание реализации JiuwenSwarm.
| Поле | Что рекомендуется включить | Риск при отсутствии |
|---|---|---|
| Цель | Исходное описание задачи, требования к результату, инициатор и канал доставки | В новом окне работа отклонится от исходных требований, а результат будет отправлен не в ту группу или не в том формате |
| Прогресс | Выполненные подзадачи, принятые ключевые решения и их обоснование | Повторная работа или пересмотр ранее согласованного решения |
| Следующие шаги | Список дел, блокирующие проблемы, ожидаемые ответы извне | Задача остановится: агент не будет знать, с чего продолжить |
| Ограничения (дополнение) | Явные запреты пользователя, границы полномочий, предпочтения по формату | Нарушение ранее высказанных предпочтений пользователя, потеря связности взаимодействия |
| Индекс (дополнение) | Расположение ключевой информации в архиве или ключевые слова для её поиска | При необходимости детали не удастся найти, и архив окажется бесполезным |
«Ограничения» и «индекс» — два пункта, которые мы добавили. Ограничения важны, потому что предпочтения, высказанные пользователем в разных частях длинного диалога (например, «отчёт не должен превышать одной страницы»), проще всего потерять при сжатии сводки. Индекс связывает сводку для передачи с поиском по архиву: чем короче сводка, тем важнее подсказать новому окну, где искать подробности.
В случае WorkSwarm нужно также учитывать сложности, связанные с несколькими группами и каналами. В статье говорится, что обмен информацией между группами требует одобрения пользователя: разрешение можно выдать разово или на постоянной основе, а затем отозвать. Если не указать такие разрешения в сводке для передачи, агент в новом окне может неверно оценить свои полномочия. Такую информацию лучше сохранять в виде структурированных полей, а не свободного текста.
Второй вопрос о сводке для передачи контекста: когда переключать контекст
В публикации сказано лишь, что переключение происходит «при приближении к лимиту». Конкретный порог и способ создания сводки — моделью или по правилам — в открытых материалах не раскрыты. Чтобы это выяснить, нужно изучить исходный код или документацию JiuwenSwarm. С инженерной точки зрения момент переключения можно выбирать несколькими способами.
| Стратегия | Как работает | Преимущества | Риски |
|---|---|---|---|
| Фиксированный порог в процентах | Переключение происходит, когда количество использованных токенов достигает определённой доли контекстного окна | Простая реализация, предсказуемое поведение | Переключение может произойти посреди важного этапа задачи |
| Порог свободного места | Переключение происходит, когда оставшегося места не хватает для следующего ввода и создания сводки | Для создания сводки гарантированно остаётся достаточно места | Нужно оценивать объём следующего ввода |
| Переключение на границе задачи | Переключение происходит в естественных точках остановки: после выполнения подзадачи, в ожидании ответа пользователя и т. п. | Сводка получается полнее, а переключение обходится дешевле | Подходящая точка остановки может не появиться до заполнения окна |
| Смешанная стратегия | Переключение по возможности происходит на границе задачи, а при превышении жёсткого порога — принудительно | Баланс между полнотой сводки и безопасностью | Более сложная логика, требуется больше тестов |
Важно помнить, что создание сводки для передачи контекста тоже расходует место в контекстном окне. Если дождаться его полного заполнения, у модели может не остаться места, чтобы прочитать всю историю и составить качественную сводку. Поэтому независимо от выбранной стратегии для создания сводки нужно оставлять запас.
Что касается способа создания сводки, модель делает это гибче и понимает смысл задачи. Сводка, созданная по правилам, например путём извлечения полей состояния из списка задач, стабильнее, но ей сложно уловить неявные решения, принятые в ходе диалога. На практике часто сочетают оба подхода: программа поддерживает структурированное состояние, а модель лишь дополняет его описанием прогресса на естественном языке.
Как реализовать сводку для передачи работы и поиск по архиву: минимальный прототип
Ниже — минимальный прототип, демонстрирующий эту идею. Он не является реализацией JiuwenSwarm. Когда расчётное количество токенов приближается к порогу, прототип просит модель составить сводку для передачи работы и сохраняет старые сообщения в архив.
import openai
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.apiyi.com/v1" # OpenAI-совместимый интерфейс APIYI
)
HANDOFF_PROMPT = "请将以上工作记录整理为交接摘要,包含:目标、进展、下一步、约束、关键信息索引。"
def make_handoff(messages, model="gpt-4o-mini"):
resp = client.chat.completions.create(
model=model,
messages=messages + [{"role": "user", "content": HANDOFF_PROMPT}]
)
return resp.choices[0].message.content
Посмотреть полный код прототипа (с проверкой порога и поиском по архиву)
import openai
from typing import List, Dict
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.apiyi.com/v1"
)
MODEL = "gpt-4o-mini"
CONTEXT_LIMIT = 100_000 # Примерное значение; настройте под фактическое окно модели
SWITCH_RATIO = 0.7 # Оставляем место для создания сводки
HANDOFF_PROMPT = (
"请将以上工作记录整理为交接摘要,分为五部分:"
"1.目标 2.进展(含关键决策及理由)3.下一步 4.用户约束 5.关键信息索引(关键词列表)"
)
class LongRunningAgent:
def __init__(self, system_prompt: str):
self.system_prompt = system_prompt
self.messages: List[Dict] = [{"role": "system", "content": system_prompt}]
self.archive: List[Dict] = [] # Архив истории; в продакшене можно заменить базой данных или векторной базой
def estimate_tokens(self) -> int:
# Приблизительная оценка; в продакшене следует использовать токенизатор соответствующей модели
return sum(len(m["content"]) for m in self.messages)
def maybe_switch(self):
if self.estimate_tokens() < CONTEXT_LIMIT * SWITCH_RATIO:
return
resp = client.chat.completions.create(
model=MODEL,
messages=self.messages + [{"role": "user", "content": HANDOFF_PROMPT}]
)
summary = resp.choices[0].message.content
self.archive.extend(self.messages[1:]) # Сохраняем старый диалог в архив
self.messages = [
{"role": "system", "content": self.system_prompt},
{"role": "system", "content": f"【交接摘要】\n{summary}"}
]
def search_archive(self, keyword: str, top_k: int = 5) -> str:
hits = [m["content"] for m in self.archive if keyword in m["content"]]
return "\n---\n".join(hits[-top_k:]) or "归档中未找到相关记录"
def chat(self, user_input: str) -> str:
self.maybe_switch()
self.messages.append({"role": "user", "content": user_input})
resp = client.chat.completions.create(model=MODEL, messages=self.messages)
answer = resp.choices[0].message.content
self.messages.append({"role": "assistant", "content": answer})
return answer
agent = LongRunningAgent("你是负责跟进项目周报的数字员工。")
print(agent.chat("请记录:本周报告不要超过一页。"))
Поиск в архиве в этом прототипе работает на простом сопоставлении ключевых слов. В публикации не уточняется, использует ли JiuwenSwarm векторный поиск или другой метод. В реальном проекте можно выбрать полнотекстовый, векторный или гибридный поиск в зависимости от размера архива. Также можно зарегистрировать search_archive как инструмент, чтобы модель сама решала, когда его вызывать.
🚀 Быстрый старт: при создании такого прототипа для подготовки резюме и выполнения основной задачи можно использовать разные модели — например, лёгкую модель для резюме и более мощную для основной задачи. С APIYI apiyi.com достаточно одного API-ключа для вызова моделей OpenAI, Claude, Gemini и других. Это позволяет переключать и сравнивать модели в одном и том же коде. Новым пользователям доступен бесплатный лимит для тестирования.
Третий вопрос при разработке резюме для передачи контекста: когда обращаться к архиву
Поиск в архиве помогает решить фундаментальную проблему: резюме неизбежно теряет часть информации. Любое сжатие приводит к потерям — вопрос в том, можно ли потом восстановить нужные сведения. Есть три основных подхода к тому, когда обращаться к архиву:
- Модель вызывает поиск самостоятельно: поиск предоставляется модели как инструмент, и она обращается к нему, когда замечает нехватку информации. Это гибкий подход, но он зависит от того, насколько хорошо модель понимает, чего именно она не знает.
- Срабатывание по правилам: когда пользователь упоминает отсутствующие в резюме сущность, имя файла или момент времени, программа автоматически выполняет поиск и добавляет результаты в контекст. Такой подход проще контролировать, но правила охватывают не все случаи.
- Поиск по индексу: в резюме для передачи контекста сохраняется индекс ключевой информации. Когда в новом окне возникает связанная тема, нужные сведения извлекаются по индексу. Результат зависит от качества индекса, составленного на этапе подготовки резюме.
На наш взгляд, главный риск — «не знать, что именно упущено». Если резюме не сохранило какое-то предпочтение пользователя и в новом окне нет никаких указаний на его существование, модель не догадается поискать его в архиве. Именно поэтому выше мы рекомендовали добавлять в резюме поля «ограничения» и «индекс»: они помогают понять, что нужно искать в архиве.
Длинный контекст или сводка для передачи состояния: анализ подходов
Когда контекстное окно подходит к пределу, можно просто перейти на модель с большим окном. Эти подходы не исключают друг друга, но подходят для разных условий. В таблице ниже приведено качественное сравнение без количественных данных об эффективности.

| Критерий | Длинный контекст | Сводка для передачи состояния + поиск в архиве |
|---|---|---|
| Сложность реализации | Низкая, доработки почти не нужны | Высокая: нужны три механизма — создание сводок, архивация и поиск |
| Полнота информации | Вся исходная информация находится в контексте | Сводка теряет часть информации, поиск помогает восполнить пробелы |
| Длительность задачи | Ограничена размером окна модели | Теоретически может продолжаться неограниченно |
| Затраты на один вызов | Постоянно растут по мере накопления истории | Снижаются после каждого переключения |
| Основной риск | Важная информация теряется в длинном вводе | Сводка упускает детали, а поиск их не находит |
| Подходящие сценарии | Задачи средней продолжительности, требующие сверки с полным текстом | Непрерывная работа в течение нескольких дней или недель |
| Доступные платформы | APIYI apiyi.com и другие платформы предлагают модели с разным размером контекстного окна | Подходит любая модель, независимо от платформы |
💡 Как выбрать: если задача обычно укладывается в одно длинное окно, проще перейти на модель с большим контекстом. Если же агент должен работать постоянно, как цифровой сотрудник WorkSwarm, сводка для передачи состояния почти наверняка необходима. Можно сначала выполнить одну и ту же задачу на APIYI apiyi.com с моделями, у которых разный размер контекстного окна, оценить фактический расход и затем решить, стоит ли разрабатывать механизм создания сводок.
Что это значит для разработчиков
- Управление контекстом становится архитектурной задачей: WorkSwarm рассматривает сеансы как ресурс, которым можно управлять. Это значит, что переключение контекста учитывается при проектировании системы, а не используется как мера на случай ошибки.
- Состояние нужно моделировать явно: качество сводки для передачи состояния зависит от того, насколько чётко агент записал цели, решения и предстоящие задачи. А значит, разработчикам нужно продумать структуру состояния ещё на этапе проектирования.
- Наблюдаемость становится важнее: WorkSwarm показывает расход токенов и время ответа на панели активности. Для долгосрочных агентов также нужно отслеживать частоту переключений и успешность поиска.
Что это значит для отрасли
- От сеансовых агентов к постоянно работающим: агенты переходят от формата «вопрос — ответ» к длительной работе в рабочих группах. Способность переносить контекст между окнами станет базовой частью инфраструктуры таких продуктов.
- Реализация с открытым кодом служит ориентиром: после открытия кода JiuwenSwarm разработчики могут изучить пороги переключения, создание сводок и реализацию поиска, не разбираясь во всём с нуля.
Частые вопросы FAQ
Q1: Что такое подход «резюме для передачи контекста + поиск в архиве»?
Это способ для долго работающего агента переходить между контекстными окнами. Когда окно почти заполнено, агент переключается на новое, передавая в него только резюме с целью, текущим прогрессом и следующими шагами. Полная история сохраняется в архиве, откуда при необходимости можно извлечь детали. Именно такой подход используется в openJiuwen WorkSwarm.
Q2: Разве нельзя просто выбрать модель с более длинным контекстом?
Для задач средней длительности модель с длинным контекстом действительно будет самым простым решением. Но у постоянно работающего агента история продолжает расти, поэтому рано или поздно заполнится любое окно. Кроме того, важная информация может затеряться в очень длинном вводе. Для начала стоит протестировать реальные задачи через APIYI apiyi.com на моделях с разным размером контекстного окна, а затем решить, нужен ли механизм резюмирования.
Q3: При каком пороге WorkSwarm переключает окно и как создаётся резюме?
В опубликованных материалах пока не раскрываются конкретный порог, способ создания резюме — моделью или по правилам, — а также метод поиска в архиве: векторный или какой-либо другой. Чтобы уточнить эти детали реализации, нужно изучить открытый код JiuwenSwarm на GitHub или официальную документацию. Соответствующие рассуждения в этой статье представляют собой общий инженерный анализ.
Q4: Как быстро проверить подход с резюме для передачи контекста через API?
Прототип можно собрать следующим образом:
1. Зарегистрируйтесь на APIYI apiyi.com и получите API-ключ и бесплатный лимит для тестирования
2. Используйте код прототипа из этой статьи, указав для base_url значение `https://api.apiyi.com/v1`
3. Протестируйте решение на реальном длинном диалоге и после переключения проверьте, помнит ли агент ключевые ограничения
Q5: Какие риски известны у этого подхода?
Главный риск — резюме упустит какие-то детали, а в новом окне не окажется зацепок, чтобы найти их в архиве. Другой риск — переключение посреди важного этапа задачи, которое приведёт к несогласованности состояния. Кроме того, публичных данных тестирования о реальном влиянии этого механизма на качество выполнения задач пока нет, поэтому перед запуском его стоит тщательно проверить на собственных сценариях.
Ключевые выводы: передача состояния и контекстное окно
- Основной механизм: когда окно почти заполнено, агент переходит в новое окно с резюме, содержащим цель, текущий прогресс и следующие шаги.
- Необходимое условие: идентичность агента отделена от сессии, а сессия становится ресурсом, которым можно управлять и который можно восстанавливать.
- Содержание резюме: помимо трёх основных элементов стоит добавить ограничения пользователя и индекс архива, чтобы снизить риск потери информации.
- Момент переключения: оставляйте место для создания резюме и по возможности переключайтесь на границах задач.
- Поиск в архиве: резюме неизбежно теряет часть информации, поэтому возможность найти детали зависит от доступа к архиву.
- Выбор подхода: для задач средней длительности можно перейти на модель с длинным контекстом; для долгосрочной работы агента важнее передача состояния через резюме.
- Быстрая проверка: создать и сравнить прототипы можно через единый интерфейс APIYI apiyi.com для работы с несколькими моделями.
Итоги
Механизм переключения контекста в openJiuwen WorkSwarm — наглядный пример организации работы долго функционирующих агентов:
- Резюме передаёт рабочее состояние: цель, прогресс и следующие шаги — необходимый минимум; ограничения и индекс архива — полезные дополнения.
- Для переключения нужен запас: создание резюме само расходует контекст, поэтому нельзя ждать, пока окно заполнится полностью.
- Поиск в архиве помогает восстановить утраченную информацию: задача резюме — запомнить главное, а детали можно найти по мере необходимости.
Если ваш агент переходит от работы в рамках одной сессии к длительной работе, сначала определите структуру состояния, а затем решите, стоит ли перейти на модель с длинным контекстом или внедрить передачу состояния через резюме. Попробуйте быстро создать прототип через APIYI apiyi.com и сравнить качество резюме и расход контекста у разных моделей.
📚 Источники
- Публикация Pandaily: кластерная архитектура openJiuwen Hyper-Agent и цифровые сотрудники WorkSwarm
- Ссылка:
pandaily.com/openjiuwen-hyper-agent-swarm-architecture-persistent-agents-workswarm-digital-employees -
Описание: англоязычная статья о постоянных агентах, переключении контекста и механизме передачи кратких сводок
-
Исходный код JiuwenSwarm: открытая реализация openJiuwen WorkSwarm
- Ссылка:
github.com(поиск по запросу JiuwenSwarm) - Описание: реализация порогов переключения, генерации сводок и поиска в архиве
Автор: техническая команда APIYI
Технические вопросы: свяжитесь с нами через главную страницу APIYI apiyi.com. Дополнительные материалы доступны в документации на docs.apiyi.com
