Как создать своего AI-агента на VPS с нуля
Узнайте, как реализовать цикл работы AI-агента на собственном VPS. Разберем архитектуру взаимодействия с инструментами, интеграцию MCP, управление памятью и логику вызовов.
Что такое AI-агент на самом деле
AI-агент — это цикл, работающий вокруг языковой модели. Модель анализирует ситуацию, выбирает одно действие, ваш код выполняет его, результат возвращается в модель, и цикл повторяется, пока задача не будет решена. В этом заключается вся суть. Обычный чат-бот отвечает один раз и останавливается. Агент продолжает работу, выполняя реальные действия между своими ответами, пока не достигнет поставленной вами цели. Этот цикл достаточно прост, чтобы написать его за один вечер, с чего и начинается поэтапный путь изучения агентов с нуля, прежде чем добавлять инструменты, память и механизмы безопасности.
Действие — это ключевой компонент. Сама по себе языковая модель только генерирует текст. Она не может прочитать файл, вызвать API или выполнить команду. Агент предоставляет модели набор инструментов, которые ей разрешено использовать, и способ их запросить. Когда модель хочет выполнить поиск в сети или записать файл, она не делает это сама. Она формирует структурированный запрос, ваш код запускает инструмент, и ответ возвращается как следующий фрагмент данных, который считывает модель. Модель обеспечивает принятие решений, а ваш сервер — их исполнение.
Не для каждой задачи нужен агент, и использование его по умолчанию — распространенная ошибка. Если шаги известны заранее, обычный скрипт будет проще, быстрее и надежнее. «Забирать эту страницу каждый час и отправлять мне цену по email» — это задача для планировщика, а не для агента. Создавайте агента, когда путь заранее не определен, когда модели необходимо анализировать полученные данные и решать, что делать дальше. Цена использования агента — непредсказуемость, поэтому платите её только тогда, когда гибкость действительно оправдана.
Инструменты: как действует агент
Инструмент — это любая возможность, которую вы предоставляете модели, описанная достаточно подробно, чтобы она понимала, когда её использовать. Чтение файла, выполнение команды shell, запрос к базе данных, отправка сообщения: каждый из них является инструментом с именем, кратким описанием и списком входных данных. Вы определяете инструменты, а модель решает, когда их вызывать. Поиск в сети обычно является первым инструментом, который стоит добавить, и если вы уже используете собственный экземпляр SearXNG, вы можете превратить его в поисковый бэкенд агента вместо оплаты коммерческого API для поиска.
Механизм везде одинаков, независимо от используемой модели. Модель возвращает структурированный запрос, в котором указано имя инструмента и заполнены его входные параметры. Ваш код видит этот запрос, выполняет соответствующую функцию и отправляет результат обратно на следующем шаге. Модель считывает результат и либо вызывает другой инструмент, либо формирует окончательный ответ. Вызов функций — это основа работы любого агента, а цикл, управляющий этим процессом, состоит всего из нескольких строк обычного кода.
Здесь же сосредоточен ваш контроль. Модель может запросить выполнение команды, но ничего не произойдёт, пока ваш код не решит её запустить. В этом промежутке вы можете разместить запросы на подтверждение для опасных действий, ограничения на то, к чему инструмент может обращаться, и журнал всех действий агента. Агент настолько безопасен, насколько безопасны инструменты, которые вы ему предоставляете, и проверки, которые вы перед ними устанавливаете.
MCP: стандартный способ подключения инструментов
Написание интеграции для каждого сервиса вручную быстро утомляет. Model Context Protocol (MCP) — это открытый стандарт, решающий данную проблему. Вместо того чтобы программировать новый инструмент для работы с файлами, базами данных или системами отслеживания задач, вы подключаете агента к MCP-серверу, который уже предоставляет эти ресурсы в виде инструментов. Агент использует один протокол, а сервер берет на себя взаимодействие с целевой системой.
Преимущество заключается в возможности повторного использования. MCP-сервер, созданный кем-то другим для используемого вами сервиса, становится доступен вашему агенту без написания дополнительного кода интеграции, а сервер, который создали вы, может использоваться любым агентом, поддерживающим этот протокол. Некоторые self-hosted приложения теперь включают встроенную поддержку MCP: openGym, трекер тренировок предоставляет MCP-сервер в режиме только для чтения, поэтому агент может отвечать на вопросы о вашей истории тренировок, не имея возможности вносить в неё изменения. На VPS это важно, так как вы можете запускать MCP-серверы как отдельные небольшие сервисы рядом с агентом, предоставляя каждому из них только необходимые права доступа. Если системы, стоящие за этими серверами, находятся в сети, недоступной для VPS (например, база данных дома или в офисе), анонсирование этой сети в вашей tailnet с помощью subnet router позволит агенту обращаться к ним по частным адресам, не открывая ничего для публичного интернета. Настройку я описываю в разделе запуск MCP-серверов на VPS.
Память и извлечение данных
Языковая модель не обладает собственной памятью между вызовами. Все сведения о текущей задаче должны передаваться ей при каждом обращении. Для коротких задач это приемлемо, так как весь диалог помещается в один запрос. Объем данных зависит от размера контекстного окна, а у локально запущенных моделей в Ollama по умолчанию установлено небольшое значение, из-за чего старые сообщения незаметно удаляются. Поэтому стоит настроить num_ctx в соответствии с объемом трафика, который генерирует ваш цикл, прежде чем обвинять агента в забывчивости. Для более длительных задач управление памятью необходимо осуществлять самостоятельно, и существует два полезных шаблона.
Первый — это «черновик» (scratchpad). Вы предоставляете агенту файл, в который он может записывать и из которого может считывать данные, и даете команду фиксировать изученное в процессе работы. При следующем обращении или в новой сессии агент считывает файл и продолжает работу с того места, где остановился. Это память в виде обычного документа; метод эффективен, так как агент воспринимает файл как еще один инструмент.
Второй — это извлечение данных (retrieval). Когда агенту требуются знания из большого массива документов, которые не поместятся в один запрос, вы сохраняете эти документы в доступном для поиска виде и извлекаете только нужные фрагменты, когда они необходимы. Этот шаблон называется RAG (retrieval-augmented generation). Агент задает вопрос, ваш код находит несколько подходящих фрагментов, и только они передаются модели. Хранилище находится на вашем сервере, поэтому конфиденциальные документы не покидают его пределы.
Множество агентов, один координатор
Один агент с набором инструментов подходит для большинства задач. Когда работа оказывается объемной или естественным образом делится на части, эффективнее использовать другую схему: агент-координатор, который делегирует задачи специализированным субагентам. Координатор разбивает цель на части, передает каждый фрагмент субагенту, предназначенному для такого типа работы, и объединяет результаты. Для делегирования требуется канал связи между компонентами, и самый простой его вариант уже есть на вашем сервере: две сессии Claude Code на одном VPS могут обмениваться сообщениями. Это недорогой способ проверить, как работают процессы передачи задач, прежде чем создавать собственные механизмы координации.
Преимущество заключается в фокусировке. Субагент с узкой специализацией и ограниченным набором инструментов принимает более качественные решения, чем агент-универсал, пытающийся справиться со всем сразу; кроме того, независимые части могут выполняться одновременно. Стоимость такого подхода — это затраты на координацию, которые вполне реальны, поэтому придерживайтесь использования одного агента, пока задача явно не потребует большего. Начинайте с простого и добавляйте новых агентов только тогда, когда один агент явно перестает справляться с нагрузкой.
Self-hosted или hosted: где запускать модель агента
Модель — это единственный компонент агента, который не обязательно запускать самостоятельно, и выбор места её размещения является самым важным решением. Hosted-модель, доступная через API, обеспечивает максимальные возможности рассуждения без необходимости обслуживания инфраструктуры: вы отправляете текст и получаете ответ. Self-hosted модель работает на вашем собственном сервере, что гарантирует конфиденциальность каждого запроса, фиксированную стоимость вместо оплаты за каждый токен и независимость от сторонних сервисов. Обратной стороной являются функциональность и трудозатраты. Лучшие hosted-модели превосходят те, что можно запустить локально, а для запуска собственной модели требуется достаточное количество оперативной памяти.
Последний пункт — это практическое ограничение. Модель должна помещаться в память сервера, а при использовании GPU — в видеопамять. Модель, размер которой превышает возможности оборудования, не загрузится. Перед планированием self-hosted агента проверьте, подходит ли выбранная модель для вашего оборудования:
Если параметры не соответствуют, у вас есть три варианта действий: выбрать модель меньшего размера, применить более агрессивную квантование для её сжатия или использовать hosted API для задач рассуждения, оставив на сервере только инструменты и данные. Многие self-hosted агенты начинают работу с локальной моделью через Ollama on a VPS и переключаются на hosted API для выполнения наиболее сложных задач.
Сервер — это зона повышенного риска
Агент, способный выполнять shell-команды и записывать файлы, обладает большими полномочиями, и именно поэтому он опасен. Суждения модели качественны, но не идеальны, поэтому неверная инструкция, ошибка в коде или вредоносный ввод могут превратить полезного помощника в инструмент, который удалит важные данные или допустит утечку секретов. Вопросы безопасности здесь не являются факультативными, и на сервере это самый важный аспект.
Несколько привычек обеспечивают большую часть защиты. Запускайте агента от имени выделенного пользователя с ограниченными правами, никогда не используйте root, чтобы ограничить масштаб возможных ошибок; логика этого подхода описана в запуске сервисов от имени непривилегированного пользователя. Храните секреты, такие как API keys, отдельно от кода и настройте права доступа так, чтобы их мог читать только этот пользователь. Изолируйте инструменты, взаимодействующие с системой, чтобы агент имел доступ только к тому, что ему действительно необходимо. Если вы не хотите прописывать каждую проверку вручную, плагины DeepSeek Harness, которые стоит установить решают те же задачи с помощью готовых решений: правила доступа для инструментов, сканирование на предмет prompt injection и лимиты на использование ресурсов до автоматической остановки. Практический пример по усилению защиты реального self-hosted агента см. в безопасном запуске OpenClaw на VPS. Если вы предпочитаете использовать облачную модель для интеллектуальных задач, в руководстве создание агента с использованием Claude на VPS применяются те же принципы для конкретной модели.
В качестве практического примера, создание персонального агента в стиле OpenClaw объединяет все эти компоненты. Если вы хотите запустить готовое решение, начните с self-hosting Hermes Agent на VPS или запуск Agent Zero на собственном сервере, а в лучшие self-hosted AI-агенты в 2026 году приведено сравнение всех готовых вариантов, которые мы рассматриваем.
FAQ
В чем разница между AI-агентом и чат-ботом?
Чат-бот отвечает на сообщение и завершает работу. Агент работает в цикле: модель определяет действие, ваш код его выполняет, результат возвращается модели, и процесс повторяется до завершения задачи. Разница в том, что агент совершает реальные действия между итерациями, вызывая инструменты для чтения файлов, выполнения команд или запросов к сервисам, вместо того чтобы просто генерировать текст.
Нужен ли GPU для запуска AI-агента на VPS?
Только если вы размещаете модель на собственном сервере. Цикл агента, инструменты и память — это обычный код, который отлично работает на стандартном VPS без GPU. GPU важен, если вы хотите запускать языковую модель на своем оборудовании, так как модель должна помещаться в видеопамять. Если вы используете облачную модель через API, тяжелые вычисления происходят на стороне провайдера, и достаточно обычного VPS.
Что такое MCP и нужно ли оно для создания агента?
MCP (Model Context Protocol) — это открытый стандарт для подключения агента к инструментам и источникам данных. Он не является обязательным, так как каждый инструмент можно написать вручную. MCP экономит время, позволяя повторно использовать существующие серверы для стандартных сервисов и один раз настроить ваши системы для работы с любым агентом. Это удобство становится оправданным по мере увеличения количества интеграций.
Безопасно ли предоставлять AI-агенту доступ к моему серверу?
Это может быть безопасно при условии изоляции. Агент, выполняющий команды, ограничен правами учетной записи, под которой он запущен, и набором разрешенных инструментов. Запускайте его от имени непривилегированного пользователя, храните секреты в недоступном месте, изолируйте инструменты, работающие с файловой системой, и требуйте подтверждения для действий, которые сложно отменить. Относитесь к агенту как к недоверенному коду, который обладает интеллектом, и предоставляйте ему только те права, которые необходимы для выполнения задачи.