Планавальнік, генератор, лечыцель: як я кераваў цэлым комплектам для драматурга з трохма ШІ
Практычныя інструкцыі па использованні Planner, Generator, Healer: як я запускаў цэлы комплект Playwright з трыма AI-асаблівамі: контракты, перакантрольванні та слоты для коду для команд, якія викорыстоўваюць гэты патэрн.
Існуець версія, прызначаная для аператараў, якая перакладае ідеі з статты «Planner, Generator, Healer: How I Ran a Full Playwright Suite With Three AI Agents And Playwright MCP»: чыстыя этапы, аранжаваныя блакіты коду і прыметкі па вяснаванню, якія застаюцца пасля перадачы. Этап Аналізу работае найкраща, калі яго спрыяваць як мерыемую плошчу. Запісаўце адна ідеальная транскрыпцыя, адзін прыклад неудачы і прыметкі па адвярненню роботы, прычаму расшырваць масштаб не трэба. Дакументавайце як успішны, так і няуспешны шляхы роботы. Перапрыбуткі, людзкія контрольныя пункты і обработка некоректных паведамленняў ёсць часткай продукту, а не пасляднім дапрацоўкам.
Настройкі, якія робяць агентаў корыстнымі
Для налагоджэння процесу, які стварае сцэну, пярэд тым, як зменшыць код, неабходна адзначыць вхідныя даны, адпаведальнага за крок і критэрыя завершэння. Аперацыямі трэба быць можлівасць практыкаваць крок з вядомага контрольнага пункта, не спрабоўваючы з’ясаваць захаваны стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выйшаў, прычына нехасабності павінна вказываць на адзіну адпаведальнасць, а не на заплутаны ланцужок задач. Автентыфікуйцеся на в’язку, а практыкавайце правы прывілей на роўні дадзенняў. Толькі токэн-носіцель не є межай адпаведальнасці.
{
"servers": {
"playwright-test": {
"type": "stdio",
"command": "npx",
"args": ["playwright", "run-test-mcp-server"]
}
}
}
Агент 1 — планавальнік: «Што варта тэставаць?»
Для стадіі планавання Агента 1 неабяжна ўзначыць вхідныя даны, адпаведальнага за кожны крок і крэтыяры завершэння пры перадзеі коду. Аперацыйныя системы павінны магчымаць перзапуск кроку з вядомай точкі контролю, не падозрываючы схованы стан. Спрыяць гэтай стадіі як даговору межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Даць назвы артыфактам, узначыць крэтыяры успеху і не прабаваць прыйняць часткова завершаную роботу без падтверджэння.
Агент 2 — генератор: «Практычная рэалізацыя гэтага сценарыю»
Для стадіі Генератор у Agent 2 неабяжна ўзначыць вхідныя даны, адпаведальнага за крок і крэтырыя завершэння пры зміне коду. Аперацыйныя працавнікі должны магчымае запускаць крок з вядомай точкі контролю без неабяжнага вычыслявання захаванога стану. Запісваць час выконання і кост токена або запыту разам з функцыйнальнымі рэзултатамі. Відразы коста з самага пачатку запобегае неспакоўным рахункам, калі парадок пераходзіць з дэмовай среды ў спяльнаныя сераўеры. Автентыфікацыя выканаліцаеся на воратах, а паўторная автарызацыя — на роўні дадзенняў. Толькі токен-носіцель не ёстся межай арэндаванага прыемку. Для стадіі Генератор у Agent 2 неабяжна ўзначыць вхідныя даны, адпаведальнага за крок і крэтырыя завершэння пры зміне коду. Аперацыйныя працавнікі должны магчымае запускаць крок з вядомай точкі контролю без неабяжнага вычыслявання захаванога стану. Дакументаваць як успішны, так і вярнучы парадокы разам. Перапрыбуткі, людзкія контрольныя пункты і обработка некоректных паведамленняў ёсць часткай продукту, а не пасляднім дапрацоўкам.
// spec: specs/checkout-e2e-plan.md
// seed: tests/web/seed.spec.js
import { test, expect } from '../../../fixtures';
import { users } from '../../../testdata';test.describe.configure({ mode: 'parallel' });test.describe('E2E checkout journey', () => {
test('positive: login → add product → checkout → thank you → home', async ({ flow }) => {
await flow.completeHappyPathPurchase();
});
});
async completeHappyPathPurchase(user = users.standard, info = checkout.valid) {
await this.goToCheckoutInformation(user);
await this.fillValidInformation(info);
await this.continueToOverview();
await this.app.checkoutOverview.expectProductVisible(products.first.name);
await this.finishOrder();
await this.backHomeToProducts();
}
Агент 3 — Целач: «Ён зламаны. Пасправіце правы шар».
Калі працуеце над стадзіяй Целач агента 3, спачатку запісайце умовы: неабяжлівыя даны, сигнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі список дапамагае заліцьваты змяны ў кодзе. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, прычына нявыпання павінна вказываць на адну адповядальнасць, а не на заплутаны ланцюг задач. Запісвайце назву інструмента, хэш аргументаў, час адклікання і рэзультат кожнага вызову. Без такога следу час на дэбаггін цыклаў агента губіцца на гадзіны.
Як фактычна запусціць яго, ад пачатку да канца
Калі працюеце над этапам «Як насправды запускаць», спачатку запісайце угоду: неабяжлівыя данні, сигнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі список пераконвае ў тым, што пазнейшыя змены коду будуць чыстымі. Спрэчвайце этап як угоду межа даннімі і перакананымі выходамі. Дайце назву рэзультатам, задаце критэрыя успеху і не прымайце часткова завершэння без паведамлення. Зявляйце логі з назвай інструмента, хэшам аргументаў, часу затрымкі і рэзультатаце кожнага вызову. Без такога следу дэбаггінг агента губіць гадзіны.
1. Copy .env.example → .env, set BASE_URL (+ credentials)
2. npm install && npx playwright install
3. Run the Planner
→ specs/checkout-e2e-plan.md (22 scenarios, reviewed by me)4. Run the Generator, scenario by scenario
→ tests/web/login/login.spec.js
→ tests/web/cart/cart.spec.js
→ tests/web/checkout/checkout.spec.js
→ tests/web/e2e/checkout-journey.spec.js5. npm test (4 workers, fully parallel)6. Any red? Run the Healer → re-run → green
То наскількі ж быстрэй, на самай праце?
Калі працуеце над этапам «Як што быстрэй», спачатку запісайце умовы працы: неабяжлівыя данні, сігнал успеху і тое, што выходзіць пад частыя неудачы. Такі список дапамагае заліцварваць будучыя змены ў кодзе. Запісвайце час выканання і кост токена або запыту праза функцыйнальныя рэзултаты. Відразувая візуабельнасць костаў запобегае неспакойным рахункам, калі працэўнае сераўеры зменяюцца з дамовай версіі на спакульную. Запісвайце назву інструмента, хэш параметраў, час адклікання і рэзультат кожнага вызову. Без такога лёгкага следу дэбагаванне можа зайняць гады. Калі працуеце над этапам «Як што быстрэй», спачатку запісайце умовы працы: неабяжлівыя данні, сігнал успеху і тое, што выходзіць пад частыя неудачы. Такі список дапамагае заліцварваць будучыя змены ў кодзе. Дакументавайце як «шчаслівы» так і «вярнучыся» шляхі працы. Перапрыбуткі, людзкія контралі і обработка некоректных паведамленняў є часткай продукту, а не дадатковым дапрацоўкам.
Чатыры урокі, якія варта запам’ніць
Проект «Чатыры урокі, якія варта выкрасты» працюе найэфектывней, калі яго розглядаць як меравальную паверхню. Зафіксавайце адны ідеальны прыклад, адну справу з неудачай і запіс пра вярнэнне да пачатковага стану, перш чым расширваць масштабы. Валіце варот на маленькія, тэставальныя элементы замест большых скрыптов. Калі якісь крок не выйшае, прычына неудачы павінна вказываць на адную адпаведальнасць, а не на заплутаны ланцюг задач. Адкройце інструменты з вузкімі схемамі та чысткімі пазначэннямі побачных наследкаў. Адпаведальныя за эксплуатацыю должны знать, якія вызовы мутуюць стан, перш чым автаматычна схваліць іх.
Каму варта спробаваць гэта
The Who должны спробаваць гэты этап — ён працуе наяўна, калі яго спрыяваць як мерыемую паверхню. Запісаць адна «золатая» версія, адны прыклад неудачы і прыметку па вярнэнню да пачатковага стану пры расшырэнні масштаба. Спрыяваць гэты этап як кантракт межа вхіднымі дадзеннямі і перакананымі выходнымі рэзультатамі. Даць назвы артыфактам, задаць критэрыя успеху і не падзеўляцца частым, непূরным выкананнем задачы. Адкрыць інструменты з вузкімі схемамі та чыткімі пазначэннямі побачных эфектаў. Адпаведальныя за эксплуатацыю должны знать, якія вызовы мутуюць стан, перш чым автаматычна схваліць іх.
Чэк-ліст для эксплуатацыі
Калі працуеце над этапам чэк-ліста для эксплуатацыі, спачатку запісайте кантракт: неабходныя вхідныя даны, сігнал успеху і тое, што выходзіць у разе частай неудачы. Гэты чэк-ліст дапамагае заставаць пазнейшыя змены коду чыстымі та прозрачнымі.
Зберагаць настройкі праз чынны код аплікацыі. Файлы сяродовышча, хранільнікі секрэтных дадзенняў та флагі функцый должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць без неабходнасці чытання всей структуры.
Зявіце назву інструмента логавання, хэш параметраў, час адкліквання і рынак кожнага вызову. Дэбагаванне без такога следу адзначае гады часу.
Зберагайце стан графа ў простам і типаваным формате. Вярнутыя структуры маскуюць, який вузел запісаў кожны поле, і спакоююць працэс пасля перарываў.
Калі дозволяе бюджет, дадзіце тэст на працэс критычнага шляху ў CI з фікстурамі, а не за дапамогою рэальных платных API.
Спрыяйце цэму этапу як кантракту межа вхіднымі дадзеннямі і перакананымі выходнымі рынкамі. Дайце назвы артыфактам, задаць критэрыя успеху і адмовіцеся ад беззвучнага частковага завершэння.
Перад падысканьем стака заморозьце версіі, зафіксуйце ідеальны транскрыпт критычнага шляху і паказвайце способы адвярнення. У спадзеленых средах неабходны ліміты частоты, перакананні прыналежнасці і чысты власнік для змены секрэтных дадзенняў. Валіце надзейнасць працэсу над красавімым разовым дэманстрацыйным прыкладам.
Запіска параграфу для ebfa232e6bf7: не кластыць ключы прадаўцаў у репазітары, задаць максымальную кантэнцыю токена на сесію і зберагчы транскрыпціі праза фіксаты для ацэнкі, каб пазнейшыя замены моделей заставалі пораўнанневымі.
Запіска па прыняццю заходаў абароны 0 стадія работае лепш, калі яе спрыймаюць як мерыябельную плошчу. Зафіксавайце адну ідеальную транскрыпцію, адзін прыклад неудачы і запіску пра вярнэнне да пачатковага стану перш чым расширваць масштаб. Спрыймайце гэту стадію як кантракт межа вхіднымі дадзеннямі і перакананымі выходнымі рэзультатамі. Назвайце артыфакты, задаць критэрыя успеху і адмовіцеся ад беззвучнага частковага завершэння.
Дзеянне абароны 0/959: замерыце час выканання, класію адзінакоў і выкарыстоўванне токенаў для гэтай запіскі, а пасля вырашыце, чы робіць змяну на адной пазначанай сэткі пытанняў, а не на адной лячбе.