MCP, Skills і Subagents: Як прымусіць AI нешта рабіць і нічога не зламаць

Уводзіны: Чаму ўсе звар'яцелі на агентах?
Яшчэ некалькі год таму здавалася, што штучны інтэлект проста піша нам вершыкі ды папраўляе памылкі ў кодзе. А сёння кожны другі праграміст спрабуе прыкруціць да AI-агента ўсялякае "непатрэбства" і, канешне ж, даць яму прамы доступ да production-сервераў. "Няхай ён сам усё дэплоіць, а я пайду TikTok пагартаю!" — геніяльны план, надзейны як швейцарскі гадзіннік, які звычайна заканчваецца знесенай базай дадзеных і нервовым цікам у распрацоўшчыка.
І такія "геніяльныя планы" прывялі да таго, што індустрыя вырашыла неяк гэты хаос кантраляваць (ці хаця б перакласці адказнасць з LLM-мадэляў на нас з вамі). Каб штучны інтэлект мог рэальна нешта рабіць і пры гэтым не разносіў сістэму, яму трэба выдаваць доступ кропкава і бяспечна. Менавіта таму такія гіганты, як Anthropic і GitHub, выдзелілі тры асобныя падыходы для доступу: MCP (Model Context Protocol), Skills (Навыкі) і Subagents (Сабагенты).
Калі пачытаць IT-форумы, то падаецца, што гэта канкурэнты ў барацьбе за вашы правы доступу: "У мяне ж і так стаіць MCP, навошта мне дадаваць нейкія Skills?". Адкажу адразу і шчыра: выбар "ці адно, ці другое" тут увогуле не працуе.
У нармальным бяспечным workflow вам дакладна спатрэбяцца ўсе тры інструменты. Давайце разбяромся, навошта яны патрэбныя, і чаму ваш любімы агент усё яшчэ тупіць.
1. MCP: Адзіны пратакол для знешніх API
Па сутнасці, MCP — гэта стандартызаваны пратакол інтэграцыі. Індустрыя проста дамовілася: "хопіць кожнаму агенту пісаць свае асобныя кастылі пад кожны новы сэрвіс, давайце зробім адну трубу для ўсіх".
Як гэта працуе ў рэальнасці: вы запускаеце на сваім кампе фонавы сервер (дэмана). Дапусцім, ставіце афіцыйны github-mcp. Гэты сервер вісіць у памяці і вітаецца з вашым рэдактарам: "Хэлоў, я ўмею ствараць Pull Request-ы і чытаць issue". Агент такі: "Клас, давай рабіць", і яны пачынаюць перакідацца паміж сабой JSON-амі.
У чым плюсы? Калі табе трэба цягаць вялізныя кавалкі дадзеных са Stripe, Slack ці Postgres — гэта ідэальна. MCP забірае на сябе ўвесь галаўны боль з OAuth, токенамі і лімітамі запытаў.
Дзе пачынаецца боль? (Бяспека)
Гэта татальная "чорная скрыня". Каб яго ўсталяваць, вы часта пішаце ў тэрмінале магічнае npx @нейкі-чувак/mcp-server-tools. Гэты невядомы працэс атрымлівае доступ да файлавай сістэмы, вісіць у фоне БЯСКОНЦА і трымае ў памяці вашы паролі. Гэта прамы шлях да supply chain attack проста таму, што вы захацелі, каб AI-агент "прыгожа фарматаваў тэкст". Для маштабных задач тыпу баз дадзеных — супер, але для дробных лакальных аперацый — гэта дзірка ў бяспецы.
2. Skills: Лакальныя скрыпты без магіі
Вось тут на арэну выходзяць Skills (Навыкі) — вашы ўласныя лакальныя скрыпты, якія працуюць менавіта так, як вы напісалі, ні кропляй больш.
Skill — гэта наогул не пратакол, не сервер і не дэман. Гэта татальна простая, але максімальна эфектыўная рэч. Гэта літаральна звычайная папка на тваім ноўтбуку. У ёй ляжыць тэкставы файл SKILL.md са словамі "Калі я прашу цябе зрабіць дэплой, юзай вось гэты інструмент", і побач — самы звычайны bash-скрыпт або script.js.
Сцэнарый:
Вы кажаце агенту: "Зрабі аўдыт праекта". Ён чытае маркдаўн са Skills, запускае праз тэрмінал твой audit.sh, чакае выніку, чытае яго з кансолі і... скрыпт завяршаецца. Ніякіх фонавых дэманаў і вісячых у памяці пароляў. Зрабіў справу — гуляй смела.
Чаму гэта крута?
Таму што вы бачыце код вачыма. Калі агент памыліцца, ён не знясе вам тэчку System32, таму што ў вашым асабістым скрыпце напісана толькі "прачытаць файлы". Выкарыстоўвайце Skills для спецыфічнай, бруднай лакальнай працы (запуск тэстаў, зборка для хітрага сервера). Гэта дае 100% кантролю і ніякай фрэймворк-магіі.
3. Subagents: Дэлегаванне інтэлекту
А вось цяпер мы дабраліся да самага смачнага. Subagents (Сабагенты) — гэта архітэктурны падыход, дзе ваш асноўны AI-агент не робіць брудную інтэлектуальную працу сам, а наймае ізоляваных "мікра-агентаў".
Уявіце, што вы просіце AI: "Знайдзі мне інфармацыю пра абнаўленне React 19 на трох розных сайтах, прааналізуй 10 старонак і напішы мне справаздачу". Калі прастакаваты агент паспрабуе прачытаць усе гэтыя кілабайты HTML-кода і вываліць бруд у ваш бягучы чат — чат проста лопне. Агент зловіць перапаўненне кантэксту і пачне жорстка галюцыянаваць.
Як вырашаюць праблему Сабагенты і чым яны адрозніваюцца ад Skills? Каб дакладна адчуць розніцу, уявіце задачу: "Прачытай серверныя логі на 10 МБ і знайдзі прычыну памылкі 500".
❌ Калі вы выкарыстоўваеце тупы Skill:
Галоўны агент выклікае ваш скрыпт read_logs.sh. Скрыпт сумленна чытае 10 МБ тэксту і выплёўвае ўсё гэтае палатно проста ў ваш бягучы чат. Асноўная (вельмі дарагая!) мадэль пачынае яго чытаць, маментальна забывае, пра што вы размаўлялі хутчэй за ўсё, ліміт кантэксту лопаецца. Skill дэтэрмінавана выканаў працу без памылак, але ваш чат знішчаны.
✅ Калі вы выкарыстоўваеце Subagent:
Галоўны агент кажа: "Я тут архітэктар, я не буду сам капацца ў гэтым смецці". Ён дэлегуе задачу Сабагенту ў ізаляваным фонавым асяроддзі. Той сам спампоўвае логі, прапускае іх праз уласны "мозг" (праз асобны зварот да таннай LLM-мадэлі накшталт GPT-4o-mini). Сабагент ізалявана аналізуе 10 МБ, самастойна знаходзіць радок са збоем і вяртае галоўнаму босу толькі кароткі рэзультат: {"error": "Database timeout in User.tsx line 42"}.
- Чысты кантэкст. Асноўны чат застаецца чыстым, там няма кілабайт мініфікаванага JS-кода са старонкі індуса са StackOverflow.
- Бяспека. Сабагенту-скраперу мы ніколі не дадзім правоў на запіс у файлы ці базу дадзеных. Яго задача — толькі "чытаць інтэрнэт". Небяспека зведзена да нуля.
- Паралельнасць. Можна адправіць аднаго сабагента гугліць, а другога — перакопваць сотні файлаў старога кода. А самому пайсці піць каву.
Практыка: Як стварыць свайго ўласнага Subagent-а?
Тут трэба зрабіць важную рэмарку: знешне Skills і Subagents часта выглядаюць абсалютна аднолькава — гэта проста нейкі інструмент або код, які выклікае асноўны агент. Галоўная розніца ў тым, што Skill робіць тупую дэтэрмінаваную працу (напрыклад, чытае файл), а Subagent мае ўласны "мозг" і сам прымае рашэнні (напрыклад, робіць асобны зварот да API іншай LLM).
Больш за тое, магчымасць іх стварэння моцна залежыць ад вашага рэдактара. Напрыклад, у GitHub Copilot ёсць цудоўныя ўбудаваныя сабагенты (тыпу @workspace), і ён ужо ўмее працаваць са Skills (праз сістэму Agent Skills).
Каб стварыць свайго кастомнага рашалу, мы можам пайсці на хітрасць і зрабіць ізаляванага сабагента літаральна за 5 хвілін, проста эмулюючы яго з дапамогай Skill-скрыпта. Гэта самы рабочы падыход на сёння для ўсіх прасунутых рэдактараў (Cursor, Copilot, Claude Code).
Вось пакрокавы прыклад: ствараем сабагента-скрапера на Node.js.
Крок 1. SKILL.md — інструкцыя для галоўнага агента
Робім у праекце папку .skills/scraper/ і кладзём туды SKILL.md. Менавіта адсюль ваш асноўны AI-памочнік даведаецца, што ў яго з'явіўся новы супрацоўнік.
text1# Scraper Subagent 2 3## Калі выкарыстоўваць 4Гэта твой лакальны інструмент парсінгу. Выкарыстоўвай яго заўсёды, калі трэба: 5- Зайсці на вонкавы сайт і прачытаць яго змест 6Не спрабуй грузіць сайт сам у чаце, дэлегуй гэтую працу сабагенту. 7 8## Як выклікаць 9> node .skills/scraper/index.js "<URL>" 10 11## Фармат адказу 12Сабагент верне табе гатовы прааналізаваны JSON у stdout: 13> { "title": "...", "text": "Чысты тэкст без тэгаў" }
Крок 2. index.js — логіка сабагента (з уласным "мозгам")
А вось і сам "мозг" сабагента. Каб гэта быў не проста скрыпт, а сапраўдны сабагент, ён сам звернецца да "таннай" LLM для чорнай працы:
javascript1// .skills/scraper/index.js 2import fetch from 'node-fetch'; 3import * as cheerio from 'cheerio'; 4 5const url = process.argv[2]; 6const OPENAI_API_KEY = process.env.OPENAI_API_KEY; // Сабагент мае свой доступ 7 8async function runSubagent() { 9 console.error(`[Scraper Subagent] Бос сказаў ісці парсіць і аналізаваць: ${url}`); 10 11 // 1. Ідзем у сетку і цягнем цяжкі дакумент 12 const response = await fetch(url, { headers: { 'User-Agent': 'Mozilla/5.0' } }); 13 const html = await response.text(); 14 15 // 2. Базавая чыстка ад смецця 16 const $ = cheerio.load(html); 17 $('script, style, nav, footer').remove(); 18 const rawText = $('body').text().replace(/\s+/g, ' ').trim().slice(0, 8000); 19 20 // 3. ІНТЭЛЕКТ: Выклікаем танную мадэль (Subagent), каб яна зрабіла выцісканне 21 console.error(`[Scraper Subagent] Тэкст атрыманы, перадаю свайму нейра-мозгу...`); 22 const aiResponse = await fetch('https://api.openai.com/v1/chat/completions', { 23 method: 'POST', 24 headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${OPENAI_API_KEY}` }, 25 body: JSON.stringify({ 26 model: "gpt-4o-mini", // Танны рабочы 27 messages: [{ 28 role: "system", 29 content: "Ты — сабагент. Дастань з тэксту галоўную сутнасць у 2 абзацах і вярні строгі JSON: {title, summary}." 30 }, { role: "user", content: rawText }] 31 }) 32 }); 33 34 const aiData = await aiResponse.json(); 35 const cleanResult = aiData.choices[0].message.content; 36 37 // 4. Выплёўваем ЧЫСТЫ вынік асноўнаму агенту ў стандартны вывад 38 console.log(cleanResult); 39} 40 41runSubagent();
Што адбудзецца на практыцы? Заўважце розніцу звычайнага Skill-скрыпта ад Сабагента. Калі б гэта быў тупы Skill, ён бы проста вярнуў 8000 сімвалаў бруднага тэксту галоўнаму агенту ў чат (і забіў бы яму "мазгі"). Але наш Сабагент спаўніць Node-працэс, выцягвае дадзеныя, сам выклікае танную нейрасетку для аналізу і вяртае цэнтральнаму босу чысцюткі, кароткі JSON. Галоўны агент нават не ведае, колькі смецця давялося перакапаць памочніку.
Віншую, вы толькі што хутка рэалізавалі простую мікрасэрвісную архітэктуру для свайго штучнага інтэлекту.
Хто ўвогуле падтрымлівае ўсё гэта? (Шпаргалка па экасістэме)
З тэорыяй разабраліся, але куды гэта ўсё піхаць? У 2026-м годзе кожны рэдактар ці кліент прапануе сваю рэалізацыю. Каб вы не чыталі тоны дакументацыі і не ламалі галаву, вось кароткая таблічка:
| Інструмент / IDE | MCP (Глабальны сервер) | Skills (Лакальныя скрыпты) | Subagents (Дэлегаванне) | Як наладзіць? |
|---|---|---|---|---|
| Cursor | ✅ Натыўна, клік-клік | ⚠️ Праз кастыль | ❌ Не падтрымліваецца наўпрост | MCP дадаецца праз Settings -> Features -> MCP Server. Каб прымусіць яго бачыць Skills, трэба строга напісаць у .cursorrules: "Заўсёды чытай інструкцыі са скрыптоў у папцы .skills/". |
| Claude Code (тэрмінал) | ✅ Натыўна | ✅ Ягоны родны дом | ❌ Няма з каробкі | MCP настройваецца праз файл канфігу. Кансольныя гікі будуць шчаслівыя: Skills проста ляжаць у лакальнай папцы — кліент сам іх знойдзе і ўсвядоміць, бо гэта яго базавая фіча. |
| Claude Desktop | ✅ Натыўна і моцна | ❌ Не ўмее наогул | ❌ Няма | Запісваем шляхі ў claude_desktop_config.json. Лакальныя bash-скрыпты (Skills) і сабагенты ён пакуль не цягне ў прынцыпе. |
| GitHub Copilot | ⚠️ Пакуль эксперымент | ✅ Падтрымліваецца | ✅ Натыўна (толькі ўбудаваныя) | Выдатныя ўбудаваныя сабагенты з каробкі (@workspace, @terminal). Лакальныя Skills падтрымліваюцца праз сістэму Agent Skills (можна дадаваць кастомныя інструкцыі і інструменты ў .md файлах). А вось кастомнага сабагента бяз мыліц фізічна не дадаць — давядзецца пісаць паўнавартаснае пашырэнне для VS Code (Chat extensions API). |
| Roo Code (VS Code) | ✅ Натыўна, зручна | ⚠️ Праз кастыль | ⚠️ Праз "Ролі" агентаў | MCP дадаецца наўпрост у графічным інтэрфейсе. Для паўнавартасных сабагентаў ён дазваляе наладжваць так званыя 'Custom Modes' — абмежаваныя ролі, паміж якімі можна пераключацца. |
| Windsurf | ✅ Натыўна | ❌ Лепш не мучаць | ❌ Няма | MCP дадаецца наўпрост у графічных наладах. Са сваімі скрыптамі да яго лезці пакуль рана. |
Кароткая выснова па экасістэме: MCP — гэта ўжо глабальны і непазбежны стандарт інтэграцый. Skills — гэта хутчэй фішка для тых, хто хоча жорсткага кантролю за лакальнымі скрыптамі (тут лідаруе Claude Code). А вось Subagents — гэта відавочны трэнд для складанай шматкрокавай распрацоўкі, які пакуль натыўна найлепш працуе ў сістэме Copilot.
Высновы: Дык што юзаць?
- Інтэграцыя са знешнім светам (Складаныя API і базы дадзеных) = MCP. Бярыце яго, калі агенту трэба працаваць са Stripe, GitHub ці Postgres. Даверцеся гатоваму MCP-серверу: ён сам вырашае пытанні з аўтарызацыяй, токенамі і лімітамі. Гэта ваш стандартызаваны мост да чужых сістэм.
- Дакладныя лакальныя дзеянні (Без удзелу нейрасеткі) = Skills. Пішыце ўласны скрыпт (Skill), калі трэба проста запусціць тэсты, сабраць праект або скапіяваць файлы. Гэта звычайны код, які выконваецца строга і прадказальна. Агент проста "націскае кнопку", а скрыпт робіць працу бяспечна і пад вашым поўным кантролем.
- Аўтаномны аналіз і ізаляцыя кантэксту (Шматкрокавыя задачы) = Subagents. Выкарыстоўвайце іх, калі трэба шукаць, аналізаваць або працаваць з вялікімі аб'ёмамі дадзеных. Сабагент сам "падумае" (праз асобны выклік LLM), самастойна перакапае 10 МБ логаў або 5 сайтаў і верне галоўнаму агенту толькі кароткі рэзультат, не знішчаючы ваш бягучы кантэкст у чаце.
Не давайце чужым невядомым працэсам поўны доступ да вашага камп'ютара, каб не чакаць сюрпрызаў ад невядомых пакетаў. Ваша кодавая база скажа вам дзякуй.
Падабаецца чытаць пра тэхналогіі па-беларуску? Мы пішам пра IT, навуку і гікаўскія тэмы на роднай мове — проста, зразумела і без лішняга пафасу. Штодзённыя навіны і кароткія тлумачэнні са свету тэхналогій — у нашым тэлеграм-канале: https://t.me/bel_frontend. Поўныя артыкулы, кіраўніцтвы і разборы — на сайце: https://bel-geek.com. Далучайцеся, чытайце, дзяліцеся сваімі ідэямі. Разам робім беларускамоўны тэх-кантэнт, якога так не хапае.
Каментары
(Каб даслаць каментар залагуйцеся ў свой уліковы запіс)