JavaRush /Курси /Claude Code SELF /Агент грає партію сам

Агент грає партію сам

Claude Code SELF
Рівень 9 , Лекція 4
Відкрита

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.

Артем2036
в мережі
У чат падає коротке:

— сьогодні ти, бачу, дійшов до “машина грає за мене, а я чай пʼю”

І слідом, тим самим рівним тоном, що й ранковий підпис під гоночною машинкою:

— подивимося, як далеко ти готовий завести це своє “поставив і пішов”

І все. До чого хилить — жодного слова.

Тьома всміхається екрану.

Та куди хочу, туди й заведу, — відповідає він не чату, а собі.

Ще одна підколка з цього каламутного чату із собою з майбутнього. Не попередження ж. День був чистою перемогою, і забирає він із нього рівно одне: можна поставити мету й піти. Тьома гасить чат і більше в нього не лізе.

1
Опитування
Розширення Claude Code та SKILL.md, рівень 9, лекція 4
Недоступний
Розширення Claude Code та SKILL.md
Розширення Claude Code та SKILL.md
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