Компания Prime Intellect выпустила Prime Agent — самосовершенствующийся coding-харнесс, построенный вокруг двух абстракций: Recursive Language Model (RLM) [публикация] и Continual Harness [публикация]. Большинство современных харнессов проектировались под возможности моделей предыдущих поколений и не отражают того, на что способны актуальные фронтир-модели: фиксированные схемы вызова инструментов и компактификация контекста заставляют модель подстраиваться под собственную обвязку, а не использовать её в полной мере. Статичные, вручную сконфигурированные сабагенты, промпты, навыки и память задаются один раз на этапе проектирования и никогда не адаптируются к тому, что агент узнаёт в процессе работы. Разработчики Prime Agent исходят из того, что харнесс должен экстраполировать текущие возможности моделей в сторону следующего поколения паттернов рассуждения.

Prime Agent построен вокруг этого принципа через две основные абстракции:

  1. Recursive Language Model (RLM) трактует контекст как переменную, а делегирование сабагентам — как вызовы функций внутри REPL. Постоянный REPL даёт модели программный доступ к собственной истории, сабагентам и инструментам, позволяя писать программы на языке модели как действия над собственным контекстом. Такой подход позволяет агенту обрабатывать сессии произвольной длины, не теряя доступа к своей же прошлой информации, хранящейся в переменных.
  2. Continual Harness трактует собственное состояние харнесса — абстрагированное как промпты, навыки, память и сабагенты — как нечто, что агент может создавать, читать, обновлять и удалять (CRUD) прямо из своей траектории выполнения. В сочетании с коммуникацией между агентами этот механизм позволяет оркестрировать работу как между сабагентами, так и между отдельными сессиями Prime Agent. Например, Prime Agent может порождать постоянные сабагенты, отправлять им сообщения позже по ходу траектории и напрямую общаться с другой сессией Prime Agent.

Эти абстракции хорошо подходят для наращивания возможностей моделей. Prime Agent спроектирован так, чтобы быть эффективным как универсальный coding-ассистент, как среда выполнения по умолчанию для долгосрочной автономной оценки и как соавтор в исследовательской работе, включая автоматизированные исследования.

Prime Agent полностью открыт и устанавливается командой:

curl -fsSL https://app.primeintellect.ai/prime-agent/install.sh | sh
Экран онбординга Prime Agent

Prime Agent

Производительность агентных харнессов зависит как от их дизайна, так и от возможностей обученной вокруг них модели. Prime Agent спроектирован так, чтобы сразу работать с современными открытыми и закрытыми фронтир-моделями, при этом предоставляя набор функций, которые, как ожидается, дадут дополнительный прирост производительности по мере обучения новых поколений моделей под этот харнесс.

В основе Prime Agent — программный вызов инструментов и сабагентов. Модели в Prime Agent используют постоянное ядро IPython как единственный инструмент. Остальные стандартные функции харнесса вызываются как функции внутри этого ядра, включая сабагенты, каждый из которых реализован как отдельный экземпляр prime-agent.

Архитектура Prime Agent

Диаграмма архитектуры Prime Agent
RLM и Continual Harness — две базовые абстракции; CRUD над сабагентами и обмен сообщениями Agent2Agent объединяют их в оркестрацию.

Фоновый демон и вид агентов. Интерфейс по умолчанию — текстовый (TUI), похожий на другие coding-агентские харнессы. По умолчанию действия IPython, выполняемые агентом, сворачиваются для краткости, но их можно развернуть, чтобы увидеть действия харнесса. Сабагенты, запущенные в REPL, доступны ниже поля чата пользователя.

Текстовый интерфейс Prime Agent

Prime Agent запускает фоновый демон, который владеет всеми активными сессиями агентов через локальный сокет. Пользователь может подключаться к сессии и отключаться от неё, не влияя на работу самого агента. Каждое дерево корневой сессии выполняется в восстанавливаемом рабочем процессе; если процесс аварийно завершается, демон восстанавливает его из JSONL-файла сессии и снапшота состояния ядра.

