Практычныя прытамулі: WebMCP: Калі веб-сайты стануць інструментамі ШІ
Практычныя прыказкі: WebMCP – калі веб-сайты стаюць інструментамі ШІ: контракты, перакрыццяі та слоты для коду для команд, якіе викорыстоўваюць гэты патэрн.
Існавайце гэта як перапрацоўку ідэй з артыкула “WebMCP: Калі веб-сайты стаюць інструментамі AI” для аператараў: чыткія этапы, арранжаваныя блакі для коду і прыметкі з восстанавлення, якія застаюцца пасля перадачы. Этап Аналізу працюе найэфектывней, калі яго спрыяваць як мерыемую плошчу. Запісаўце адна ідеальная транскрыпцыю, адзін прыклад неудачы і прыметку з вярненням да пачатковага стану прычаму расшырэння масштаба. Спрыявайце гэты этап як кантракт між вхіднымі дадзеннямі і паўнастацэннымі выходамі. Дайце назвы артыфактам, задаце критэрыя успеху і адмовіцеся ад беззвучнага частковага завершэння.
Як усе гэта вяліся разам
Для этапа «Як складаюцца элементы» неабяжна пазначыць вхідныя даны, адпаведальнага за крок і критэрыі завершэння пры перадзеяванні коду. Аператары должны магчымаць перзапуск кроку з вядомай точкі контролю, не прабуючы спадароўваць схованы стан. Запісвайце час выконання і кост токена або запыту праза функцыйнальныя рэзултаты. Відразлівасць коста з самага пачатку запобегае неспакоўным рахункам, калі траекторыя пераходзіць з дэмаверсіі ў спакульнаныя сераўысы. Автентыфікуйцеся на воратах і паўторна автарызуйцеся на роўні дадзенняў. Толькі токен-носіцель не є межай арендаванага прыемку.
Настройка
У стадії налагоджэння неабяцкова паказаць вхідныя даны, адміністратара крока і критэрыя завершэння пры перадзеіснаванні коду. Аператары должны магчымаць перзапуск крока з вядомай точкі контролю, не падозрываючы схованы стан. Конфігурацыю трэба знаходзіць паза кодам прыкладнага програму. Файлы сераўіса, хранальнікі секрэтных данных і флагі функцый належыць у аднам месца, якое аператары можаць пераглядаць, не чытаяўшы весь ланцуг задач. Автентыфікацыя выконваецца на шлюзе, а паўторная автарызацыя — на роўні дадзенняў. Сам токэн-носіцель не є межай арендаванага ресурсу.
const mc = document.modelContext; // undefined if WebMCP is off
Як выглядае, калі все працуе
Для стадіі «Як гэта выглядае» неабяжна прадзефінаваць вхідныя даны, адпраўніка крока і крэтыяры завершэння пры перадзмене коду. Аперацыйныя працавнікі должны магчымае перзапускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Неабяжна задокументаваць як шлях успеху, так і шлях вярнення да нормальнага стану. Перапрыбуткі, людзкія перакрыцця і обробка некоректных паведамленняў ёсць часткай продукту, а не пасляднім дапрацоўкам. Автентыфікуйцеся на воратах і паўторна автарызуйцеся на роўні дадзенняў. Толькі токэн-носіцель не ёсць межай арендаванага ресурсу. Для стадіі «Як гэта выглядае» неабяжна прадзефінаваць вхідныя даны, адпраўніка крока і крэтыяры завершэння пры перадзмене коду. Аперацыйныя працавнікі должны магчымае перзапускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Спрыяйце цій стадіі як даговору межа вхідных даных і апраўданых выходных рэзультатаў. Дайце назвы артыфактам, прадзефінаваць перакрыцця успеху і не прабывайце прыймаць часткова завершаныя рэзультаты без паведамлення.
Форма ўжо являецца інструментам. Патрэбна толькі ясна адмова.
Калі працуеце на стадыі формы, спачатку запісайте контракт: неабяжныя параметры, сігнал успеху і тое, што будзе ў разы частковай нявыплненасці. Такі список пераканае застаўляцца чыстым падчас пазнейшых змян у кодзе. Запісвайце час выканання і кост токена або запыту пад функцыйнальнымі рэзултатамі. Відразувыя даныя пра косцы запобегаюць неспакоўным рахункам, калі праця пераходзіць з дэмаверсіі ў спакульнаныя сераўры. Запісвайце назву інструмента, хэш аргументаў, час затрымкі і рэзултат кожнага вызову. Без такога следу дэбаггін агента, які цягнецца без канца, марнуе гадзіны.
<form id="add-form"
toolname="add-task"
tooldescription="Add a new task to the user's task board."
toolautosubmit>
<input name="title" required maxlength="80"
toolparamdescription="Short description of the task to add.">
<select name="priority"
toolparamdescription="How urgent the task is.">
<option value="low">low</option>
<option value="normal" selected>normal</option>
<option value="high">high</option>
</select>
<button type="submit">Add</button>
</form>
$('#add-form').addEventListener('submit', (e) => {
e.preventDefault();
const task = addTask(new FormData(e.target).get('title'), /* ... */);
if (!e.agentInvoked) {
e.target.reset(); // human — clear the box
} else {
e.respondWith?.(Promise.resolve(
text(`Added task #${task.id}: "${task.title}".`)
));
}
});
Інструменты, якія з’являюцца і зникаюць
Калі працуеце з інструментамі, які выкалываюцца і працуюць, спачатку запісайце угоду: неабяжлівыя даны, сігнал успеху і тое, што выканаецца у разе частковага нявыпалення. Такі список пераканаець у тым, што пазнейшыя змены коду будуць чыстымі. Зберагаеце настройкі за межамі коду прыемліка. Файлы сераўнавання, храненні секрэтных данных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаюць адбавіць аудыт без неабяжлівага чытання всей структуры. Запісваеце назву інструмента, хэш аргументаў, час адклікання і рэзультат кожнага вызову. Без такога лёгкага следу дэбагаванне агента губіць гадзіны.
await mc.registerTool({
name: 'list-tasks',
description: 'List the tasks on the board. Use this before acting so you know the task IDs.',
inputSchema: {
type: 'object',
properties: {
status: { type: 'string', enum: ['all', 'open', 'done'] },
},
},
annotations: { readOnlyHint: true },
async execute({ status = 'all' }) {
const rows = visible(tasks, status);
return text(rows.map((t) => `#${t.id} [${t.done ? 'x' : ' '}] ${t.title}`).join('\n'));
},
});
async execute({ id }, { signal }) {
const t = findTask(tasks, id);
if (!t) {
return text(`No task #${id}.`);
}
await sleep(3000, signal); // throws if the agent aborts
return text(
`Task #${t.id} is about ${
t.priority === 'high' ? '2 hours' : '30 minutes'
}.`
);
}
let clearCtl = null;
async function syncClearTool() {
const has = tasks.some((t) => t.done);
if (has && !clearCtl) {
const ctl = new AbortController();
clearCtl = ctl;
await mc.registerTool(
{
name: 'clear-completed',
/* ... */
},
{
signal: ctl.signal
}
);
} else if (!has && clearCtl) {
const ctl = clearCtl;
clearCtl = null;
setTimeout(() => ctl.abort(), 0); // abort() IS unregister
}
}
mc.addEventListener('toolchange', refreshTools);
Што робіць гэтае адміншчыныяю ад сервера MCP
Калі працуеце над этапам «Што робіць гэта аднародным?», спачатку запісайце «контракт»: неабяжлівыя данні, сігнал успеху і тое, што выходзіць у разе частковага невыпання. Такі список пераконвае ў тым, што пазнейшыя змены коду будуць чыстымі. Документавайце як шлях успеху, так і шлях вярнення. Перапрыбуткі, людзкі контроль і обработка некоректных паведамленняў є частью продукту, а не пазнейшым дапрацоўкам. Зявляйце логі з назвай інструмента, хэшам параметраў, часам адклікання і рэзультатам кожнага вызову. Без такога следу дэбаггін агента губіць гады. Калі працуеце над этапам «Што робіць гэта аднародным?», спачатку запісайце «контракт»: неабяжлівыя данні, сігнал успеху і тое, што выходзіць у разе частковага невыпання. Такі список пераконвае ў тым, што пазнейшыя змены коду будуць чыстымі. Спрыймайце гэты этап як контракт між вхіднымі даннымі і перакананымі выходнымі рэзультатамі. Назвайце элементы, задаць критэрыя успеху і не падтрымайце тыхню частковую завершэння.
Як падключыць рэальны агент
Метод «Як падчырваты сцэну» дае найлепшыя результаты, калі яго рассматрываць як вимерную паверхню. Запісайте адны ідеальны прыклад, адзін прыклад неудачы і прыметку па адвярненню перад расшырэнням масштаба. Запісвайце часы выконання і косты токеноў або запытак праза функцыйнае рэзультат. Відразлівае паказанне костаў з самага пачатку запобегае неспакойным рахункам, калі процес пераходзіць з дэмаверсіі ў спяльныя сераўы. Актуалізуйце інструменты з вузкімі схемамі та чысткімі пазначэннямі побачных эфектаў. Хостам неабходна знать, якія вызовы мутуюць стан, перш чым вони автаматычна схваляюць іх.
node agent.mjs list
node agent.mjs call add-task '{"title":"Ship the demo","priority":"high"}'
{
"mcpServers": {
"webmcp-board": {
"command": "node",
"args": ["C:\\projects\\web-mcp-demo\\mcp-bridge.mjs"],
"env": { "PAGE_URL": "https://tusharkanjariya.github.io/web-mcp-demo/" }
}
}
}
Claude Code
↓
MCP
↓
mcp-bridge.mjs
↓
Chrome DevTools Protocol
↓
WebMCP
↓
my task board
Адмова
Этап адзінакоўкі працуе наякша, калі яго спрыяваць як мерыемую паверхню. Зафіксавайце адны «золаты» прыклад, адну справу аб неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расширваць масштабы. Зберагаюце настройкі паза кодам прыемліка. Файлы сераўнавання, хранільнікі секрэтных дадзеных і пазначкі функцый должны знаходзіцца ў аднам месцы, куды аператары можаць адбавляць контроль без неабяжнага чытання всіх дадзеных. Адкройце інструменты з вузкімі схемамі та чысткімі пазначкамі побачных эфектаў. Хостам неабходна знаты, якія вызовы мутуюць стан, перш чым яны автаматычна схваляюць іх.
Дзе Chrome не сагласуецца з спефікацыяй WebMCP
Этап, дзе Chrome не сагаджаецца з іншымі, найкраща адмаховваць як меравальную плошчу. Зберагачыце адна ідеальная транскрыпція, адзин случай неудачы і прыметку па вярнэнні да пачатковага стану пры розшырэнні масштаба. Дакументавайце як шлях успеху, так і шлях вярнэння. Перапрыбуткі, людзкія контраліны і обработка некоректных паведамленняў ёсць часткай продукту, а не пасляднім дапрацоўкам. Адкрывайце інструменты з вузкімі схемамі та чысткімі пазначэннямі побачных эфектаў. Хостам неабходна знать, якія вызовы мутуюць стан, перш чым яны автаматычна затвердзяюць. Этап, дзе Chrome не сагаджаецца з іншымі, найкраща адмаховваць як меравальную плошчу. Зберагачыце адна ідеальная транскрыпція, адзин случай неудачы і прыметку па вярнэнню да пачатковага стану пры розшырэнні масштаба. Адмахавайце гэты этап як кантракт межа вхіднымі даннымі та перакананымі выходнымі рэзультатамі. Называйце артыфакты, задаўце пераканальнія крэтарыі і адмовляйцеся ад беззвучнага частковага завершэння.
Короткая прыметка пра выкліканне продукту
Для короткага заўважэння пра этапы: перад змянай коду неабходна визначыць вхідныя даны, адпаведальнага за шаг і критэрыя завершэння. Аператары должны магчымаць перзапуск шагу з вядомай точкі контролю, не падозрываючы схованы стан. Запісваць трэба час выконання і вартасць токена або запиту разам з функцыональнымі рэзультатамі. Відразувая візуабельнае прадставлення вартасцей, можна ухіліцца ад неспакоўных рахунков, калі процес пераходзіць з дэмавайнтароў у спакульнае сераўеры. Аутентыфікацыя выканаліцаеся на воратах, а паўторная автарызацыя — на роўні дадзенняў. Сам токен-носіцель не є межай арендаванага прыёмніка.
Тое, на што у вас няма чыстага адказу
Для той часткі, яю вы адаптаваеце, перад змянайом код неабходна ясная ваказка пра вхідныя даны, адміністратара крока і крэтэрыяў завершэння. Аператары должны магчымае перадзваніць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Конфігурацыю трэба захаваць паза кодам прыемліка. Файлы сераўнавання, хранільнікі секрэтных данных і флагі функцый належаць у аднам месца, якое аператары можаць пераглядаць, не чытаяўшы весь ланцуг задач. Автентыфікацыя выконваецца на воратах, а паўторная автарызація — на роўні дадзенняў. Сам токен-носіцель не є межай адпаведнага тэнантства.
Што вы насправдзе павінны сказаць, каб гэта зрабіць
Для таго, што вы насправды будете запускаць, паказвайце вхідныя даны, адміністратара крока і критэрыя завершэння пры перадзеіснаванні коду. Аператары должны магчымаць перзапуск крока з вядомай точкі контролю без адгадвання захаванага стану. Дакументавайце як шлях успеху, так і шлях вярнення. Перапрыбуткі, людзкіе перакрыцця і обробка некоректных паведамленняў ёсць часткай продукту, а не пасляднім дапрацоўкам. Автентыфікуйцеся на воратах і паўторна автарызавайцеся на роўні дадзенняў. Толькі токэн-носіцель не є межай аренды. Для таго, што вы насправды будете запускаць, паказвайце вхідныя даны, адміністратара крока і критэрыя завершэння пры перадзеіснаванні коду. Аператары должны магчымаць перзапуск крока з вядомай точкі контролю без адгадвання захаванага стану. Спрыяйце гэтаму этапу як кантракту межа вхідных даных і перакананых выходных рэзультатаў. Называйце артыфакты, паказвайце перакрыцця успеху і адмовляйцеся ад бяспечнага частковага завершэння.
Прыём коду
Калі працюеце над стадзіяй «Атрыман коду», спачатку запісайце умовы вярбунка: неабяжлівыя даннэ, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі список контроля дапамагае заліцьварыць будучыя змены коду. Запісуйце час выканання і кост токена або запыту праз тэкст функцыйнальных рэзултатаў. Відразы коста з самага пачатку запобегае неспакойным рахункам, калі працэўнае сераўеры пераходзяць з дамовай версіі ў спакульнаныя среды. Запішыце назву інструмента, хэш аргументаў, час затрымкі і рэзултат кожнага вызову. Без такога лёгкага адлічэння час на дыбагаванне губіцца на гадзіны.
Частаясць запытанняў
Калі працуеце над этапам FAQ, спачатку запісайце умовы дагавору: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі список пераконвае ў тым, што пазнейшыя змены коду будуць чыстымі.
Чэк-ліст для эксплуатацыі
Калі працуеце над этапам чэк-ліста для эксплуатацыі, спачатку запісайце умовы дагавору: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі список пераконвае ў тым, што пазнейшыя змены коду будуць чыстымі.
Валіце маленькія, тэставаныя елементы замест вялікіх скрыптов. Калі якісь крок не выйшоў, прычына нявыпання должна вказываць на адну адпаведальнасць, а не на заплутаны ланцужок задач.
Зявіце логі з назвайом інструмента, хэшам аргументаў, часам затрымкі і рэзультатам кожнага вызову. Дыбагаванне без такога следу марнуе гадзіны.
Зафіксавайце версіі залежнасцей і запісаўце дзіжэст зображэння, якое выканало дамаўку. Возможнасць павторэння перажывае практычныя знаёмства.
Спрыятлівае ставленне да гэтага этапу як да кантракту межа вхіднымі даннымі і перакананымі выходнымі рэзультатамі. Дайце назвы артыфактам, задацьце критэрыя успеху і адмовіцеся ад мовчанкавага частковага завершэння.
Зявіце логі з назвайом інструмента, хэшам аргументаў, часам затрымкі і рэзультатам кожнага вызову. Дыбагаванне без такога следу марнуе гадзіны.
Перш чым пераводзіць стэк, заморозьце версіі, зафіксавайце «золаты» транскрыпт для критычнага маршруту і паказвайце крокі для адвярнення змян. У спакульнаваных средах патрэбны ліміты частоты, перакананні ў прыналежнасці і чыстае адпаведальнае аб’екта для ротацыі секрэтных дадзенняў. Валіце надзейнасць працы над крэатывнымі, адзінразовымі дамаўкамі.
Запіска параграфу для a0176a78f428: не трэба кантрацеўваць ключы прадаўцаў у репазітарыі, задаць максымальную кантэйнернасць токена на сесію, а таксама зберагчы транскрыпціі праза фіксатуры адлічэння, каб пазнейшыя замены моделей заставалі пораўняннымі.
Для запіскі параграфу адзінства 0 стадыі неабходна перад змянай коду задаць вхідныя даны, адпаведальнага за крок і крэтырыя завершэння. Аперацыёныя працавнікі павінны магчымае перадзванаць крок з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Лепш выбіраць маленькія, тэставаныя елементы заместо вялікіх скрыптав. Калі крок не выйшае, прычына неудачы павінна вказваць на адзіную адпаведальнасць, а не на заплутаны ланцоўкі працы.
Дзеянне адзінства 0/771: памерыць час выканання, класію адзінства і выкарыстаны токен для гэтай запіскі, а пасля вырашыць, чы робіць змяну на адной пазначкай пытанняў, а не на асоцыяціях.
Калі працуеце над першым этапам зміцнення, спачатку запісайте умовы кантракту: неабяцковыя даны, сігнал успеху і тое, што выходзіць пад частковыя неудачы. Такі список дапамагае заліцварваць будучыя змены коду. Празначайце час выканання задачі, а таксама вартасць токена чыя запиту празмаўляючы з рэзультатамі функцыянальнай працы. Візуабельнае прадставленне вартасцей з’являецца неспадзянанні па час пераходу з дэмовай среды ў спільныя сераверы.
Дзеянне зміцнення 1/771: вымерайце час выканання, класы памилак і витрату токена для гэтага пункту, а потым выберайце, чы робіць змену на адной пазначанай базе пытанняў, а не на адной лічбе прыкладаў.
Этап зміцнення 2 працюе лепей, калі яго спрыяваць як меравальную плошчу. Запісайце адну ідеальную транскрыпцыю, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расширваць сферу дзеяння. Дакументавайце як успішны, так і вярнэнчы паты. Перапрыбуткі, людзкія контралі і обработка некоректных паведамленняў є часткай продукту, а не чымсь, што дадаецца пазней.
Дзеянне паўжасткі 2/771: звярніце увагу на час выканання, класы паказчыкаў і колькасць токенаў, якія былі выкарыстаны для гэтага зазначэння, а пасля вырашыце, чы робіць змяну на аднойчы зафіксаванай сэтце пытанняў, а не на аднойчы спазірнай інформацыі.
Для 3-й стадзіі паўжасткі неабходна перад змянай коду адначасова визначыць вхідныя даны, адпаведальнага за выкананне крока і критэрыяы завершэння. Аперацыйныя працавнікі павінны магчымае перадзванаць гэты крок з вядомага пункта контролю, не прымусваныя здагадвацца пра схованы стан. Штуючы гэту стадзію, трэба спрацавваць яе як кантракт межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Назвіце всі неабходныя элементы, визначыце критэрыя успеху і не падтрымвайце частковае завершэння без паведамлення.
Дзеянне паўжасткі 3/771: звярніце увагу на час выканання, класы паказчыкаў і колькасць токенаў, якія былі выкарыстаны для гэтага зазначэння, а пасля вырашыце, чы робіць змяну на аднойчы зафіксаванай сэтце пытанняў, а не на аднойчы спазірнай інформацыі.
Калі працуеце над 4-й стадзіяю прыемкі з павышэння безпекі, спачатку запісайце умовы кантракту: неабяжлівыя данні, сігнал успеху і тое, што выходзіць на частым неудачам. Такі список контроля дапамагае заліцвачыць пазнейшыя змены ў кодзе. Зберагайце настройкі параду ўнутры коду прыемкі. Файлы сераўіса, хранільнікі секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаць адбавіць аудыт без неабяжлівага чытання всей структуры.
Дзялённе прыемкі з павышэння безпекі 4/771: вымерайце час выканання, класію каштоўкаў і выкарыстанне токенаў для гэтай прыемкі, а пасля выберайце, чы хацяце застаўіць змену, стварыўшы фіксаваны набор пытанняў, а не на базе індывідуальных спазыроў.
4-я стадзія прыемкі з павышэння безпекі работае лепей, калі яе спрыямаць як меравальную плошчу. Зберагайце адны ідеальны прыклад выканання, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расширваць сферу дзеяння. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, неудача должна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны процес.
Дзеянне паўжасткі 5/771: звярніце увагу на час выканання, класы памылак і колькасць токенаў, выкорыстаных для гэтага запісу, а пасля, на аднойчынай базе фіксаваных пытанняў, а не на індывідуальных прыкладах, выявіце, чы рэшацца застаўляць змяну.
Для 6-й стадзіі паўжасткі неабходна перад змянай коду чытко визначыць вхідныя даны, адпаведальнага за крок і критэрыя завершэння. Аперацыяныя працавнікі должны магчымае перадзвануць гэты крок з вядомай точкі контролю, не прабуючы спадарацца прыватнага стану. Запісвайце час выканання і колькасць токенаў або запытак праза функцыйнае рэзультат. Відкрытая інформацыя пра витраты запобегае неспакойным рашчыткам, калі працэс пераходзіць з дэмаверсіі ў спяльныя среды.
Дзеянне паўжасткі 6/771: звярніце увагу на час выканання, класы памылак і колькасць токенаў, выкорыстаных для гэтага запісу, а пасля, на аднойчынай базе фіксаваных пытанняў, а не на індывідуальных прыкладах, выявіце, чы рэшацца застаўляць змяну.
Калі працуеце над 7-й стадзіяю прыемкі з павышэння безпекі, спачатку запісайце угоду: неабяжлівыя данні, сігнал успеху і тое, што выходзіць пад частковы нявыплэн. Такі список контролю дапамагае заставіць пазнейшыя змены коду быць чыстымі.
Документавайце як «шчаслівы» шлях, так і шлях вяснавання. Перапрыбуткі, людзкія контралі і обработка некоректных паведамленняў ёсць частью продукту, а не пазнейшым дапрацоўкам.
Дзялей 7/771 прыемкі з павышэння безпекі: вымерайце час выканання, класыя ошибкі і витрату токенав для гэтай прыемкі, а пасля выберайце, чы робіць змены на адной пазначанай сэткі пытанняў, а не на адной толькі прымітцы.
7-я стадзія прыемкі з павышэння безпекі работае лепей, калі яе спрыямаць як вымеральную паверхню. Зафіксавайце адна «золатая» транскрыпцыю, адны прыклад нявыплэну і прымітку па абратанню роботы, перш чым расширваць масштаб.
Спрыяйце гэтай стадзіі як угоды межа даннімі і перакананымі выходамі. Дайце назвы артыфактам, задаце перакананні успеху і адмовіцеся ад тыхоўскага частковага завершэння.
Дзеянні паўжасткі 8/771: звярніце увагу на час выканання, клас памылак і колькасць викорыстоўваных токенав для гэтага запісу, а пасля, на аднойчынай базе фіксаванага набора пытанняў, а не на індывідуальных прыкладах, выявіце, чы рэшыцца застаўіць змяну.