Як створити власного 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 опублікували велику кількість повідомлень про вразливості: 22 лише 13 березня та ще п’ять 16 березня, а National Vulnerability Database зареєструвала 199 CVE для OpenClaw, опублікованих того місяця. Пакет повідомлень від 13 березня містив дві критичні вразливості з оцінкою 9.9 з 10. Одна з них — вразливість підвищення привілеїв (CVE-2026-32922), яка давала змогу пристрою лише з правами pairing створювати повні admin-токени. Проєкт розрахований на те, що захистом займатиметеся ви як оператор. Агент, якому дозволено виконувати будь-які команди, настільки безпечний, наскільки безпечним є сервер, на якому він працює, і встановлені вами обмеження. Пам’ятайте про це під час читання.
Демон gateway: один процес із обмеженим доступом
У центрі системи працює один довготривалий процес, який зазвичай називають gateway. Це площина керування. Він отримує повідомлення, вирішує, що потрібно зробити, запускає інструменти та надсилає відповіді. Усе інше підключається до нього.
Найважливіше в gateway — адреса, на якій він прослуховує з’єднання. У разі звичайного встановлення на хості OpenClaw прив’язує його до loopback-адреси, 127.0.0.1, тому він недоступний з інтернету, якщо навмисно не відкрити до нього доступ. Контейнерні образи є винятком: у власній документації з безпеки OpenClaw зазначено, що за замовчуванням вони використовують відкриту прив’язку. Тому під час запуску контейнера залишайте автентифікацію увімкненою та не публікуйте його порт в інтернет. У будь-якому разі забезпечте приватний доступ до нього. Саме цей процес постійно виконує команди, тому відкритий gateway надає кожному, хто його виявить, віддалену точку опори на вашому сервері. Коли потрібно підключитися до нього з ноутбука, використовуйте VPN або SSH-тунель, а не відкривайте порт. Неможливо атакувати порт, до якого немає доступу.
Конектори каналів: як отримати повідомлення та надіслати відповідь
Персональний агент корисний лише тоді, коли з ним можна спілкуватися через застосунки, якими ви вже користуєтеся. Саме для цього призначені конектори каналів. Кожен конектор працює з однією платформою, наприклад Telegram, WhatsApp, Slack або Discord, використовуючи bot API або webhooks цієї платформи.
Для всіх конекторів використовується однакова схема. Конектор реєструє бота на платформі, отримує вхідне повідомлення від користувача — або опитуючи платформу, або приймаючи webhook, який платформа надсилає конектору, — передає це повідомлення gateway, а потім надсилає відповідь gateway через той самий API. Конектор є тонким шаром трансляції. Він перетворює подію «надійшло повідомлення Telegram» на «ось текст для агента» і виконує зворотне перетворення. Створення власного конектора здебільшого зводиться до вивчення документації щодо bot API потрібної платформи та зіставлення її формату повідомлень із форматом gateway.
Цикл між моделлю та інструментом
Усередині шлюзу є компонент, який перетворює його з чат-бота на агента. Це цикл.
Надходить повідомлення. Шлюз передає його мовній моделі разом зі списком інструментів, які моделі дозволено використовувати. Модель читає повідомлення і вирішує: відповісти безпосередньо чи викликати інструмент. Якщо модель викликає інструмент, шлюз запускає його, отримує результат і передає цей результат назад моделі. Модель аналізує результат і знову приймає рішення. Цикл повторюється, доки моделі більше нічого не потрібно робити і вона не сформує остаточну відповідь.
Цей цикл є основою агента. Він однаковий незалежно від того, працює агент у чат-застосунку чи в терміналі. Докладніше про стандартне підключення інструментів до цього циклу див. у матеріалі підключення інструментів через Model Context Protocol. Інший бік питання, пов’язаний із самою моделлю, розглянуто в матеріалі запуск моделі на власному обладнанні.
Набір інструментів — це основна перевага і головна небезпека
Саме інструменти роблять OpenClaw потужним. Один інструмент виконує команди оболонки, інший керує браузером, ще один читає та записує файли. Якщо надати циклу вище доступ до них, він зможе виконувати майже все, що ви можете зробити за клавіатурою. Такий доступ є основою продукту, але водночас створює основний ризик.
Агент, який може виконати будь-яку команду за інструкціями з чат-застосунку, має велику площу атаки. Неправильна інструкція, prompt injection, прихована на вебсторінці, яку відкриває інструмент браузера, або помилка на кшталт вразливостей March 2026 можуть перетворити «прочитай мій календар» на «видали мої файли». Тому ці обмеження не є додатковими функціями. Запускайте агента від імені окремого непривілейованого користувача без sudo, щоб у разі компрометації він не зміг підвищити привілеї. Захистіть небезпечні інструменти етапом підтвердження, щоб агент запитував дозвіл перед руйнівною дією. Виконуйте інструменти в sandbox, щоб некерована команда залишалася ізольованою. Ізолюйте API key моделі, щоб його витік не надав зловмиснику доступ до вашого облікового запису. Також врахуйте інші секрети на тому самому сервері, оскільки справжні слабкі місця Vaultwarden — це admin token і backup file, а агент із доступом до shell може отримати доступ до обох.
Перш ніж відкривати доступ до будь-якого компонента, що виконує команди shell, свідомо опрацюйте базові заходи. Створіть тут checklist для власного сервера, а потім виконайте його зверху вниз:
Питання непривілейованого користувача докладно розглянуто в матеріалі запуск сервісів від імені непривілейованого користувача, а повний посібник із безпечного налаштування реального проєкту наведено в матеріалі безпечний запуск OpenClaw на VPS.
Пам’ять як звичайні файли
Більшість користувачів очікує, що пам’ять агента зберігатиметься в базі даних. В OpenClaw це не так. Пам’ять зберігається на диску як звичайні файли Markdown, і цей підхід варто наслідувати. Файли є джерелом істини; стандартний рушій пам’яті зберігає поруч із ними пошуковий індекс SQLite, який можна повторно створити на основі цих файлів.
Файли прості. Не потрібно переносити схему, підтримувати запущений сервіс або вивчати мову запитів. Їхній вміст можна перевірити: достатньо відкрити каталог і прочитати, що саме агент вважає відомим про вас, виправити неправильний запис у файлі або видалити спогад, вилучивши відповідний файл. Файли також легко переносити: щоб перемістити агента на новий сервер, достатньо скопіювати каталог. Для персонального агента одного користувача достатньо каталогу текстових файлів, а вся система залишається простою для розуміння.
Навички: портативний спосіб додавати можливості
Окрім вбудованих інструментів, OpenClaw використовує портативний формат навичок, щоб спільнота могла розширювати його можливості без змін у ядрі. Навичка — це самодостатній набір інструкцій і, іноді, коду, який навчає агента виконувати нове завдання. Агент завантажує навичку, коли цього потребує завдання. Пошук у вебі зазвичай є першою навичкою, яку додають. Підключення цієї навички до власного екземпляра SearXNG дає змогу не передавати запити до комерційного пошукового API та чітко показує межі довіри навички, оскільки весь вміст, який вона повертає, є текстом, написаним сторонньою особою.
Перевага такого формату полягає в тому, що можливостями можна ділитися. Хтось створює навичку для конкретного завдання, публікує її, а інші додають її до своїх систем. Така зручність має і зворотний бік: навичка є кодом сторонньої особи, який ваш агент без додаткових перевірок виконуватиме, тому перед завантаженням варто перевіряти все, що ви не написали самі, за допомогою власного security scanner. Якщо ви створюєте власного агента, раннє визначення невеликого й чіткого формату розширень позбавить вас необхідності згодом жорстко вбудовувати кожну можливість у ядро.
Власна модель
OpenClaw не прив’язаний до конкретної моделі. Він не постачається із власною мовною моделлю. Натомість він підключається до вибраної вами моделі. Це може бути hosted API або модель, яку ви запускаєте самостійно.
Такий поділ важливий для вартості, конфіденційності та контролю. Hosted API надає доступ до найпотужніших моделей без потреби керувати обладнанням. Оплата стягується за токени, а ваші запити залишають сервер. Модель, розгорнута на власній інфраструктурі за допомогою, наприклад, Ollama, зберігає всі повідомлення на вашому сервері. У такому разі ви сплачуєте лише за обладнання та електроенергію, але модель може бути меншою або працювати повільніше. Багато хто поєднує обидва підходи. Якщо ви хочете повністю зберегти приватність агента, самостійне розгортання моделі на вашому VPS усуває цей останній розрив, а Hermes Agent — ще один self-hosted агент, з яким варто порівняти OpenClaw.
Чи варто створювати власний агент?
Усе це можна створити самостійно. Компоненти не є екзотичними: daemon, кілька chat connector, цикл взаємодії моделі з tools, каталог Markdown і формат plugin. Розуміння цих компонентів справді корисне, оскільки воно пояснює принцип роботи кожного агента, якого ви використовуватимете, і точно показує, де виникають ризики.
Але для більшості користувачів чесна відповідь — запустити готове рішення та посилити його захист, а не відтворювати його з нуля. OpenClaw уже реалізував connector, цикл взаємодії та формат skill і пройшов реальну перевірку безпеки. Ваші зусилля краще спрямувати на те, що справді залежить від вас: правильне налаштування та посилення захисту на власному сервері. Якщо спочатку ви хочете пройти навчальний шлях, послідовне опрацювання концепцій на практиці ефективніше за читання вихідного коду агента без підготовки, оскільки після кожного етапу у вас залишається власноруч створений компонент. Створіть невеликий агент для навчання. Запустіть готовий агент і належно захистіть його для практичного використання.
Загальні основи описано в матеріалі як створити власний AI-агент на VPS, а в матеріалі як створити агента з Claude ті самі ідеї показано на прикладі конкретної моделі як основного компонента.
FAQ
Чи складно створити агента на кшталт OpenClaw?
Окремі компоненти не є складними. Процес gateway, конектор чату, цикл роботи з моделлю та інструментами і папка з файлами самі по собі реалізуються досить просто. Складність полягає в безпечній реалізації. Агент, який виконує shell-команди з повідомлень чату, створює серйозну поверхню атаки. Правильне налаштування sandbox, дозволів і запуску від непривілейованого користувача потребує більше роботи, ніж з’єднання цих функцій.
Чому OpenClaw зберігає пам’ять у файлах Markdown, а не в базі даних?
Тому що для персонального агента одного користувача файлів достатньо, і це значно простіше. Не потрібно запускати окремий сервіс бази даних. Пам’ять легко читати й виправляти вручну. Щоб перенести агента на інший сервер, достатньо скопіювати каталог. База даних виправдана за більшого масштабу, але не в цьому випадку.
Яка частина персонального AI-агента є найнебезпечнішою?
Інструменти, які дають йому змогу виконувати дії: запускати shell-команди, керувати браузером і записувати файли. Саме вони потрібні для створення агента, але саме через них він може завдати шкоди. Хвиля рекомендацій з безпеки для OpenClaw у March 2026 — 27 опублікованих у період з 13 до 16 March, включно з двома критичними з оцінкою 9.9, — найкраще показує, чому до рівня інструментів потрібно ставитися обережно: запускайте агент від непривілейованого користувача, обмежуйте руйнівні дії та використовуйте sandbox для виконання.
Чи потрібна мені власна мовна модель, щоб створити такого агента?
Ні. Агенти на кшталт OpenClaw не залежать від конкретної моделі, тому можна підключити потрібну модель. Це може бути hosted API для найпотужніших моделей або модель, яку ви запускаєте самостійно для повної приватності. Self-hosting за допомогою Ollama зберігає кожне повідомлення на вашому сервері, але потребує запуску меншої моделі.