Вид агентов (Agents View) позволяет увидеть и выбрать другие активные сессии демона. Открывается нажатием клавиши стрелка влево (←) в пустой строке ввода и показывает работающие сессии, простаивающие сессии с ещё активным демоном и неактивные сессии, не загруженные в память. В любой из этих чатов можно войти и взаимодействовать с ним немедленно, а нажатие пробела позволяет писать сессии в любом состоянии, включая направление и постановку в очередь промптов и команд вроде /compact.

Agents View выстроен как центральная точка соединения между агентами и сабагентами, рекурсивно. Любой агент доступен для поиска через Agents View. Пользователь переходит из Agents View в чат агента, затем в Agents View его сабагентов, оттуда в чат сабагента и так далее.

Поскольку сабагенты используют ту же конечную машину состояний Running-Idle-Inactive, что и корневые агенты, их можно выгружать из памяти после 30 минут бездействия, а в момент обращения пользователя или агента к любому из них он подгружается обратно с диска. В сильно вложенных чатах это позволяет заметно экономить память.

Agents View со списком работающих, простаивающих и неактивных сессий

Управление сессиями и контекстом. Вся история сессии агента хранится в виде append-only JSONL-файлов на диске. Каждая строка — это JSON-запись, которая может включать сообщения, переключения модели, сводки компактификации или записи расширений. Ветвление, форк и клонирование происходят внутри одного и того же файла путём перемещения указателя листа. Полная история всегда восстановима через /tree.

Компактификация происходит либо при достижении контекстом порогового значения, либо напрямую по команде агента в REPL с помощью compact.run(). Она в первую очередь используется для очистки основного контекста агента, но полная история, включая прошлые компактификации, при необходимости доступна программно из ядра IPython.

Введение REPL потребовало дополнительной работы по управлению состоянием IPython. Компактификация и очистка ядра выполняются асинхронно и одновременно, для чего запускается отдельный агент, выполняющий роль сборщика мусора. Это необходимо, чтобы избежать накопления памяти REPL для каждого агента.

RLM и программный вызов инструментов (PTC)

Prime Agent опирается на ядро IPython как на свой REPL, который сохраняется на протяжении всей сессии и может вызываться на каждом ходу. При инициализации ядро заранее импортирует каждый навык/инструмент как модуль, включая rlm — для рекурсивного программного вызова сабагентов.

rlm — асинхронная функция, а значит модель может свободно вызывать и распараллеливать обращения к сабагентам прямо в коде. Порождение сабагента (например, await rlm("sub-task")) запускает полноценную сессию с собственной моделью, ядром IPython, деревом сессии и историей диалога. Вызов возвращается немедленно, поскольку вся дальнейшая коммуникация между агентами идёт через инструмент agent_message.send(...).

Prime Agent может использовать несколько полезных примитивов такого рода — например, параллельный запуск нескольких сабагентов или запуск фоновой работы.

# Parallel fan-out — rlm() returns at task admission with a child handle,
# never the child's answer; results arrive as agent_message replies.
auth = await rlm("Summarize the authentication flow in auth/. Reply to me when done.", name="auth-expert")
api = await rlm("Summarize the updated HTTP API layer in src/. Reply to me when done.", name="http-expert")
# ... continue independent work; each child replies via
# agent_message.send(..., receiver_role="parent") when finished ...

# Steer or extend a child mid-flight by role + name
await agent_message.send(
    "Also cover middleware error handling.",
    receiver_role="child",
    receiver_name=api.name,
)

По мере того как модели продолжают совершенствоваться, будут появляться новые паттерны вызова инструментов и сабагентов. Ожидается, что будущие поколения моделей будут меньше полагаться на подробные направляющие промпты и больше — на такой прямой программный контроль.

Оркестрация и коммуникация между агентами

Фоновый демон управляет всеми активными сессиями Prime Agent. Также Prime Agent поддерживает обмен сообщениями Agent-to-Agent (A2A) через демон, позволяя любой сессии Prime Agent отправлять сообщения любой другой сессии тем же механизмом, что используется для общения с постоянными сабагентами. Это упрощает оркестрацию для управления прогрессом роёв сабагентов и коммуникацию по поводу общих ресурсов напрямую между затронутыми агентами. Чтобы избежать нежелательной коммуникации между независимыми сессиями, обмен сообщениями в Prime Agent ограничен «нуклеарной семьёй» — родительскими, дочерними или родственными процессами.

