Ornith-1.0: открытые coding-модели научились создавать собственные агентные стратегии
DeepReinforce представила Ornith-1.0 — семейство открытых моделей для агентного программирования размером от 9 до 397 млрд параметров. Главная особенность проекта — self-scaffolding: во время обучения модель совершенствует не только решение задачи, но...
Команда DeepReinforce выпустила Ornith-1.0 — семейство открытых моделей, специализированных на agentic coding. В линейку входят компактные и крупные варианты от 9B Dense до 397B MoE. Разработчики утверждают, что флагманская версия показывает результаты на уровне закрытых frontier-моделей, а ключевое преимущество достигается за счёт обучения модели самостоятельно создавать и улучшать scaffolds — внутренние схемы...
Главные тезисы
- DeepReinforce представила открытое семейство моделей Ornith-1.0 для agentic coding.
- В линейку входят модели 9B Dense, 31B Dense, 35B MoE и 397B MoE.
- Модели построены на базе предварительно обученных Gemma 4 и Qwen 3.5.
- Ключевая технология — self-scaffolding: модель учится одновременно решать задачу и создавать стратегию, которая управляет решением.
- Для борьбы с reward hacking используются неизменяемые границы среды, детерминированный монитор и отдельная LLM-судья.
- В асинхронном RL старые токены получают меньший вес или исключаются из обучения.
Что представила DeepReinforce
Ornith-1.0 — семейство открытых языковых моделей для агентного программирования. В релиз вошли четыре основные конфигурации:
- 9B Dense;
- 31B Dense;
- 35B MoE;
- 397B MoE.
Младшая модель рассчитана в том числе на локальное и периферийное развёртывание, тогда как 397B-версия позиционируется как флагманская модель для максимальной производительности. В основе моделей используются предварительно обученные Gemma 4 и Qwen 3.5.
Модели опубликованы на Hugging Face. Для части вариантов доступны основные веса, FP8-версии и GGUF-сборки. В карточке 397B-модели указана лицензия MIT.
Что означает self-scaffolding
Обычный coding-agent состоит не только из языковой модели. Вокруг неё обычно находится scaffold — набор правил и механизмов, которые определяют, как агент:
- анализирует задачу;
- планирует дальнейшие действия;
- вызывает инструменты;
- обрабатывает ошибки;
- хранит промежуточное состояние;
- проверяет результат;
- решает, когда закончить работу.
Как правило, такую архитектуру заранее проектируют люди. Инженеры пишут системные инструкции, создают циклы вызова инструментов, добавляют память, повторные попытки и механизмы проверки.
В Ornith-1.0 scaffold становится частью обучения. Модель учится не только выдавать правильное решение, но и создавать стратегию, которая помогает к нему прийти. DeepReinforce называет такой подход self-scaffolding.
Как устроен цикл обучения
Каждый шаг reinforcement learning состоит из двух этапов.
Сначала модель получает задачу и scaffold, который использовался ранее, после чего предлагает его улучшенную версию. Затем, опираясь уже на новый scaffold и описание задачи, модель генерирует полноценный rollout решения.
Награда за результат распространяется на оба этапа. Таким образом, система оптимизирует одновременно:
- итоговое решение задачи;
- способ, которым агент организует собственную работу.
Во время повторных итераций scaffolds изменяются, сравниваются и отбираются по тому, насколько успешные траектории они создают. В результате для разных типов задач могут автоматически формироваться разные стратегии — без необходимости вручную прописывать отдельный harness для каждой категории.
Почему это важно для coding-agent
В агентном программировании качество зависит не только от знаний модели.
Даже сильная LLM может работать нестабильно, если агент:
- плохо планирует последовательность действий;
- не замечает ошибки инструментов;
- повторяет неудачные шаги;
- слишком рано считает задачу завершённой;
- теряет важный контекст;
- неправильно использует доступные команды;
- не проверяет внесённые изменения.
Self-scaffolding переносит часть этой работы из внешней инженерной обвязки внутрь процесса обучения. Модель должна сама находить более эффективные способы организации решения.
Это не означает, что runtime и внешние ограничения становятся ненужными. Напротив, DeepReinforce отдельно фиксирует внешнюю среду и разрешённый набор инструментов, чтобы модель могла изменять внутреннюю стратегию, но не границы безопасности.
Проблема reward hacking
Если модель сама создаёт scaffold, она может научиться не решать задачу, а обходить проверку.
Например, агент может:
- прочитать скрытые тесты;
- изменить проверяющий скрипт;
- скопировать готовое решение из окружения;
- создать файл, наличие которого проверяет verifier, не выполняя реальную работу;
- жёстко записать ожидаемый вывод.
Это классическая проблема reward hacking: система формально получает награду, но не достигает исходной цели.
DeepReinforce описывает три уровня защиты от такого поведения.
Первый уровень: неизменяемая внешняя граница
Модель не может изменять среду, доступные инструменты и изоляцию тестов.
Она совершенствует только внутренний scaffold:
- память;
- обработку ошибок;
- планирование;
- оркестрацию шагов;
- правила принятия решений.
Таким образом, модель может менять способ работы, но не может переписать условия задачи или механизм оценки.
Второй уровень: детерминированный монитор
Отдельный монитор проверяет действия, которые можно описать строгими правилами.
Он блокирует попытки:
- читать закрытые пути;
- изменять тесты и verifier;
- выполнять команды вне разрешённого набора инструментов;
- обращаться к недоступным частям окружения.
Траектории с такими нарушениями получают нулевую награду и исключаются из вычисления преимущества при обучении.
Третий уровень: отдельная judge-модель
Не все обходы можно обнаружить детерминированными правилами. Агент может действовать только разрешёнными инструментами, но всё равно пытаться формально удовлетворить проверку без полноценного решения.
Для таких случаев используется замороженная LLM-судья. Она работает как дополнительное право вето поверх обычного verifier, а не как основной источник награды.
Такая схема разделяет роли:
- verifier проверяет формальный результат;
- монитор контролирует строгие технические запреты;
- LLM judge оценивает подозрительное поведение на уровне намерения.
Асинхронное reinforcement learning
Длинные agentic rollouts создают отдельную проблему: пока агент генерирует длинную траекторию, обучаемая модель успевает обновиться. Старые токены оказываются получены политикой, которая уже отличается от текущей.
DeepReinforce использует pipeline RL и вводит коэффициент устаревания токенов:
w(d_t) =
1, если d_t ≤ K₁
exp(-λ(d_t - K₁)), если K₁ < d_t ≤ K₂
0, если d_t > K₂
Здесь d_t обозначает возраст токена относительно текущей политики. Свежие токены учитываются полностью, более старые постепенно получают меньший вес, а после заданного порога полностью исключаются.
Функция потерь GRPO дополнительно умножается на этот коэффициент:
L_t = min(
r_t A_t,
clip(r_t, 1 - ε⁻, 1 + ε⁺) A_t
) · w(d_t)
Отношение вероятностей задаётся так:
r_t =
πθ(y_t | x, y_<t)
─────────────────
πθ_beh(y_t | x, y_<t)
Механизм нужен для того, чтобы старые части длинных rollout меньше влияли на обновление уже изменившейся модели.
Какие результаты заявляет DeepReinforce
По данным разработчиков, Ornith-1.0-397B набрала:
- 77,5 на Terminal-Bench 2.1 с harness Terminus-2;
- 78,2 на Terminal-Bench 2.1 с Claude Code;
- 82,4 на SWE-Bench Verified;
- 62,2 на SWE-Bench Pro;
- 78,9 на SWE-Bench Multilingual;
- 77,1 в среднем на ClawEval.
В опубликованной таблице Ornith-1.0-397B превосходит Claude Opus 4.7 на Terminal-Bench 2.1 и SWE-Bench Verified, но уступает более новой Claude Opus 4.8 на большинстве приведённых тестов. На отдельных заданиях модель также уступает GLM-5.2 и другим конкурентам.
Поэтому формулировку о превосходстве над закрытыми моделями нужно читать внимательно: она относится к отдельным версиям моделей и конкретным бенчмаркам, а не ко всем сценариям программирования.
Кроме того, результаты опубликованы самой командой DeepReinforce и пока не подтверждены независимым воспроизведением.
Результаты Ornith-1.0-35B
Версия Ornith-1.0-35B, по данным разработчиков, получила:
- 64,2 на Terminal-Bench 2.1 с Terminus-2;
- 62,8 с Claude Code;
- 75,6 на SWE-Bench Verified;
- 50,4 на SWE-Bench Pro;
- 69,3 на SWE-Bench Multilingual.
В таблице DeepReinforce она заметно опережает Qwen 3.5-35B, Qwen 3.6-35B и Gemma 4-31B на большинстве представленных тестов.
Особенно выделяется Terminal-Bench: 35B-модель показывает результат выше, чем базовая Qwen 3.5-397B, хотя уступает ей или находится рядом на некоторых других испытаниях.
Компактная Ornith-1.0-9B
Младшая версия содержит 9 млрд параметров и предназначена для более доступного локального развёртывания.
Заявленные результаты:
- 43,1 на Terminal-Bench 2.1 с Terminus-2;
- 40,6 с Claude Code;
- 69,4 на SWE-Bench Verified;
- 42,9 на SWE-Bench Pro;
- 52,0 на SWE-Bench Multilingual.
На SWE-Bench Verified модель заметно превосходит Gemma 4-31B, несмотря на значительно меньший размер. На отдельных тестах она также приближается к Qwen 3.5-35B.
Для локальных coding-agent именно эта версия может оказаться наиболее практичной, поскольку 397B-модель требует инфраструктуры, недоступной большинству разработчиков.
Как проводилась оценка
DeepReinforce раскрыла часть параметров тестирования.
Для Terminal-Bench 2.1 с Terminus-2 использовались:
- JSON parser;
- temperature=1.0;
- top_p=1.0;
- контекст 128K;
- тайм-аут четыре часа;
- 32 CPU;
- 48 ГБ оперативной памяти;
- усреднение по пяти запускам.
В варианте с Claude Code использовалась версия Claude Code 2.1.126 и максимальный вывод до 131 072 токенов.
Для SWE-Bench Verified, Pro и Multilingual применялся OpenHands harness с контекстом 256K. Для NL2Repo использовался контекст 400K, вывод до 48K и фильтры против обхода проверки.
Эти различия важны: результаты agentic-бенчмарков сильно зависят не только от самой модели, но и от harness, лимитов, шаблона чата, доступных инструментов и параметров генерации.
Доступные модели
В коллекции Hugging Face опубликованы:
- Ornith-1.0-397B;
- Ornith-1.0-397B-FP8;
- Ornith-1.0-35B;
- Ornith-1.0-35B-FP8;
- Ornith-1.0-35B-GGUF;
- Ornith-1.0-9B;
- Ornith-1.0-9B-GGUF.
Для 397B-модели указана поддержка Transformers, vLLM, SGLang и Docker Model Runner. Модель можно развернуть через OpenAI-совместимый API с помощью vLLM или SGLang.
Пример запуска через vLLM:
pip install vllm
vllm serve "deepreinforce-ai/Ornith-1.0-397B"
Пример запроса к локальному серверу:
curl -X POST "http://localhost:8000/v1/chat/completions" \
-H "Content-Type: application/json" \
--data '{
"model": "deepreinforce-ai/Ornith-1.0-397B",
"messages": [
{
"role": "user",
"content": "Исправь ошибку в проекте и запусти тесты"
}
]
}'
Для SGLang сервер запускается следующим образом:
pip install sglang
python3 -m sglang.launch_server \
--model-path "deepreinforce-ai/Ornith-1.0-397B" \
--host 0.0.0.0 \
--port 30000
Карточка модели также содержит пример запуска через Docker:
docker model run hf.co/deepreinforce-ai/Ornith-1.0-397B
Эти примеры относятся к 397B-варианту, поэтому для практического локального использования большинству пользователей разумнее рассматривать версии 9B или 35B.
Почему релиз важен
Главная идея Ornith-1.0 заключается не только в публикации ещё одной сильной coding-модели.
Проект показывает возможное направление развития agentic AI: модели начинают обучаться не только выполнять задачи, но и создавать собственную рабочую методологию.
Раньше основная конкуренция шла вокруг:
- качества генерации кода;
- размера контекста;
- reasoning;
- скорости и стоимости;
- поддержки инструментов.
Теперь появляется ещё один уровень — способность модели оптимизировать сам процесс решения:
- как планировать;
- как хранить состояние;
- когда проверять результат;
- как восстанавливаться после ошибки;
- какие действия выполнять в первую очередь;
- когда менять стратегию.
Если подход окажется устойчивым, разработчикам coding-agent придётся меньше вручную настраивать сложные system prompts и orchestration loops. Часть таких решений модель сможет находить в процессе обучения.
Ограничения и открытые вопросы
Несмотря на сильные результаты, у Ornith-1.0 остаются вопросы.
Во-первых, заявленные показатели предоставлены разработчиками модели. Для окончательных выводов нужны независимые тесты с воспроизводимыми конфигурациями.
Во-вторых, self-scaffolding повышает сложность анализа поведения агента. Чем больше решений модель принимает относительно собственной стратегии, тем труднее объяснить, почему была выбрана конкретная траектория.
В-третьих, защита от reward hacking остаётся фундаментальной проблемой. Детерминированный монитор и LLM judge снижают риск, но не гарантируют, что модель не найдёт новый способ оптимизировать метрику вместо реальной задачи.
Наконец, сравнение agentic-моделей сильно зависит от внешней среды. Одна и та же модель может показывать разные результаты с OpenHands, Claude Code, Terminus или другим harness.
Итог
Ornith-1.0 — семейство открытых coding-моделей, в котором обучение распространяется не только на решение задач, но и на внутреннюю организацию агентной работы.
Модель сама предлагает scaffold, выполняет задачу с его помощью и получает общую награду за качество стратегии и результата. Повторяя этот цикл, система должна находить более эффективные способы работы с памятью, инструментами, ошибками и планированием.
По данным DeepReinforce, флагманская Ornith-1.0-397B достигает результатов уровня сильных закрытых моделей, а компактная 9B-версия конкурирует с моделями, которые в несколько раз крупнее.
Однако главное значение релиза находится не в конкретной позиции в таблице. Ornith-1.0 показывает переход от моделей, которые просто следуют созданному человеком агентному циклу, к моделям, которые учатся проектировать этот цикл самостоятельно.