Кодинг-агент — это AI-система, использующая большую языковую модель в качестве своего логического ядра для автономного написания, выполнения и итеративной доработки кода. В отличие от ассистента кода, который предлагает варианты в редакторе, кодинг-агент выполняет полный цикл «наблюдение-решение-действие»: читает файлы, вносит изменения, запускает команды, проверяет результат и дорабатывает, пока задача не будет выполнена.
Эта статья объясняет, как работает этот цикл — планировщик, уровень инференса LLM, инструменты и изолированная среда выполнения — а затем показывает, как собрать такое решение с помощью Novita LLM API и Agent Sandbox.
Если вам нужен уровень готовых инструментов вместо уровня агента, смотрите Лучшие инструменты AI-кодинга в 2026. Если вас интересует вариант этого цикла, специфичный для Claude, прочитайте Что такое кодинг-агент Claude?.
Для более глубокого изучения практических вариантов моделей в этой архитектуре, прочитайте Примеры использования больших языковых моделей для кодинг-агентов.
Если вам нужна практическая версия этого же цикла в виде рабочего процесса, смотрите Как автоматизировать задачи с помощью AI.
Если вы сравниваете именно открытые инструменты, смотрите Открытые кодинг-агенты: лучшие инструменты и как создать своего.
Что делает что-то кодинг-агентом
Разница между ассистентом кода и кодинг-агентом заключается в выполнении. Ассистент кода генерирует подсказку и останавливается. AI-кодинг-агент генерирует код, запускает его, читает результат и продолжает, пока цель не будет достигнута — или пока он не застрянет.
Эта способность к выполнению имеет три конкретных требования:
- Доступ к инструментам — способность читать файлы, записывать файлы и запускать команды оболочки.
- Изолированная среда — место для выполнения кода, которое не повредит основную систему, если что-то пойдет не так.
- Постоянный контекст — результаты работы инструментов возвращаются в контекст модели, чтобы она могла анализировать произошедшее.
Без всех трех у вас есть чат-бот, который может писать код. Со всеми тремя у вас есть агент.
Термин «code agent» (агент кода) используется в широком смысле, охватывая все: от встроенных подсказок в IDE до полностью автономных систем, которые могут взять нечетко заданную задачу, выяснить, какие файлы задействованы, внести изменения и проверить их работоспособность — без участия человека на каждом шаге.
Когда разработчики сравнивают варианты «best code agent» (лучший кодинг-агент), они обычно имеют в виду последние: системы, которые надежно выполняют многоэтапные задачи по кодингу с минимальным контролем.
Четыре уровня кодинг-агента
Каждый производственный AI-кодинг-агент состоит из четырех узнаваемых компонентов. Детали реализации различаются — разные фреймворки, разные LLM, разные провайдеры изолированных сред — но архитектура остается единой.
1. Планировщик
Планировщик получает описание задачи и разбивает ее на шаги, которые будет выполнять агент. Для простых задач это происходит неявно внутри рассуждений модели. Для сложных задач — «перенести этот сервис на новую библиотеку аутентификации» — явный этап планирования создает нумерованный список задач, которые модель последовательно выполняет, обновляя состояние после каждого шага.
Планирование также определяет, когда остановиться. Агент без критерия завершения будет бесконечно добавлять улучшения или, что хуже, зациклится на неудачном шаге. В большинстве реализаций условие успешного выполнения задачи кодируется в системном промпте, и модель решает, когда задача сделана.
2. Уровень инференса LLM
LLM — это логическое ядро любого AI-кодинг-агента. Она решает, какой инструмент вызвать следующим, какие аргументы передать и как интерпретировать результат. Это решение выражается в виде структурированного вызова инструмента — JSON-объекта с именем функции и параметрами, который фреймворк передает на фактический уровень выполнения.
Для кодинг-агентов LLM должна надежно обрабатывать длинные контексты (результаты инструментов быстро накапливаются), последовательно возвращать корректно сформированные вызовы инструментов (неправильно структурированный JSON на шаге 6 из 10 ломает весь запуск) и рассуждать об изменениях состояния при множестве последовательных вызовов инструментов.
Здесь важен провайдер инференса. Вам нужен API, поддерживающий function calling в формате, совместимом с OpenAI, структурированные выходные данные для принудительного создания валидного JSON на уровне модели, а также достаточные лимиты одновременных запросов для рабочих нагрузок агентов, порождающих параллельные подзадачи. Novita AI LLM API покрывает все три требования с эндпоинтом, совместимым с OpenAI, что позволяет менять модели без переписывания логики парсинга вызовов инструментов.
3. Уровень инструментов
Инструменты — это интерфейс агента с миром. Минимальному кодинг-агенту нужно четыре инструмента:
| Инструмент | Что делает |
|---|---|
read_file |
Возвращает содержимое файла по заданному пути |
write_file |
Записывает строку в файл по пути |
run_command |
Выполняет команду оболочки и возвращает stdout + stderr |
list_directory |
Перечисляет файлы и каталоги по пути |
Каждый инструмент должен возвращать полный вывод. Усеченные результаты или тихие сбои искажают представление агента о кодовой базе и вызывают накапливающиеся ошибки в дальнейшем. Инструмент run_command особенно должен захватывать как stdout, так и stderr — агент часто узнает больше из вывода ошибок, чем из успешного вывода.
Некоторые агенты добавляют инструмент search_files для поиска в стиле grep по кодовой базе или fetch_url для чтения внешней документации. Правильный набор зависит от области задач. Для чистой работы с кодом четырех вышеуказанных достаточно в большинстве случаев.
4. Изолированная среда (Sandbox)
Sandbox — это полностью изолированная среда Linux, где фактически выполняются команды агента. Это важно по двум причинам.
Первая — безопасность. Агенты генерируют код на основе пользовательских запросов, извлеченной документации и выведенных шаблонов. Даже благонамеренный агент может создать код, который удаляет файлы, открывает сетевые соединения или потребляет неограниченные ресурсы. Песочница удерживает любой ущерб внутри изолированной среды.
Вторая — сохранение состояния. Хорошая песочница сохраняет состояние файловой системы между вызовами инструментов в рамках сессии. Если агент создал файл на шаге 2, он должен оставаться на месте на шаге 8. Подходы со статичными контейнерами, где каждая команда выполняется в новом окружении, не работают для реальных задач кодинга.
Novita Agent Sandbox построен на базе Firecracker microVM, которые обеспечивают изоляцию на уровне ядра, более сильную, чем стандартные контейнеры. Сессии могут работать до 24 часов, состояние файловой системы сохраняется между командами, а холодный старт занимает менее 200 мс. Этого достаточно, чтобы ожидание запуска песочницы не прерывало интерактивный рабочий процесс.
Как работает цикл выполнения
Конкретный пример облегчает понимание цикла. Допустим, задача: «Добавить ограничение скорости для эндпоинта /login».
- План — модель читает задачу и определяет, что нужно: найти маршрут логина, понять текущий обработчик, добавить промежуточное ПО для ограничения скорости, проверить тестовым запуском.
- Наблюдение — агент вызывает
list_directoryдля поиска файлов маршрутов, затемread_fileдля обработчика логина. Содержимое файлов добавляется в контекст модели. - Решение — модель анализирует текущий код и решает, что делать: установить библиотеку ограничения скорости, изменить обработчик, добавить тест.
- Действие — агент вызывает
run_command("pip install slowapi"), затемwrite_fileс измененным обработчиком, затемrun_command("pytest tests/test_login.py"). - Повторное наблюдение — вывод теста возвращается в контекст. Если тесты не проходят, модель читает traceback, определяет ошибку и записывает исправленный файл.
- Завершение — когда тесты пройдены и у модели нет ожидающих шагов, она возвращает итоговое резюме.
Этот цикл выполняется в рамках одной сессии. Окно контекста — это рабочая память агента: каждое чтение файла, каждый вывод команды, каждый вызов инструмента накапливается там. Вот почему длина контекста так важна для кодинг-агентов: реальная задача рефакторинга легко может заполнить 100K токенов к шагу 15. Узнайте, как агенты нагружают провайдеров инференса иначе, чем одношаговый чат.
Создание кодинг-агента с Novita
Следующий пример соединяет Novita LLM API и Agent Sandbox. Он использует Python OpenAI SDK, направленный на эндпоинт Novita — модели Novita используют тот же интерфейс function calling, что и API OpenAI, поэтому интеграция не требует специального парсинга.
import os
import json
from openai import OpenAI
from novita_sandbox.code_interpreter import Sandbox
client = OpenAI(
base_url="https://api.novita.ai/openai",
api_key=os.environ["NOVITA_API_KEY"],
)
sandbox = Sandbox.create(timeout=1800)
def read_file(path: str) -> str:
try:
return sandbox.files.read(path)
except Exception as e:
return f"Error: {e}"
def write_file(path: str, content: str) -> str:
try:
sandbox.files.write(path, content)
return f"Written to {path}"
except Exception as e:
return f"Error: {e}"
def run_command(cmd: str) -> str:
try:
result = sandbox.commands.run(cmd)
return str(result)
except Exception as e:
return f"Error: {e}"
tools = [
{
"type": "function",
"function": {
"name": "read_file",
"description": "Read the contents of a file",
"parameters": {
"type": "object",
"properties": {"path": {"type": "string"}},
"required": ["path"],
},
},
},
{
"type": "function",
"function": {
"name": "write_file",
"description": "Write content to a file",
"parameters": {
"type": "object",
"properties": {
"path": {"type": "string"},
"content": {"type": "string"},
},
"required": ["path", "content"],
},
},
},
{
"type": "function",
"function": {
"name": "run_command",
"description": "Run a shell command in the sandbox and return output",
"parameters": {
"type": "object",
"properties": {"cmd": {"type": "string"}},
"required": ["cmd"],
},
},
},
]
dispatch = {
"read_file": read_file,
"write_file": write_file,
"run_command": run_command,
}
def run_agent(task: str, model: str) -> str:
messages = [
{
"role": "system",
"content": (
"You are a coding agent with access to a Linux sandbox. "
"Complete tasks by calling tools. When done, return a plain-text summary."
),
},
{"role": "user", "content": task},
]
while True:
response = client.chat.completions.create(
model=model,
messages=messages,
tools=tools,
tool_choice="auto",
)
msg = response.choices[0].message
messages.append(msg)
if not msg.tool_calls:
return msg.content
for call in msg.tool_calls:
fn = dispatch[call.function.name]
args = json.loads(call.function.arguments)
result = fn(**args)
messages.append(
{
"role": "tool",
"tool_call_id": call.id,
"content": result,
}
)
# Replace <model-id> with a function-calling model from novita.ai/docs
result = run_agent(
task="Write a Python script that counts words in a text file and run it on a sample input",
model="<model-id>",
)
print(result)
sandbox.kill()
Несколько замечаний по этой реализации:
- Цикл
while Trueвыполняется, пока модель не вернет сообщение без вызовов инструментов — это сигнал, что агент считает задачу выполненной. - Результаты инструментов добавляются в
messagesкак записи сrole: tool. Именно это формирует общий контекст на всех шагах. sandbox.kill()освобождает вычислительные ресурсы. Всегда вызывайте его при завершении сессии.
Полный список поддерживаемых моделей function calling смотрите в документации Novita по function calling. Более полное руководство, включая интерфейс Gradio, смотрите в статье Создание кодинг-агента с Agent Sandbox от Novita.
Выбор подходящей LLM для кодинг-агентов
HumanEval и SWE-bench измеряют одношаговую генерацию кода. Рабочие нагрузки агентов другие — то, что на самом деле ломает продуктовые кодинг-агенты, это сбои форматирования вызовов инструментов. Модель, которая хорошо показывает себя в бенчмарках, но иногда возвращает некорректный JSON в сложных многошаговых сессиях, будет давать сбои, которые трудно отлаживать.
Практические критерии оценки для AI-кодинг-агентов:
- Надежность вызовов инструментов — насколько последовательно модель возвращает корректно сформированные вызовы инструментов на протяжении 20+ шагов?
- Сохранение контекста — правильно ли модель ссылается на файл, прочитанный 40 шагов назад?
- Следование инструкциям — остается ли агент в рамках задачи или начинает изменять посторонние файлы?
- Корректность кода — действительно ли сгенерированный код выполняется или требует множества циклов исправления?
Запуск репрезентативного набора реальных задач кодинга и измерение процента их завершения более информативны, чем любой публичный бенчмарк. Выберите 20–30 задач из собственной кодовой базы, выполните их с помощью кандидатных моделей и посчитайте, сколько из них завершились без вмешательства человека.
Стоимость инференса быстро накапливается при масштабировании агентов. Одна сессия может потреблять от 200K до 500K токенов на всех шагах. Провайдеры, предлагающие кэширование промптов и конкурентоспособные цены за токен, существенно меняют экономику, когда вы запускаете сотни сессий агентов в день.
Открытые модели как экономичный путь
Закрытые frontier-модели лидировали в бенчмарках кодинга, но разрыв с лучшими открытыми моделями значительно сократился. Такие модели, как DeepSeek V3 и Qwen3, теперь конкурентоспособны в задачах генерации кода и использования инструментов — а поскольку они предоставляются через совместимые с OpenAI API, переключение заключается в изменении одной строки в параметре model.
Обе модели доступны через Novita LLM API. Вы получаете тот же эндпоинт, тот же интерфейс function calling и ту же интеграцию с Agent Sandbox — без необходимости самостоятельно управлять GPU-инфраструктурой. Это важно, поскольку оркестрация GPU, пакетная обработка и обеспечение надежности нетривиальны; делегирование их управляемому API позволяет сосредоточиться на логике агента.
Почему это особенно важно для кодинг-агентов: затраты на токены за сессию определяют экономику агентных рабочих нагрузок больше, чем лицензионные сборы. Команда, запускающая 200 сессий кодинг-агентов в день и достигающая сопоставимых показателей завершения задач с открытой моделью, может значительно сократить расходы на инференс, вообще не меняя свой интеграционный код.
Практический тест: выполните 50 репрезентативных задач кодинга с целевой моделью, измерьте процент успешных вызовов инструментов и процент завершения задач, затем сравните со стоимостью за сессию. Цифры бенчмарков не ответят на этот вопрос — ответит ваша реальная нагрузка.
Часто задаваемые вопросы
В чем разница между кодинг-агентом и ассистентом кода?
Ассистент кода (например, встроенные подсказки GitHub Copilot) генерирует варианты и останавливается. Кодинг-агент выполняет код, читает вывод и итерирует. Определяющая характеристика — цикл выполнения: читать, решать, действовать, наблюдать, повторять. Смотрите Кодинг-агент CLI vs IDE для сравнения того, как разные форм-факторы агентов используют этот цикл.
Нужна ли изолированная среда (sandbox) для создания кодинг-агента?
Да, если агент будет запускать код, сгенерированный на основе пользовательского ввода или внешних источников. Без изоляции ошибочная генерация кода может повредить файловую систему хоста или потребить неограниченные ресурсы. Даже для внутренних сценариев использования песочница предотвращает влияние вышедших из-под контроля процессов на хост. Контейнеры обеспечивают базовую изоляцию; изолированные среды на основе microVM, такие как Novita, предлагают более строгое разделение на уровне ядра для мультитенантных или чувствительных к безопасности нагрузок.
Может ли кодинг-агент работать без доступа в интернет?
Для большинства чисто кодинговых задач — да. Чтение/запись файлов и локальное выполнение команд покрывают большинство рабочих процессов. Ограничение исходящего трафика внутри песочницы на самом деле является хорошим выбором по умолчанию — это предотвращает отправку сгенерированным кодом неожиданных внешних запросов и упрощает модель угроз.
Что определяет лучшего кодинг-агента для данной задачи?
Надежность вызовов инструментов и процент завершения задач на вашей реальной нагрузке. Рейтинги публичных бенчмарков — это отправная точка для составления списка моделей, а не окончательный ответ. Выполните свои репрезентативные задачи, измерьте процент завершения и учтите стоимость токенов за сессию. Лучший кодинг-агент для небольшого стартапа, выполняющего легкий рефакторинг, может сильно отличаться от лучшего варианта для команды предприятия, которая автоматизирует ревью PR в масштабе.
Как долго может работать сессия кодинг-агента?
Это зависит от провайдера песочницы. Novita Agent Sandbox поддерживает сессии до 24 часов с сохранением состояния файловой системы между командами, что покрывает даже длительные задачи рефакторинга или миграции без необходимости реализовывать логику контрольных точек/восстановления в коде агента.