# Spawn a named child; the handle returns at admission.
handle = await rlm("Find what's wrong in this auth-flow. Reply to me with your findings.", name="auth-reviewer")
# ... the child's findings arrive as a parent-role reply, not a return value ...

# Later (survives compaction and kernel restarts): recover the retained child.
children = await rlm.list_subagents()
auth_child = next(c for c in children if c.session_name == "auth-reviewer")

# Send a follow-up turn into the same retained child session.
await agent_message.send(
    "Follow up: identify the main edge cases and any likely bugs.",
    receiver_role="child",
    receiver_name=auth_child.session_name,
    mode="follow_up",
)

Prime Agent поддерживает постоянных сабагентов благодаря нативной для RLM среде выполнения: собственный каталог сессии сабагента, его контекст, ядро IPython и история сессии сохраняются даже после завершения исходного вызова сабагента. Prime Agent может отправлять дальнейшие сообщения, чтобы продолжить работу постоянного сабагента, обращаясь к его уникальному идентификатору сессии прямо из своего ядра IPython.

Самосовершенствование через Continual Harness

Состояние харнесса Prime Agent хранится в постоянном ядре IPython как rlm.harness, немедленно доступное для чтения и вызова агентом прямо посреди выполнения задачи, и каждое изменение также записывается на диск, сохраняясь между ходами и сессиями. Continual Harness формализует это состояние как H=(ρ,G,K,M)H=(\rho, G, K, M) — промпт, сабагенты, навыки и память, — уточняемое онлайн из собственной траектории агента без сбросов.

Каждый из четырёх компонентов предоставляет один и тот же интерфейс: создание, чтение, обновление, удаление. create_prompt_note(...), create_memory(...), create_skill(...) и create_subagent(...) добавляют запись соответствующего типа, update_X(...) и delete_X(...) зеркально им соответствуют, а list(kind) или get(kind, id) считывают их обратно. Навыки следуют тому же интерфейсу: создание навыка на основе Python — это вызов create_skill(...) со ссылкой в стиле SKILL.md, та же операция, что и добавление памяти или промпт-заметки.

# Create a memory and a skill through the same CRUD surface
rlm.harness.create_memory("flaky test pattern", "retry three times before failing")
rlm.harness.create_skill("retry helper", "...", reference={"type": "python", "import": "retry_helper"})

# Read them back
rlm.harness.list("memory")
rlm.harness.get("skill", "retry_helper")

/refine — это самообучающийся конвейер, построенный поверх этого CRUD-интерфейса. Он читает собственную траекторию агента — запись того, что было опробовано и что произошло, — и применяет наименьшую релевантную CRUD-правку, улучшающую харнесс в сторону лучших результатов: обновление промпт-заметки, памяти, навыка или спецификации сабагента, а не переписывание харнесса целиком. Каждое уточнение фиксирует свой триггер и полученный результат, поэтому улучшения подкреплены доказательствами, а не произвольны. Уточнение выполняется в два этапа. Планирование — вызов LLM, предлагающий правку, — выполняется в фоне и не блокирует текущий диалог. Применение правки — запись на диск и пересборка системного промпта — происходит быстро и лишь ненадолго блокирует работу на границе следующего хода. Агент может вызвать refine.run() напрямую в любой момент, когда замечает повторяющуюся ошибку или тактику, пригодную для повторного использования, а не только по расписанию.

# Schedule a refinement focused on a specific observation
await refine.run("promote the retry-on-flaky-test pattern to a skill")

# Both status calls follow the same shape, though refine's plan/apply split
# means "in_flight" can mean either background planning or the fast apply step
await compact.status()   # tokens, context_window, percent, scheduled
await refine.status()    # pending, in_flight

Базовый системный промпт остаётся неизменным — /refine редактирует только слой харнесса вокруг него. Поддерживается откат по истории предыдущих уточнений, позволяющий отменить неудачное обновление харнесса по его идентификатору.

Автономный режим для оценок

