Як створити власного AI-агента на кшталт OpenClaw
Розберіть архітектуру self-hosted AI-агента, який виконує shell-команди, керує браузером і працює з файлами. Спочатку врахуйте CVE-2026-32922 з оцінкою 9.9/10.
Що насправді являє собою OpenClaw
OpenClaw — це self-hosted персональний AI-агент. Ви запускаєте його на власному сервері, підключаєте до чат-застосунків, якими вже користуєтеся, і він може виконувати shell-команди, керувати браузером, читати та записувати файли й реагувати на повідомлення, які ви йому надсилаєте. OpenClaw поширюється за ліцензією MIT, працює за принципом local-first і станом на середину 2026 року має понад 380,000 зірок на GitHub. Це робить його одним із найпопулярніших за кількістю зірок проєктів на платформі. За всім інформаційним шумом стоїть досить невеликий набір компонентів, з’єднаних у логічну систему. У цій статті розглянуто ці компоненти, щоб ви зрозуміли, як побудовано такий інструмент і де є критичні місця.
Спочатку важливе попередження, оскільки воно впливає на всі описані нижче проєктні рішення. У березні 2026 року протягом чотирьох днів було розкрито дев’ять проблем безпеки OpenClaw, зокрема критичну вразливість підвищення привілеїв із оцінкою 9.9 з 10 (CVE-2026-32922). Проєкт передбачає, що саме ви, як оператор, маєте посилити його захист. Агент, якому дозволено виконувати будь-яку команду, настільки безпечний, наскільки безпечні сервер, на якому він працює, і обмеження, які ви для нього встановили. Пам’ятайте про це під час читання.
Демон gateway: один процес, доступний лише локально
У центрі системи працює один довготривалий процес, який зазвичай називають gateway. Це площина керування. Він отримує повідомлення, визначає потрібну дію, запускає інструменти та надсилає відповіді. Усе інше підключається до нього.
Найважливіше в gateway — адреса, на якій він приймає підключення. За замовчуванням OpenClaw прив’язує його до loopback-адреси 127.0.0.1, тому gateway недоступний з інтернету, якщо навмисно не відкрити до нього доступ. Не змінюйте це налаштування. Саме цей процес виконує команди, тому доступний ззовні gateway надає будь-кому, хто його знайде, віддалену точку входу на сервер. Коли потрібно підключитися до нього з ноутбука, використовуйте VPN або SSH-тунель, а не відкривайте порт. Неможливо атакувати порт, до якого немає доступу.
Конектори каналів: як отримати повідомлення та надіслати відповідь
Персональний агент корисний лише тоді, коли з ним можна спілкуватися через застосунки, якими ви вже користуєтеся. Саме для цього призначені конектори каналів. Кожен конектор працює з однією платформою, наприклад Telegram, WhatsApp, Slack або Discord, використовуючи bot API або webhooks цієї платформи.
Для всіх конекторів використовується однакова схема. Конектор реєструє бота на платформі, отримує вхідне повідомлення від користувача — або опитуючи платформу, або приймаючи webhook, який платформа надсилає конектору, — передає це повідомлення gateway, а потім надсилає відповідь gateway через той самий API. Конектор є тонким шаром трансляції. Він перетворює подію «надійшло повідомлення Telegram» на «ось текст для агента» і виконує зворотне перетворення. Створення власного конектора здебільшого зводиться до вивчення документації щодо bot API потрібної платформи та зіставлення її формату повідомлень із форматом gateway.
Цикл між моделлю та інструментом
Усередині шлюзу є компонент, який перетворює його з чат-бота на агента. Це цикл.
Надходить повідомлення. Шлюз передає його мовній моделі разом зі списком інструментів, які моделі дозволено використовувати. Модель читає повідомлення і вирішує: відповісти безпосередньо чи викликати інструмент. Якщо модель викликає інструмент, шлюз запускає його, отримує результат і передає цей результат назад моделі. Модель аналізує результат і знову приймає рішення. Цикл повторюється, доки моделі більше нічого не потрібно робити і вона не сформує остаточну відповідь.
Цей цикл є основою агента. Він однаковий незалежно від того, працює агент у чат-застосунку чи в терміналі. Докладніше про стандартне підключення інструментів до цього циклу див. у матеріалі підключення інструментів через Model Context Protocol. Інший бік питання, пов’язаний із самою моделлю, розглянуто в матеріалі запуск моделі на власному обладнанні.
Набір інструментів — це основна перевага та головна небезпека
Саме інструменти роблять OpenClaw потужним. Один інструмент виконує shell-команду, інший керує браузером, ще один читає та записує файли. Якщо надати циклу вище доступ до них, він зможе виконувати майже все, що ви можете зробити за клавіатурою. Ці широкі можливості є основою продукту та водночас становлять головний ризик.
Агент, який може виконувати будь-яку команду за інструкціями, що надходять із chat-застосунку, має велику площу атаки. Небезпечна інструкція, prompt injection-атака, прихована на вебсторінці, яку відвідує browser tool, або помилка на кшталт вразливостей березня 2026 року можуть перетворити запит «прочитай мій календар» на команду «видали мої файли». Тому обмеження не є необов’язковими додатковими функціями. Запускайте агента від імені окремого непривілейованого користувача без sudo, щоб у разі компрометації він не міг підвищити привілеї. Доступ до небезпечних інструментів надавайте лише після підтвердження, щоб агент запитував дозвіл перед виконанням руйнівної дії. Виконуйте інструменти в sandbox, щоб неконтрольована команда залишалася ізольованою. Ізолюйте API key моделі, щоб його витік не надав зловмиснику доступу до вашого облікового запису.
Перш ніж відкрити доступ до будь-якого компонента, який виконує shell-команди, навмисно опрацюйте базові заходи безпеки. Створіть тут checklist для власного сервера, а потім виконайте його від початку до кінця:
Роботу від імені непривілейованого користувача докладно описано в розділі запуск сервісів від імені непривілейованого користувача, а повний посібник із безпечного налаштування реального проєкту наведено в розділі безпечний запуск OpenClaw на VPS.
Пам’ять у вигляді звичайних файлів
Більшість користувачів очікує, що пам’ять агента зберігатиметься в базі даних. В OpenClaw це не так. Пам’ять зберігається у вигляді звичайних Markdown-файлів на диску, і цей підхід варто наслідувати.
Файли прості у використанні. Не потрібно переносити схему, підтримувати роботу окремого сервісу чи вивчати мову запитів. Їхній вміст можна перевірити: відкрийте каталог і прочитайте, що саме агент вважає відомим про вас, виправте неправильний запис у файлі або видаліть спогад, вилучивши відповідний файл. Файли також легко переносити, оскільки для переміщення агента на новий сервер достатньо скопіювати каталог. Для персонального агента одного користувача достатньо каталогу з текстовими файлами, а вся система залишається зрозумілою в обслуговуванні.
Навички: переносний спосіб додавати можливості
Окрім вбудованих інструментів, OpenClaw використовує переносний формат навичок, щоб спільнота могла розширювати його можливості без змін у ядрі. Навичка — це автономний набір інструкцій і, іноді, коду, який навчає агента виконувати нове завдання. Агент завантажує навичку, коли цього потребує завдання. Вебпошук зазвичай є першою навичкою, яку додають, а спрямування цієї навички на власний екземпляр SearXNG дає змогу не передавати запити комерційному пошуковому API та чітко показує межі довіри навички, оскільки все, що вона повертає, — це текст, написаний сторонньою особою.
Цінність такого формату полягає в тому, що можливостями можна ділитися. Хтось створює навичку для конкретного завдання, публікує її, а інші встановлюють її у своїх системах. Якщо ви створюєте власного агента, раннє визначення невеликого й чіткого формату розширень допоможе згодом не вбудовувати кожну можливість безпосередньо в ядро.
Власна модель
OpenClaw не прив’язаний до конкретної моделі. Він не постачається із власною мовною моделлю. Натомість він підключається до вибраної вами моделі. Це може бути hosted API або модель, яку ви запускаєте самостійно.
Такий поділ важливий для вартості, конфіденційності та контролю. Hosted API надає доступ до найпотужніших моделей без потреби керувати обладнанням. Оплата стягується за токени, а ваші запити залишають сервер. Модель, розгорнута на власній інфраструктурі за допомогою, наприклад, Ollama, зберігає всі повідомлення на вашому сервері. У такому разі ви сплачуєте лише за обладнання та електроенергію, але модель може бути меншою або працювати повільніше. Багато хто поєднує обидва підходи. Якщо ви хочете повністю зберегти приватність агента, самостійне розгортання моделі на вашому VPS усуває цей останній розрив, а Hermes Agent — ще один self-hosted агент, з яким варто порівняти OpenClaw.
Чи варто створювати власну систему?
Усе це можна створити самостійно. Компоненти не є екзотичними: daemon, кілька конекторів чатів, цикл взаємодії моделі з інструментами, каталог із Markdown і формат плагінів. Розуміти ці компоненти справді корисно, оскільки це пояснює принцип роботи будь-якого агента, якого ви використовуватимете, і показує, де саме виникають ризики.
Але для більшості людей чесна відповідь полягає в тому, щоб запустити готове рішення та посилити його захист, а не винаходити все заново. OpenClaw уже реалізував конектори, цикл роботи та формат skills і пройшов реальну перевірку безпеки. Краще витратити зусилля на те, що справді залежить від вас: правильне налаштування та hardening власного сервера. Якщо спочатку ви хочете пройти навчальний шлях, послідовне опрацювання концепцій поетапно ефективніше за читання вихідного коду агента без підготовки, оскільки після кожного етапу у вас залишатиметься один реально створений компонент. Створіть невеликий варіант для навчання. Запустіть і захистіть готовий варіант для практичного використання.
Загальні основи описано в матеріалі створення власного AI-агента на VPS, а в матеріалі створення агента з Claude ті самі ідеї показано на прикладі конкретної моделі як інтелектуального ядра.
FAQ
Чи складно створити агента на кшталт OpenClaw?
Окремі компоненти не є складними. Процес gateway, конектор чату, цикл роботи з моделлю та інструментами і папка з файлами — кожен із них досить простий. Складно зробити все безпечно. Агент, який запускає shell-команди з повідомлень чату, створює серйозну поверхню атаки. Правильне налаштування sandbox, дозволів і запуску від непривілейованого користувача потребує більше роботи, ніж з’єднання самих функцій.
Чому OpenClaw зберігає пам’ять у файлах Markdown, а не в базі даних?
Тому що для персонального агента одного користувача файлів достатньо, і це значно простіше. Не потрібно запускати окремий сервіс бази даних. Пам’ять легко читати та виправляти вручну. Щоб перенести агента на інший сервер, достатньо скопіювати каталог. База даних виправдана за більшого масштабу, але не в цьому випадку.
Яка частина персонального AI-агента є найнебезпечнішою?
Інструменти, які дають йому змогу виконувати дії: запускати shell-команди, керувати браузером і записувати файли. Саме заради цього агента створюють, і саме через це він може завдати шкоди. Інцидент безпеки OpenClaw у March 2026, під час якого за чотири дні було виявлено дев’ять проблем, зокрема критичну проблему з рейтингом 9.9, найкраще показує, чому до шару інструментів потрібно ставитися обережно: запускайте агент від непривілейованого користувача, обмежуйте руйнівні дії та ізолюйте виконання в sandbox.
Чи потрібна мені власна мовна модель, щоб створити такого агента?
Ні. Агенти на кшталт OpenClaw не залежать від конкретної моделі, тому можна підключити будь-яку обрану модель. Це може бути hosted API для найпотужніших моделей або модель, яку ви запускаєте самостійно для забезпечення повної приватності. Self-hosting за допомогою Ollama зберігає всі повідомлення на вашому сервері, але потребує запуску меншої моделі.