1. Збираємо все разом
Усе потрібне в Тьми вже під рукою. Гру зібрано й перевірено за списком — справжні шахи на chess.js, усі сім пунктів на місці. Мітки для агента вже є. Playwright він випробував під керівництвом Льохи. Тепер — зібрати все докупи начисто й власними руками: посадити агента за дошку й нарешті зіграти.
Нагадаємо, якою вийшла гра — ось вона, стартова розстановка: чорні зверху, білі знизу:
a b c d e f g h
8 ♜ ♞ ♝ ♛ ♚ ♝ ♞ ♜ ← чорні (за них гратиме агент)
7 ♟ ♟ ♟ ♟ ♟ ♟ ♟ ♟
6 · · · · · · · ·
5 · · · · · · · ·
4 · · · · · · · ·
3 · · · · · · · ·
2 ♙ ♙ ♙ ♙ ♙ ♙ ♙ ♙
1 ♖ ♘ ♗ ♕ ♔ ♗ ♘ ♖ ← білі (за них грає Тьома)
Хід: білі [ Нова партія ]
За білих сяде він, за чорних — агент. А на дошці, непомітно для ока, живуть ті самі мітки: data-turn — чий хід, data-game-over — чи закінчилася партія. Їх агент і читатиме.
2. Крок 1 — підключаємо Playwright до проєкту
Спершу — браузер до агента. Тьома підключає Playwright однією командою, як учив Льоха, і не забуває перезапустити сесію:
claude mcp add playwright -- npx -y @playwright/mcp@latest
claude mcp list # перевірити: playwright → ✓ Connected
claude # знову запустити агента в папці проєкту
Тьома чекає рядок playwright → ✓ Connected. Зʼявився — браузер підключено, в агента є руки. Не зʼявився б — насамперед перевірив би команду й те, що перезапустив сесію. Минулого разу він на цьому й спіткнувся — забув вийти й зайти знову. Уже у свіжій сесії заглядає, що дало підключення:
/mcp # у Playwright видно інструменти: відкрити сторінку, клацнути, ввести, зняти скриншот
У списку в playwright — інструменти браузера: відкрити, клацнути, ввести, зняти скриншот. Усе, рука на місці.
3. Крок 2 — Тьома сідає грати проти агента
Тьома набирає агенту коротке — за кого грати й за якою міткою стежити за чергою:
Через Playwright відкрий мою гру game.html.
Ти граєш за чорних. Слідкуй за data-turn на дошці: щойно там "b" —
роби хід чорними й чекай знову. Граємо, доки не стане data-game-over.
Натискає Enter — і на екрані само відкривається вікно браузера, те саме, з Playwright. У ньому — його дошка, фігури на місцях. Тьома підсувається ближче: грати буде він, за білих, просто зараз.
Біла пішка рухається e2–e4. Хід переходить до чорних. Коротка пауза — та, у яку ще не ясно, спрацює все чи зависне. А потім у вікні курсор сам оживає: підсувається до чорної пішки, підхоплює її, веде на e7–e5, відпускає. Мітка data-turn знову стала "w" — черга Тьми.
— Опа, — виривається в нього. — Він мені відповів!
Тьома рухає коня. Агент — свого. Тьома подається до екрана, забувши про чай, і веде партію як справжній поєдинок: його хід — відповідь суперника, його хід — знову відповідь. Курсор чорних ходить сам, без жодного дотику з його боку, ніби навпроти й справді хтось сидить. Суперник із повітря — саме таку картину він ізранку собі й намалював. Кілька разів агент ходить слабувато, підставляється — не гросмейстер, що вже там, — але ходить сам, за правилами, чесно чекаючи своєї черги за міткою.
Партія котиться до розвʼязки. Тьома заганяє чорного короля в кут і ставить мат — chess.js тут же його й визнає, внизу вискакує «Мат, перемогли білі», на дошці зʼявляється data-game-over="true". Агент, побачивши мітку, зупиняється: партія закінчена.
— Я виграв! — Тьома відкидається. І тут же спохоплюється: — Хоча зачекай. Я ж не з компом грав у готову забавку. Я у свою гру грав — проти агента, який сам за дошкою сидів. У мене зʼявився суперник. Із нічого.
Усе попереднє було про «я зробив»: я зібрав змійку, викотив лендінг, притягнув землетруси. А це — уперше про те, що поруч хтось є. Не людина, не бот, зашитий у гру наперед, а його агент — сів за другу сторону й грав.
4. Крок 3 — а тепер нехай грає сам із собою
Однієї партії Тьомі замало. І тут його бере думка сміливіша:
— Слухай, а якщо я взагалі піду? Нехай він грає за обох — і білими, і чорними, — а я просто подивлюся, чим усе скінчиться.
Він і вмикає те, що зранку вписав у постановку окремим рядком, — /goal:
/goal на дошці зʼявився атрибут data-game-over="true"
Грай за обидві сторони по черзі — і білими, і чорними, за правилами,
доки партія не закінчиться.
— Ну давай, догравай сам, — кидає він і відходить до чайника, навмисно не дивлячись на екран. На півдорозі все-таки кортить озирнутися — раптом агент заплутається, хто є хто, і зупиниться. Тьома змушує себе не озиратися. Довірив — значить довірив.
Поки він порається з горнятком, у вікні само собою йде партія: біла фігура пішла, чорна відповіла, знову біла — курсор мечеться між сторонами, граючи сам із собою. Після кожного ходу агент звіряється з /goal: настав data-game-over чи ще ні. Тьома повертається з чаєм — а на дошці вже мат, внизу «Мат, перемогли білі», і агент зупинився сам. Партію зіграно цілком, без нього. Коли захочеш зняти режим, знімаєш його:
/goal clear
Тьома сьорбає чай і дивиться на дошку, дограну без жодного його дотику.
— Я взагалі пішов — а він сам усю партію дограв, — промовляє він, ніби пробуючи на язик. Уже не «я зібрав гру» і навіть не «я зіграв проти агента», а ось це: загадав умову, пішов, повернувся — готово. Отже, можна поставити мету й піти. Довірив не поодинокі ходи, а весь результат — і він упорався.
Те, що він заодно віддав агенту право самому вирішувати, коли партія закінчена, і навіть не дивився, як той це вирішує, Тьома не зважує. «Поставив і пішов» — чиста суперсила, у цьому й увесь сенс. Льохина ранкова застережність про «умову взяв готовою» в голові не спливає: надто добре все пройшло, щоб зараз шукати підступ.
5. Крок 4 — та сама рука по опублікованому лендінгу
Розігнавшись, Тьома згадує слова Льохи про спільний браузер — і йому кортить. Раз агент уже вміє ходити сторінками, чому б не глянути на ту, що він давно викотив назовні. Просить швиденько пройтися його лендінгом із пʼятого рівня:
Через Playwright відкрий мій лендінг за посиланням [URL з L05] і надішли скриншот
головного екрана.
Агент відкриває лендінг, проходить короткий сценарій, повертає скриншот прямо в чат: на місці, працює. Нічого ефектного — звичайна сторінка. Але Тьома вловлює, у чому фокус: та сама рука, що грала в шахи, лягла на зовсім іншу сторінку. І лягла б на будь-яку.
— О, то це не тільки для забавок, — здогадується він уголос. Тією самою рукою можна швиденько зазирнути в те, що вже опубліковано — відкрити, пробігти, повернути скриншот: на місці, живе. Зручно. Але далі «зручно» він думку не тягне — день надто вдалий, щоб копати.
6. Що тепер уміє агент
Тьома не витримує — ловить Олега біля кавомашини й розвертає до екрана ноутбука.
— Дядьку Олеже, глянь. Памʼятаєш, ти зранку хмикав, мовляв, суперника-то нема? Є тепер. Я цілу партію зіграв — проти нього. — Він тицяє в дошку. — А потім узагалі пішов чай пити, а він за обидві сторони сам дограв. Ось скрин, ось мат.
Олег дивиться на дограну дошку, на «Мат, перемогли білі», мружиться.
— Тобто він і грав, і мат собі поставив, і оголосив, хто виграв, — повільно перелічує Олег. — Ну ти подумай. Скоро ця твоя машина й зарплату собі сама випише. Сама попрацювала, сама себе похвалила, сама премію нарахувала.
— Ось саме, Олеже. Сама грає, сама оголошує, — Тьома всміхається, пропустивши шпильку повз вуха. Для нього це рівно той комплімент, якого він сьогодні й заслужив. А те, що Олег зранку питав «а перевіриш ти, чи чесно вона грає», — то вже давно вилетіло з голови.
Шахи поповнюють галерею новим експонатом — першою грою, у яку в нього нарешті є з ким зіграти.
Увечері знову оживає Артем2036.
І все. До чого хилить — жодного слова.
Тьома всміхається екрану.
— Та куди хочу, туди й заведу, — відповідає він не чату, а собі.
Ще одна підколка з цього каламутного чату із собою з майбутнього. Не попередження ж. День був чистою перемогою, і забирає він із нього рівно одне: можна поставити мету й піти. Тьома гасить чат і більше в нього не лізе.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