Режим оценки (eval mode) Prime Agent сочетает три взаимодополняющих механизма. Цель (goal) задаёт общую задачу: постоянную цель с опциональным бюджетом токенов, к достижению которой харнесс постоянно возвращает агента на каждом ходу, отслеживая прогресс до тех пор, пока агент явно не вызовет goal.complete(). Heartbeats — это запланированные, в духе cron, сообщения, вставляемые в сессию с фиксированным интервалом, используемые для регулярных проверок, например мониторинга прогресса сабагента или опроса статуса обучения. Автономный режим — это сам механизм продолжения работы, гарантирующий, что агент продолжит двигаться к цели, а не остановится преждевременно, если очередной ход не даёт дальнейшего вывода. Вместе эти механизмы позволяют сессии работать без присмотра длительное время, оставаясь при этом в рамках явного бюджета и доступной для наблюдения через Agents View.

Автономный режим доступен напрямую из командной строки через флаг --autonomous, без необходимости писать скрипты. Запуск может задавать цель завершения и лимит ходов в одной команде:

prime-agent \
  --autonomous \
  --autonomous-gate "npm run check" \
  --autonomous-max-turns 20 \
  "Implement and verify the requested change"

Команда-«шлюз» (gate) выполняется перед тем, как сессии разрешат завершиться. Если проверка не проходит, её ограниченный по объёму вывод возвращается агенту для новой попытки, а Prime Agent пропускает повторный запуск неудавшегося шлюза, если рабочее пространство не изменилось с последней попытки. Флаги --autonomous-max-turns, --autonomous-max-tokens и --autonomous-timeout-ms ограничивают, соответственно, число продолжений, число токенов и время по настенным часам.

Оценка Prime Agent

Prime Agent служит одновременно и практическим coding-агентом, и дизайном харнесса, который можно оценивать в исследовательских целях. Отдельно отмечается, что хотя многие современные фронтир-модели обучаются под конкретный харнесс, на момент выхода ни одна модель не была обучена конкретно под Prime Agent или его ключевой набор функций.

ARC-AGI 3. ARC-AGI 3 — популярный бенчмарк интеллекта, измеряющий способность агента к символьному рассуждению и обучению правилам симулированных миров. Prime Agent в автономном режиме проверялся на нескольких разных фронтир-моделях в сравнении с их родными харнессами. Поскольку Prime Agent разрабатывался как CLI coding-агент, единственные специфичные для ARC AGI 3 изменения касаются промпта задачи, вдохновлённого стандартной настройкой промпта из PRO-LONG.

Лучшие результаты получены с Opus 5 в Prime Agent — 95,5% RHAE Best@1, что превышает заявленный ARC базовый уровень экспертов-людей в 95,4%. В трёх прогонах Prime Agent стабильно показывает хорошие результаты [95,0, 95,2, 95,5] и 99,97% Best@3 при прохождении всех 183 уровней из 183. Медианную карточку результатов action replay (95,2%) для ARC-AGI-3 можно посмотреть здесь.

Масштабирование ARC-AGI-3 по вычислениям на этапе инференса: оценка от числа выходных токенов на игруМасштабирование стоимости ARC-AGI-3: оценка от расчётной стоимости API
ARC-AGI-3: (слева) масштабирование по вычислениям на этапе инференса: оценка от числа выходных токенов на игру. (справа) масштабирование стоимости: оценка от расчётной стоимости API.

Помимо более высокого максимального результата по сравнению с родным харнессом каждой модели, Prime Agent достигает этого при меньшем общем расходе токенов. Экономия происходит за счёт программного выполнения функций над данными вместо трат токенов на чтение данных через вызовы инструментов.

Отдельно отмечается, что при проверке Opus 5 и GPT-5.6 Sol с Claude Code и Codex соответственно результаты оказались хуже, чем официально заявленные, поэтому в этих случаях предпочтение отдаётся официальным опубликованным цифрам.

Длинный контекст и длительные задачи

Многие сложные практические задачи сводятся к задачам с длинным контекстом. Цель тестирования — показать, что Prime Agent с открытыми моделями представляет собой конкурентоспособную альтернативу закрытым моделям и харнессам — как в качестве универсального агента, так и в качестве базового харнесса для оценки.

