Інакше пишемо код: Як ACP змінює правила гри в AI-програмуванні
Привіт, друзі! З вами Casey Byte, і сьогодні ми поринемо у світ, де кодування відбувається не зовсім так, як ви звикли. Минулого тижня мій давній знайомий, який завжди цікавився передовими технологіями, надіслав мені посилання, від якого я був вражений. Уявіть собі: ваш улюблений AI-асистент, наприклад, Claude AI чи Gemini, працює пліч-о-пліч з вашим редактором коду, як-от VS Code або Zed. І все це злагоджено, без проблем з інтеграцією та налаштуваннями. Звучить як мрія, чи не так?
Так ось, ця мрія стає ближчою до реальності завдяки Agent Client Protocol, або скорочено ACP. Це новий стандарт, що нагадує MCP (Meta-Protocol Command), проте його мета – налагодити взаємодію між “мозком” AI-кодера і будь-яким “тілом” – редактором коду. Хоча Zed ще тестує інтеграцію з ACP, повірте, це наче зазирнути у майбутнє вашої роботи з AI.
Сьогодні я покажу вам ACP в дії, продемонструю роботу та наочно розкажу, як ви теж можете все спробувати. Приготуйтеся, буде цікаво! Ми навчимося запускати різних AI-асистентів прямо в Zed, спостерігати за змінами в коді в реальному часі, приймати їх або відхиляти (це те, чого часто не вистачало!), а також зрозуміємо, як ACP робить усе це можливим. І це ще не все: ми навіть подивимося, як створити власного AI-агента через ACP. Готові? Поїхали!
Zed та Claude AI й Gemini CLI: Танок у ритмі ACP
Для початку, давайте переконаємося, як це виглядає на практиці. Я працюю в Zed, новому та потужному редакторі коду. Згадайте його, якщо знайомі з VS Code, Windsurf чи Cursor, але Zed – це дещо інше. Він швидкий, написаний мовою Rust, і, як виявилось, одним із перших реалізував підтримку ACP.
Що таке Zed? Це ваш помічник, завжди готовий допомогти з кодом. Він працює бездоганно, а тепер ще й інтегрується з AI-асистентами через ACP. Це як мати під рукою цілий арсенал розумних помічників, а не лише одного, який вміє все, але робить це не завжди добре.
Як почати? Усе простіше, ніж здається. Перше – встановити Zed. Це безкоштовний редактор з відкритим вихідним кодом. Посилання для завантаження під вашу операційну систему є в описі під цим відео. Я переконаний, що невдовзі й інші редактори, як-от VS Code, теж матимуть підтримку ACP, але зараз наш головний герой – Zed.
Зв’язок з AI: Щоб працювати з AI-асистентами, нам потрібен Gemini CLI з прямою інтеграцією ACP або Claude Code через спеціальний “адаптер”. Про адаптери поговоримо пізніше, адже це хитрість, яка робить неможливе досяжним.
Демонстрація:
- Відкриваємо панель агентів: У Zed є спеціальна кнопка в нижньому правому куті, яка показує панель для роботи з агентами.
- Додаємо нового агента: Натискаємо на значок “+” та вибираємо, кого хочемо підключити: Gemini CLI, Claude Code чи, можливо, власного агента (о, це буде окрема історія!).
- Підключаємо Gemini CLI: Вибираємо Gemini CLI, і – ось воно завантажується, вимагає автентифікації (якщо це перше підключення), і все відбувається прямо в редакторі. Без зайвих танців з бубном! У цьому й полягає магія ACP – все максимально просто.
Тепер я можу написати, наприклад: “Зміни повідомлення привітання на щось більш дружнє”. І, що найцікавіше, я можу вказати файли, з якими асистент має працювати, використовуючи знайомий синтаксис, як-от @mention
файлів. Навіть такі штуки, як під-агенти чи кастомні команди (/command
), які є в Claude Code, також доступні через ACP. Тобто ми нічого не втрачаємо, а тільки здобуваємо!
Ось, дивіться: Зміни повідомлення привітання у файлі greetings.js на "Привіт, друже!"
. І Zed показує мені правки прямо в коді. Я можу їх прийняти або відхилити. Це те, що мені завжди подобалося в Claude Code, але тепер це доступно з будь-яким асистентом!
А тепер спробуємо Claude Code: Робимо те саме. Відкриваємо панель, додаємо Claude Code. Все так само легко. Просимо: “Зміни повідомлення про завершення роботи на ‘До скорої зустрічі!'”. І вуаля! Зміна в коді з’являється. Я можу її прийняти чи відхилити. Раніше, аби скасувати зміни, я був змушений вдаватися до Git-інтеграції, особливо з Claude Code. Зараз це просто.
Цікаво знати: Хоча інтеграція ще в бета-версії, вже видно деякі “дитячі хвороби”. Іноді Gemini CLI може “зависнути” при запуску, або історія чату може не завжди працювати коректно. Але це дрібниці, які, я впевнений, швидко виправлять. Головне – бачення майбутнього, як ми працюватимемо з AI, вже на наших екранах.
Занурюємося в архітектуру: Як працює ACP під капотом
Щоб по-справжньому оцінити ACP, потрібно зрозуміти, як він працює. Навіть якщо ACP не стане головним стандартом, той, що його замінить, буде дуже схожим. Чому я так впевнений? Бо розробники Zed орієнтувалися на досвід найкращих – протоколи, як MCP та Language Server Protocol (LSP). LSP – це стандарт, який з’єднує мови програмування з редакторами коду, і він існує вже близько десяти років. ACP побудований на цих міцних фундаментах.
Простими словами:
- Редактор коду (наш клієнт) обмінюється інформацією з AI-асистентом (нашим сервером).
- Це спілкування відбувається через стандартний ввід/вивід (standard I/O) – ніби вони передають один одному певні повідомлення.
- Спілкування відбувається за протоколом JSON RPC, тому всі повідомлення – це структуровані дані у форматі JSON.
Як виглядає комунікація?
- Створення сесії: Спочатку редактор та асистент “вітаються”, встановлюючи зв’язок. Це наче потиск руки перед спільною роботою.
- Обмін даними: Йде постійний обмін інформацією. Зокрема, можуть надсилатися запити на виконання певних дій (tool calls), запити на дозволи або просто шматки тексту, якими вони обмінюються.
Приклад JSON-повідомлення:
Коли ви щось вводите в редактор, надсилається JSON-повідомлення:
json { "jsonrpc": "2.0", "method": "processUserMessage", "params": { "text": "Привіт, зміни цей рядок у файлі main.py", "context": { "file": "main.py", "line": 15 } } }
Це повідомлення проходить через ACP до AI-асистента, який його обробляє.
Відповідь від асистента:
Асистент може не лише надіслати текст, але й повідомити про свої плани або дії:
- Список завдань:
json { "jsonrpc": "2.0", "method": "agentTask", "params": { "tasks": [ {"type": "readFile", "file": "main.py"}, {"type": "writeFile", "file": "main.py", "content": "Новий рядок коду"} ] } }
- Текст для виведення:
json { "jsonrpc": "2.0", "method": "agentMessageChunk", "params": { "text": "Я тут змінюю рядок у файлі main.py..." } }
- Оновлення файлу:
json { "jsonrpc": "2.0", "method": "agentSessionUpdate", "params": { "type": "toolCall", "title": "Зміна коду", "file": "main.py", "range": {"from": 15, "to": 16}, "replacement": "Привіт, друже!" } }
Уявіть, що всі деталі – назви файлів, номери рядків, конкретні зміни – проходять через ці JSON-пейлоади! Це дає неймовірну гнучкість.
Fly.io: Хмарна платформа для вашого AI-коду
Перш ніж ми зануримось у створення власних агентів, згадаю про свого партнера – Fly.io. Якщо ви створюєте круті AI-додатки, але не знаєте, куди їх розгорнути, Fly.io – це те, що вам потрібно. Це хмарна платформа, яка робить розгортання будь-яких додатків, будь то AI-агенти, фронтенд чи щось інше, надзвичайно простим.
Чому Fly.io? Вони мають власну унікальну інфраструктуру. Це не просто ще одна “обгортка” над AWS. Це означає, що все буде швидше та дешевше для вас. Розгортання – миттєве, незалежно від фреймворку.
Як почати?
- Створіть обліковий запис – це безкоштовно.
- Встановіть CLI (Command Line Interface).
- Залогіньтесь командою
fly auth login
. - Перейдіть до директорії з вашим додатком та просто виконайте
fly launch
. Fly.io автоматично розпізнає тип вашого додатку та все налаштує. Це настільки легко, що мені навіть довелося кілька разів перевіряти, чи я точно нічого не пропустив!
Я розгорнув фронтенд для AI-кодинг воркшопу за лічені хвилини. Це справді потужний інструмент, і якщо ви хочете показати світові свої AI-творіння, Fly.io – ваш вибір. Посилання, звісно, в описі.
Створюємо власного AI-агента на ACP: Ти – бос!
А тепер перейдемо до найцікавішого – як створити власного AI-агента через ACP? Це відкриває безмежні можливості!
Архітектура: Вам потрібен додаток, який:
- Використовує потужну мовну модель (LLM) для обробки запитів.
- Застосовує інструменти (tools) для виконання реальних завдань (читання, запис файлів тощо).
- Спілкується назад через ACP, надсилаючи дані у правильному JSON-форматі.
На GitHub є чудовий приклад такого агента на TypeScript [Приклад агента на TypeScript]. Я детально розібрав його код.
Як це працює (на прикладі TypeScript):
initialize()
: Ця функція запускається під час першого підключення асистента. Тут налаштовуються початкові параметри.newSession()
: Запускається, коли ви створюєте нову “гілку” в Zed.simulateTurn()
: Це серце агента. Тут ви зазвичай викликаєте LLM, отримуєте від неї команди (наприклад, прочитати файлmain.py
або змінити його вміст) та надсилаєте їх назад через ACP.
У прикладі, який я вивчав, все було дещо простіше – там були жорстко закодовані повідомлення, що імітували роботу справжнього агента. Тобто я надсилаю запит, а агент у відповідь просто надсилає заздалегідь підготовлені JSON-відповіді, які імітують читання файлу чи заміну тексту.
Як підключити власного агента до Zed:
- Відкрийте налаштування Zed (три крапки у верхньому правому куті -> Settings).
- Знайдіть розділ для додавання зовнішніх агентів.
- Вкажіть шлях до вашого скрипта агента (наприклад,
agent.ts
). - Збережіть налаштування.
Тепер у списку агентів з’явиться ваш власний! Я запустив свою “саморобку”, і процедура підключення була неймовірно плавною. Це означає, що ви можете кастомізувати AI-асистента під свої потреби, використовуючи будь-які мовні моделі та інструменти.
Адаптер для Claude Code: Міст між світами
Цікавий момент: Claude Code не має прямої інтеграції з ACP. Але це не зупинило розробників Zed! Вони створили адаптер. По суті, це невелика програма, яка перетворює повідомлення від Claude Code SDK у формат ACP JSON, і навпаки.
Як це працює?
Приклад на GitHub [Приклад адаптера для Claude Code] показує, що для цього потрібно створити agent.ts
, який перетворюватиме повідомлення від SDK (текст, відповіді моделі, плани дій) у формат ACP. Це просто зміна формату даних. І весь цей адаптер для Claude Code містить близько 600 рядків коду! Це доводить, наскільки потужним та гнучким є ACP.
Archon та ACP: Майбутнє керування AI-асистентами
І ось ми підійшли до Archon – мого власного проєкту, центру керування AI-асистентами. Ми мріяли про інтеграцію з різними AI-агентами, і ACP – це те, чого нам не вистачало!
Мій колега Расмус вже зробив Proof of Concept (POC) – прототип, який демонструє, як Archon може взаємодіяти з Claude Code та іншими асистентами через ACP.
Що це означає?
Уявіть: ви підключаєте свій Git-репозиторій до Archon. Додаєте туди свою базу знань, підключаєте AI-асистентів через ACP. Потім ви просто кажете: “Зроби мені три файли hello world: один на Rust, один на Go, один на Python”. А Archon, використовуючи ACP, передає це асистенту, який самостійно створює робоче середовище, виконує завдання та повертає вам готовий Pull Request.
Демонстрація POC:
Ми бачили, як Archon запускає ці завдання. Асистент створює віртуальне середовище, виконує команди та успішно створює файли. Це лише початок, але показує, якою потужною може бути така інтеграція.
Бачення Archon + ACP:
- Керування багатьма агентами: Зручний інтерфейс, де ви можете вибрати будь-якого асистента (Cursor, Gemini CLI, CodeX тощо), надіслати йому завдання та контролювати його роботу.
- Запуск у фоновому режимі: Ви можете запустити складні завдання у фоні, а коли вони будуть завершені, отримати результат у вигляді PR.
- Локальне виконання: Весь процес відбувається локально на вашій машині, що забезпечує конфіденційність та контроль.
Це не просто зручність, це нова парадигма роботи з кодом. ACP відкриває двері для створення справді універсальних та інтелектуальних інструментів розробки.
Висновок: ACP – це Майбутнє AI-кодингу
Друзі, ACP – це надзвичайно важлива технологія, яка, я переконаний, повністю змінить наш підхід до AI-програмування. Вона робить інтеграцію AI-асистентів з редакторами коду легкою, гнучкою та стандартизованою.
Що далі?
- Слідкуйте за розвитком ACP: Цей стандарт буде тільки вдосконалюватись, і з’являтиметься все більше інтеграцій.
- Експериментуйте: Спробуйте самі встановити Zed, підключіть Gemini CLI або Claude Code, а можливо, й спробуйте створити власного агента.
Пам’ятайте: майбутнє вже тут, варто лише відкрити йому двері! До зустрічі наступного тижня!