Для сравнения выбран набор распространённых бенчмарков на длинный контекст в области кода, поиска и общих задач с длинными рассуждениями; Prime Agent сравнивается с несколькими популярными харнессами. Основной контекст в каждом харнессе для начала выгружается в файл в памяти. Для харнессов закрытых моделей используются соответствующие им модели (Codex с GPT, Claude Code с Opus), а для Prime-Agent и Pi-mono (с сабагентами) выбрана открытая модель GLM-5.2.

GLM-5.2 (high)Opus 5 (high)GPT-5.6 Sol (high)
ТестPrime-AgentPi-mono (с сабагентами)Prime-AgentClaude CodePrime-AgentCodex
OOLONG (yahoo, 128k)
длинный контекст
0.7000.4200.9000.9200.9400.500
OOLONG-Pairs
длинный вывод
0.8740.5560.9290.9220.9110.895
OBLIQ-Bench (математика)
длинное ранжирование [ndcg@10]
0.6690.6350.8020.7950.6120.646
LongBenchPro (English)
длинное понимание
0.7770.7680.8040.7900.7940.790
LongBenchv2
задачи с экспертной разметкой
0.6800.6960.7440.7460.7140.704
ManyIH Coding
длинные инструкции
0.4240.3860.5360.5220.4990.454
ManyIH IF
длинные инструкции
0.2090.1640.2250.1750.2160.232
LongCot-Mini
длинные рассуждения
0.6380.6130.7220.5580.6710.681
EmulatorBench
длинное написание кода
0.2080.0000.047*0.062*0.2750.228

В целом Prime Agent показывает конкурентоспособные результаты в широком спектре длинных задач, особенно против харнессов, чья модель не была обучена конкретно под них. Prime Agent особенно хорошо справляется с длительными задачами и задачами с длинным контекстом и может конкурентоспособно работать самостоятельно, в качестве автономного агента. Ниже — несколько конкретных примеров и экспериментов на длинных сценариях, где Prime Agent демонстрирует сильные результаты.

Создание эмуляторов с нуля. Эмулятор — это программа, воспроизводящая наблюдаемое поведение другой вычислительной системы. Prime Agent тестировался на EmulatorBench — предварительном бенчмарке, где агенту нужно построить на Rust эмуляторы для различных игровых систем. Агентам даётся спецификация эмулятора и набор диагностических тестов в виде верификатора.

Корректность эмулятора определяется его способностью имитировать поведение целевой машины. Это измеряется с помощью написанных людьми диагностических программ, проверяющих поведение эмулятора — флаги процессора, тайминги PPU и другие компоненты. Чтобы минимизировать эффект загрязнения данных, агенту требовалось строить эмулятор с нуля на Rust, в песочнице, без референсной реализации. Приводятся предварительные результаты этого бенчмарка кода с длинным контекстом, усреднённые по 16 реконструкциям эмуляторов, а также по двум эмуляторам — SEGA Genesis и Nintendo Game Boy Color, — которые Prime Agent успешно воспроизвёл. С Opus прогоны неожиданно не смогли решить задачи, несмотря на успешные ответы на вызовы инструментов.

EmulatorBench: оценка от стоимости при создании эмулятора Sega GenesisEmulatorBench: оценка от стоимости при создании эмулятора Game Boy Color
EmulatorBench: оценка от стоимости при создании (слева) эмулятора Sega Genesis и (справа) эмулятора Game Boy Color.

Написание GPU-ядер. Написание производительных GPU-ядер — итеративный процесс, требующий постоянной проверки, профилирования и подстройки кода до достижения корректности. Prime Agent как харнесс для написания GPU-ядер оценивался на недавно вышедшем бенчмарке PMPP-Hard — наборе задач, где агенты должны писать производительные GPU-ядра, проходящие набор проверок корректности через KernelGuard, инструмент верификации, используемый в официальном рейтинге ядер GPU MODE.

Результаты Prime Agent на бенчмарке PMPP-Hard

Долгосрочный кейс: игры

Автономная игра в видеоигры стала интересным примером для моделей и харнессов с точки зрения того, как они справляются с принятием решений на длительном горизонте. Игры часто требуют от харнесса балансировать информацию и контекст объёмом в миллионы токенов, одновременно эффективно используя эту информацию для принятия действий и избегания катастрофических состояний.

Factorio. Factorio — 2D-симулятор завода, где агент должен добывать ресурсы, исследовать технологии и строить автоматизированные фабрики, наращивая производство этих ресурсов. Factorio Learning Environment (FLE) — интерфейс, упрощающий пространство наблюдений и действий для LLM, играющей в Factorio; он использовался для подключения Prime Agent к игре.

Пространство действий и наблюдений FLE представляет собой Python-модуль, к которому обращаются программно на каждом ходу. Он напрямую интегрируется в ядро IPython Prime Agent. Чтобы задействовать программный вызов инструментов (PTC) для сабагентов, в игре запускались четыре управляемых персонажа.

Prime Agent играет в Factorio с четырьмя управляемыми персонажами
Prime Agent использует сабагентов и программный вызов инструментов, чтобы «читерить» в Factorio, телепортируя ресурсы напрямую в станки.

Основная метрика в FLE — производственный счёт, взвешенное среднее по всем производимым агентом материалам. Prime Agent успешно использовал /refine, чтобы превращать неудачи и успехи в память и навыки соответственно. Накопленный опыт использовался для проектирования всё более эффективных компоновок станков, что повышало производственный счёт от прогона к прогону. Это позволило Prime Agent за несколько часов эффективно выйти на уровень производственного счёта 100 000+.

Однако были также замечены случаи «взлома вознаграждения» (reward hacking) со стороны Prime Agent в FLE. Агент обнаружил, что может полностью обходить правила Factorio, спавня ресурсы напрямую в сборочные станки через RCON-команды — даже несмотря на явный heartbeat-промпт, напоминающий не читерить в Factorio. Как только этот эксплойт был найден, тот же цикл уточнения, который до этого выстраивал легитимные навыки, переключился на создание эффективных навыков читерства.

MazeBench. MazeBench — открытая 3D-среда для проверки пространственного мышления, где игрок управляет 3D-кубом и должен решать головоломки в комнатах внутри общего лабиринта, собирая по пути кристаллы. Показано, что фронтир-модели сильно испытывают трудности с этой задачей, тратя миллиарды токенов на прохождение лишь малой части общего мира. Opus 5 и GPT-5.6 Sol с Prime Agent сравниваются с их родными харнессами, а также GLM-5.2 с Claude Code. Согласно метрикам бенчмарка, приводится уникальное число найденных комнат, уникальное число состояний и общее число собранных кристаллов — всё в зависимости от общего расхода токенов.

Результаты MazeBench: комнаты, состояния и кристаллы в зависимости от расхода токенов

Дальнейшие шаги

Prime Agent представляет новую парадигму в проектировании агентных харнессов. Несмотря на сильные результаты по сравнению с другими харнессами, при работе Prime Agent с моделями по-прежнему заметны некоторые трения. Это указывает на то, что остаётся огромный потенциал прироста производительности за счёт обучения моделей непосредственно под парадигму Prime Agent — или даже под отдельные компоненты RLM и Continual Harness.

Разработчики убеждены, что совместное обучение модели и харнесса — доминирующая парадигма для раскрытия новых возможностей. Многие функции Prime Agent не используются в полной мере без обученной под них модели, и остаётся значительный потенциал прироста производительности от обучения непосредственно с этим харнессом. Эти новые возможности планируется представить публично и в открытом виде.

Полный технический отчёт с дополнительными подробностями обещан в ближайшее время.

Благодарности

Prime Agent построен поверх pi. Авторам pi выражена благодарность за их работу.

Цитирование

@article{primeintellect2026primeagent,
author = {Seth Karten and Alex L. Zhang and Kevin Thomas and Sebastian Müller and Prime Intellect Team},
title = {Prime Agent: A Self-Improving RLM Harness},
journal = {Prime Intellect Blog},
year = {2026},
month = {August},
note = {https://www.primeintellect.ai/blog/prime-agent}
}