Scarica AX Code · GratuitoDocumentazione

Questa pagina è tradotta dalla documentazione inglese. Comandi, identificatori ed esempi restano invariati. Runtime 7.24.4 · SDK 2.6.7. Testo inglese

Ponte browser WebMCP

Stato: sperimentale Ambito: pubblico, stato attuale Ultima revisione: 2026-10-10 Responsabile: manutentori di AX Code

Il ponte WebMCP consente all’agente di aprire pagine in una finestra Chrome isolata, leggerle e, facoltativamente, agire su di esse. È sperimentale, disattivato per impostazione predefinita e richiede Chrome 150 o successivo.

WebMCP è uno standard web proposto. Una pagina può registrare strumenti strutturati — un nome, una descrizione e uno schema di input — così un agente può invocare quelle azioni direttamente. AX Code consuma gli strumenti registrati da una pagina e può anche leggere la pagina e agire su di essa.

Codex e ChatGPT Work documentano la versione dello stesso standard nel browser integrato come strumenti del sito. Quella pagina mostra come la loro app desktop attiva WebMCP, come un visitatore ispeziona gli strumenti offerti da un sito e come un autore del sito registra uno strumento. I passaggi seguenti sono quelli di AX Code.

Attivalo con Chrome

  1. Installa Google Chrome 150 o successivo. Anche Chromium con la stessa versione principale funziona. AX Code avvia una propria finestra Chrome su un profilo nuovo e lascia intatta una finestra Chrome già aperta.
  2. Avvia l’interfaccia del terminale con ax-code.
  3. Fai clic sul chip WebMCP nel piè di pagina della barra laterale, oppure sullo stesso chip nel piè di pagina del prompt Home, oppure esegui /webmcp. Il clic o il comando costituisce il consenso. Nessun browser si avvia prima. AX Code verifica prima, senza avviare un browser, se Chrome 150 o successivo è installato nei percorsi abituali e avvisa in caso contrario; il controllo è un avviso e non blocca mai il tentativo. La scelta viene salvata nella configurazione utente, così il ponte si riattiva all’avvio successivo senza un altro clic.
  4. AX Code apre quella finestra isolata con la funzione WebMCP abilitata (--enable-features=WebMCP). La finestra non contiene accessi finché non accedi manualmente.
  5. Chiedi all’agente di aprire una pagina. Con l’impostazione predefinita del prodotto, la navigazione non ha restrizioni. Un elenco di origini configurato o gestito la restringe.
  6. Fai di nuovo clic sul chip per disattivare il ponte. Così terminano le concessioni temporanee della sessione; le approvazioni salvate restano finché non le revochi nelle impostazioni MCP.

Il chip mostra [act] mentre il livello di interazione è attivo. L’impostazione predefinita del prodotto include quel livello. Per disattivarlo, imposta interact su false nel profilo webmcp della voce. Una voce salvata in precedenza conserva i livelli che aveva.

ax-code mcp webmcp stampa un frammento di configurazione. Non installa un pacchetto, non connette un server e non scrive un file. Aggiungi --interact per stampare una voce con il livello di interazione attivo, oppure --executable-path /absolute/path/to/chrome per indicare un binario Chrome 150+ specifico. Quando quel percorso è impostato, AX Code controlla la versione principale del binario prima dell’avvio.

Strumenti in una finestra Chrome aperta da te

La finestra isolata sopra ha già WebMCP abilitato. Per provare gli strumenti di pagina nel profilo Chrome che usi mentre costruisci un sito, segui la guida WebMCP di Chrome:

  1. Apri chrome://flags/#enable-webmcp-testing.
  2. Imposta il flag su Attivato.
  3. Riavvia Chrome.

Quel flag si applica al profilo Chrome che hai aperto. Il ponte di AX Code si avvia comunque dal chip.

Suggerimento nel prompt

Mentre il ponte è spento, un prompt che indica un URL o un server locale (per esempio localhost:3000) mostra un rinvio di una riga al chip e a /webmcp. Compare al massimo una volta per sessione e tre volte in totale, e non cambia mai ciò che viene inviato all’agente.

Cosa può fare l'agente

Livello Strumenti Approvazione
Pagine elencare, aprire, navigare, chiudere pagine; eseguire strumenti che una pagina registra tramite WebMCP ogni chiamata, salvo uno scope supportato già salvato
Lettura istantanea della pagina, screenshot, console, metadati delle richieste una concessione per origine per sessione, oppure un’approvazione di lettura salvata
Interazione clic, passaggio del mouse, attesa, compilazione, compilazione di moduli, pressione di tasti, risposta alle finestre di dialogo vedi sotto

Il contenuto della pagina non è attendibile: una pagina può tentare di influenzare l’agente. L’output è etichettato con la propria origine e ha una dimensione limitata.

Salva un'approvazione

I prompt idonei offrono Aggiungi all’elenco consentiti WebMCP con sfondo rosso. Selezionalo, rivedi l’ambito, poi scegli Aggiungi e consenti. Le approvazioni salvate valgono per questo progetto su questa macchina e restano dopo le riconnessioni del browser e i riavvii di AX Code.

  • L’elenco delle pagine approva list_pages per il browser di AX Code, inclusi titoli e URL di tutte le origini aperte. Non approva il contenuto delle pagine.
  • La navigazione approva l’apertura o lo spostamento verso una sola origine esatta.
  • La lettura approva istantanee, screenshot, console e metadati di rete su una sola origine esatta. Altre origini e porte richiedono una propria approvazione.
  • La chiusura approva la chiusura di qualsiasi pagina attualmente su una sola origine esatta, incluse le pagine con lavoro non salvato. È una scelta separata: le approvazioni di navigazione e lettura non la concedono. L’origine di destinazione viene ricontrollata prima della chiusura.

Dopo la prima approvazione di lettura, AX Code prosegue quella lettura nella stessa chiamata dopo aver ricontrollato la pagina. Un cambiamento della pagina o del ponte interrompe la chiamata e richiede una nuova lettura. Non ripete un’operazione del browser non riuscita.

Le restrizioni di navigazione e la policy dell’amministratore restano in vigore. Salvare un’approvazione non modifica allowedOrigins. Digitazione, clic consequenziali, finestre di dialogo e strumenti registrati dalla pagina conservano le approvazioni esistenti. Consenti una volta resta temporaneo; il conto alla rovescia non salva mai un’approvazione persistente.

Seleziona il collegamento Elenco consentiti WebMCP accanto al chip WebMCP (piè di pagina della barra laterale della sessione e piè di pagina del prompt Home), esegui /webmcp-allowlist, oppure apri /mcp, seleziona il ponte e premi Ctrl+G. Fai doppio clic su una voce (oppure premi Invio due volte) per revocarla; la prima attivazione contrassegna la riga e una seconda entro pochi secondi conferma, così un singolo clic non revoca mai. La riga di cancellazione revoca allo stesso modo tutte le approvazioni salvate per quel ponte in questo progetto. Gli elenchi lunghi scorrono. Premi Esc oppure fai clic fuori dal pannello per chiuderlo.

La casella di ricerca aggiunge anche approvazioni. Digita un’origine https:// esatta (oppure http://localhost), poi seleziona la riga di navigazione, lettura o chiusura per salvarla; una riga di elenco pagine viene offerta finché non è salvata. Il ponte deve essere connesso: un’approvazione esplicita si lega all’identità del ponte in esecuzione e viene controllata a ogni chiamata esattamente come una salvata da un prompt, quindi gli elenchi di origini gestiti, l’interruttore del livello di lettura e la policy dell’amministratore restano in vigore. Disattivare il chip WebMCP disconnette il browser e conserva le scelte salvate.

L’archivio locale è ~/.local/share/ax-code/webmcp-approvals.json per impostazione predefinita (si applicano le sostituzioni della directory dati XDG). Le approvazioni sono legate all’identità del ponte; cambiare l’avvio o il profilo del browser richiede una nuova approvazione.

Un errore di navigazione può verificarsi dopo che una pagina si apre o cambia. L’errore indica, quando disponibile, una categoria riconosciuta di timeout, rete o pagina mancante, senza ripetere il testo grezzo dell’errore del ponte. Ispeziona list_pages prima di decidere se navigare di nuovo. Gli errori di navigazione non rimuovono le approvazioni salvate.

Livello di interazione

Il passaggio del mouse e i clic ordinari avvengono con una concessione per origine, valida per 20 azioni, poi ricompare lo stesso prompt.

  • Digitazione, pressioni di tasti, finestre di dialogo, collegamenti, doppi clic e clic il cui nome sembra consequenziale (submit, pay, delete, authorize, …) chiedono conferma ogni volta, mostrando la destinazione e il valore completo.
  • I campi il cui nome sembra una credenziale sono etichettati e mascherati. I valori che hanno la forma di chiavi API o chiavi private vengono rifiutati: digita tu stesso le credenziali.
  • Le azioni richiedono una nuova istantanea della stessa pagina; una pagina spostata o un elemento sconosciuto viene rifiutato. Tre rifiuti in un turno bloccano le azioni successive.

I controlli basati sul nome sono euristiche, non una garanzia. Il prompt è il controllo, quindi leggilo.

Lavora con una pagina esistente

Chiedi ad AX Code di ispezionare le capacità della pagina, sviluppare i suoi strumenti nativi o diagnosticare un comportamento specifico. Lo strumento browser_workflow raggruppa queste attività senza richiedere l’avvio di un server di test per osservazioni ordinarie. Abilita prima il ponte e identifica la pagina prevista; nessuna di queste azioni apre una pagina, effettua l’accesso, cambia il profilo del browser o pianifica lavoro futuro.

Per esempio: «Ispeziona gli strumenti della mia app locale e mostra a quali funzioni dell’applicazione corrispondono», oppure «Acquisisci questa pagina prima che io riproduca i risultati vuoti, poi confronta gli errori e indicami i file sorgente candidati».

Ispeziona gli strumenti nativi e il loro sorgente

Chiama status con server, pageId e l’esatto origin per vedere gli strumenti effettivamente ammessi e la disponibilità nativa o di istantanea. Un elenco vuoto non dimostra che i frame inaccessibili non abbiano strumenti. I connettori esistenti possono essere più adatti alle attività che non richiedono il contesto della pagina.

{
  "action": "inventory",
  "server": "webmcp",
  "pageId": 1,
  "origin": "http://localhost:3000",
  "sourceFiles": ["src/tools.ts", "public/search.html"]
}

Conserva il inventoryId restituito. Passalo come baselineId in una chiamata di inventario successiva per vedere strumenti aggiunti o rimossi e campi dello schema modificati. I file sono controllati esplicitamente sui permessi, contenuti nel repository e limitati. Le registrazioni imperative statiche e gli attributi di form HTML tra virgolette producono candidati di sorgente; i nomi calcolati, le definizioni duplicate e i modelli non supportati restano irrisolti o ambigui. Un nome e uno schema corrispondenti corroborano un candidato, ma non provano che il browser abbia caricato quella revisione del sorgente.

Genera un'integrazione dell'applicazione

Usa author per ottenere codice di integrazione rivedibile:

{
  "action": "author",
  "name": "find_products",
  "description": "Find products matching a query in the current catalog.",
  "module": "./src/catalog.js",
  "exportName": "findProducts",
  "schema": {
    "type": "object",
    "properties": { "query": { "type": "string" } },
    "required": ["query"]
  },
  "format": "imperative",
  "effect": "read"
}

La funzione nominata deve essere un export diretto. La registrazione generata accetta un AbortSignal per la pulizia di componente o route. Imposta acceptsSignal: true solo quando la funzione dell’applicazione accetta un secondo argomento {signal} e lo rispetta. format: "declarative" restituisce un form più un binding di modulo per l’invio umano; collega il suo evento webmcp-result all’interfaccia dell’applicazione. I campi primitivi sono supportati; i vincoli di schema non supportati vengono rifiutati invece di essere scartati in silenzio. Rivedi validazione, autorizzazione ed effetti reali dell’applicazione prima di applicare uno dei due modelli. Le modifiche ai campi possono attivare il salvataggio automatico anche quando un form richiede un invio umano.

Controlla separatamente esecuzione e selezione del modello

I passaggi contract esistenti verificano input fissi e risultati attesi. Aggiungi {"action":"tool_presence","name":"admin_reset","present":false} dopo un cambiamento di route o di ruolo per controllare che un’operazione non disponibile sia stata deregistrata. present: true può anche fissare descriptorHash. Sono punti di controllo del ciclo di vita, non una traccia di eventi. Le regressioni esportate includono gli stessi controlli.

Usa una valutazione di selezione separata per scoprire se un modello sceglie lo strumento e gli argomenti giusti:

{
  "action": "selection_eval",
  "inventoryId": "<returned inventory UUID>",
  "cases": [
    { "task": "Find AX products", "expected": { "name": "find_products", "arguments": { "query": "AX" } } },
    { "task": "Delete every product", "expected": { "name": null, "arguments": {} } }
  ],
  "repeats": 2
}

Il modello API selezionato riceve solo il compito e il catalogo acquisito, senza strumenti di esecuzione né risposte attese. Le chiamate sono approvate e limitate a 12 casi, tre ripetizioni e una scadenza di valutazione di due minuti. Il rapporto registra l’identità del modello, un hash della suite, conteggi separati ed esatti di scelta e argomenti, la correttezza congiunta e gli esiti sconosciuti. I fallimenti restano nel denominatore. I modelli CLI non sono disponibili per questa valutazione perché possono eseguire i propri strumenti. I punteggi di selezione non provano la correttezza dello strumento né qualificano Arena.

Diagnostica prima e dopo un'azione

Chiama observe con lo stesso bersaglio di pagina, sourceFiles facoltativo e assertions esplicito, usando lo schema esistente di ruolo/nome e count/value/checked/disabled. Esegui l’azione richiesta una sola volta tramite uno strumento approvato oppure a mano. Poi chiama {"action":"diagnose","observationId":"<returned UUID>"}. Il risultato confronta gli esiti delle asserzioni, gli hash delle istantanee, i delta limitati di console e metadati delle richieste, i cambiamenti dell’inventario semantico e i candidati di sorgente. La correlazione è un indizio da indagare, non una causa radice dimostrata. Senza asserzioni lo stato è observed, non pass.

Le linee di base restano solo nella sessione di runtime corrente, scadono dopo 30 minuti e sono limitate a 16 per sessione. I cambiamenti di connessione o posizione della pagina invalidano il riutilizzo. Il ponte fissato non può identificare un ricaricamento dello stesso URL, quindi questi confronti restano consultivi. Si conservano solo gli hash delle posizioni di pagina e delle istantanee; il testo diagnostico limitato e i descrittori degli strumenti sono prove non attendibili.

Per un problema riproducibile su localhost, promote accetta l’ID di osservazione e un manifest normale esplicito che contiene il comando del server di test locale e i passaggi. Congela un nuovo scenario controllato. I risultati di osservazione non vengono mai copiati nell’accettazione: esegui un controllo in fallimento prima di modificare e qualifica le esecuzioni corrette tramite il flusso di lavoro esistente.

Ripeti un'attività di osservazione quotidiana

Una ricetta su richiesta controlla una pagina esistente senza navigazione né pianificazione:

{
  "action": "recipe",
  "server": "webmcp",
  "pageId": 1,
  "definition": {
    "version": 1,
    "name": "Preview health",
    "origin": "http://localhost:3000",
    "assertions": [{ "locator": { "role": "status", "name": "Ready" }, "property": "count", "equals": 1 }]
  }
}

L’impostazione predefinita è solo istantanea. I queries facoltativi contengono uno strumento esatto name, descriptorHash, l’oggetto input, resultPath e equals. Invocano strumenti reali dell’applicazione sotto l’approvazione esistente per chiamata; gli indizi di sola lettura non certificano gli effetti. Il risultato distingue esplicitamente l’osservazione dell’istantanea dalle chiamate all’applicazione con effetti non verificati e ricontrolla le istantanee dopo le query. Salva le definizioni riviste, non i contenuti acquisiti né le credenziali. Le definizioni non portano permessi e non diventano mai ricevute Arena. Un esito positivo significa solo che le osservazioni dichiarate hanno corrisposto; i dati mancanti non possono soddisfare un controllo.

Registra uno strumento manualmente

Chiedi all’agente di aggiungere uno strumento che riusa logica già presente nella pagina, oppure registrane uno dal JavaScript della pagina. La guida di Chrome copre l’API imperativa e l’API dichiarativa dei form. Uno strumento minimo di sola lettura ha questo aspetto:

if (typeof document.modelContext?.registerTool === "function") {
  await document.modelContext.registerTool({
    name: "read_heading",
    description: "Read the main heading of the current page.",
    inputSchema: {
      type: "object",
      properties: {},
      additionalProperties: false,
    },
    annotations: { readOnlyHint: true },
    execute: async () => ({
      heading: document.querySelector("h1")?.textContent ?? "",
    }),
  })
}

Un agente compatibile può quindi scoprire read_heading su quella pagina. La pagina strumenti del sito di OpenAI percorre la stessa idea dal lato di Codex e ChatGPT Work, incluso il modo in cui il loro browser integrato elenca gli strumenti forniti da un sito.

Limiti

Niente script, caricamenti, download, cookie, corpi delle richieste, coordinate o trascinamento. Gli amministratori possono disabilitare il ponte o uno dei due livelli con il requisito gestito webmcp (allow, allowRead, allowInteract, allowedOrigins); la configurazione di progetto e utente non può allentarlo.

I server che aggiungi con ax-code mcp add seguono un percorso di fiducia diverso. Vedi Integrazioni MCP.

Esegui il debug di una pagina localhost in cinque passaggi

Per una pagina che si disegna in modo errato, un controllo che non fa nulla o una richiesta che fallisce:

  1. Vai alla pagina e acquisisci un’istantanea: l’albero di accessibilità è la linea di base strutturale. Navigazione e letture usano le approvazioni esistenti.
  2. Esegui una sola volta l’azione che fallisce, con le approvazioni di interazione esistenti.
  3. Leggi il delta: errori di console e metadati di rete (metodo, URL, stato, tipo — i corpi di richiesta e risposta restano fuori ambito) intorno all’azione. Per lo stato asincrono, attendi; non ripetere mai l’azione che ha innescato il problema.
  4. Verdetto: PASS, FAIL o BLOCKED, con la capacità mancante indicata. Il riconoscimento di uno strumento non è la prova del successo dell’applicazione.
  5. Se il fallimento su localhost può essere espresso come un’asserzione strutturata, congelalo come scenario browser_workflow (sotto), registra il controllo in fallimento ed esegui lo stesso hash due volte dopo la correzione.

Allega le prove a una segnalazione di bug

Per un fallimento su localhost indagato tramite uno scenario congelato, un fascicolo di prove rende la segnalazione rivedibile: nome e hash dello scenario, risultato dell’asserzione in fallimento (senza il contenuto di pagina acquisito), gli ID delle ricevute da browser_workflow inspect, gli hash delle istantanee, i delta limitati di errori di console e metadati di rete, i collegamenti al sorgente con le etichette explicit/local_map/unresolved e l’origine. Includi solo output limitato e redatto dal runtime: mai corpi di richiesta o risposta, intestazioni, cookie, archiviazione, contenuto della pagina o valori a forma di credenziale. Gli ID delle ricevute e i dati di ricevuta copiati sono solo riferimenti; lo stato autorevole delle ricevute resta di proprietà del runtime.

Riproduci e verifica una modifica di sviluppo

Lo strumento browser_workflow congela i passaggi di accettazione prima che tu modifichi un’applicazione web, li esegue tramite il ponte WebMCP connesso e registra asserzioni strutturate. Abilita prima il ponte. Il primo ambiente supportato è un server HTTP usa e getta su 127.0.0.1; ogni esecuzione assegna una porta diversa e una directory temporanea dei dati, più un contesto browser isolato nuovo. I profili browser persistenti vengono rifiutati. I contesti vuoti sono trattenuti dal ponte upstream fino alla disconnessione; dopo 32 esecuzioni su una connessione, riconnetti il ponte prima di continuare. Il flusso di lavoro non riusa mai i loro cookie o l’archiviazione.

Chiedi all’agente di congelare uno scenario con action: "freeze". Per esempio, un test/browser-server.mjs di proprietà del progetto che accetta un argomento di porta può usare:

{
  "action": "freeze",
  "manifest": {
    "version": 1,
    "name": "Search returns a matching result",
    "server": "node test/browser-server.mjs {port}",
    "path": "/",
    "setup": [],
    "reset": [],
    "cleanup": [],
    "steps": [
      { "action": "fill", "locator": { "role": "textbox", "name": "Search" }, "value": "example" },
      {
        "action": "assert",
        "assertion": {
          "locator": { "role": "status", "name": "One result" },
          "property": "count",
          "equals": 1
        }
      }
    ]
  }
}

Conserva l’hash restituito. Esegui con {"action":"run","hash":"<hash>","server":"webmcp"} (usa il nome del ponte connesso). Riproduci il fallimento, applica la modifica ed esegui due volte lo stesso hash. Ogni esecuzione avvia il server dichiarato, apre la propria pagina, controlla i passaggi, chiude la pagina e arresta il proprio server. I comandi del ciclo di vita girano nella radice del repository tramite i permessi normali della shell. {port} si espande nella porta assegnata; {data} si espande in una directory temporanea tra virgolette. I comandi di preparazione, ripristino e pulizia devono terminare entro 15 secondi; la prontezza ha una scadenza di 15 secondi e l’esecuzione nel browser ha una scadenza di 120 secondi. Le azioni del browser conservano i permessi e i budget di interazione esistenti.

I passaggi supportati sono click, hover, fill, asserzione strutturata e controlli del contratto degli strumenti di pagina. I localizzatori usano un ruolo esatto e un nome accessibile. Le azioni con zero o più corrispondenze si fermano come unknown; non esiste un UID indovinato né un ripiego CSS o script. Le asserzioni confrontano conteggio, valore, stato checked o disabled. Una proprietà di stato assente è sconosciuta. Per il rendering asincrono, aggiungi timeoutMs (0-10000, predefinito 0) a un passaggio assert. L’esecutore interroga istantanee strutturate nuove finché l’asserzione corrisponde o scade la scadenza; non ripete mai il click o il fill precedente. Il timeout è congelato con lo scenario e conservato nel test esportato. Gli scenari sono limitati a 32 passaggi e 32 KiB.

inspect restituisce il manifesto congelato e le ricevute di runtime. Le ricevute legano lo scenario alla revisione e al contenuto del repository, agli esiti delle operazioni, agli hash delle istantanee e ai metadati limitati di console e rete. Sorgente modificato, operazioni negate, prove mancanti, timeout e pulizia incompleta non possono superare il controllo. Questi risultati convalidano le asserzioni dichiarate; non provano ogni comportamento dell’app. Lo stato congelato e le ricevute autorevoli vivono nella sessione di runtime corrente. Dopo un riavvio, congela e qualifica di nuovo; le ricevute JSON copiate non sono accettate come autorità di runtime.

Esporta un test di regressione

{"action":"export","hash":"<hash>"} restituisce un modulo Node.js autonomo che usa playwright-core. Salva il codice restituito come test del progetto ed eseguilo con AX_TEST_WEBMCP_CHROME che punta a Chrome. Avvia la stessa fixture e usa contesti browser nuovi, localizzatori stabili di ruolo e nome e le asserzioni congelate. Esegui davvero il test esportato prima di chiamarlo convalidato. I test esportati sono un artefatto di regressione indipendente; il loro output non è una ricevuta Arena. I passaggi del contratto degli strumenti di pagina usano il protocollo WebMCP nativo di Chrome con hash esatti dei descrittori e output atteso, senza valutare script arbitrari della pagina. Chrome deve supportare quel protocollo sperimentale per le esportazioni di contratto.

Sviluppa un contratto di strumento di pagina e indaga i fallimenti

Con una pagina aperta, {"action":"contracts","server":"webmcp","pageId":1} restituisce i descrittori registrati e gli hash esatti dei descrittori. Congela un passaggio contract che contiene name, descriptorHash, input, resultPath e equals. I cambiamenti di hash fanno fallire il controllo. Imposta expectError: true per gli input negativi: lo soddisfa solo un errore confermato di esecuzione dello strumento di pagina; chiamate annullate, rifiuto dei permessi e completamento mancante sono sconosciuti. Aggiungi asserzioni dopo le mutazioni per controllare sia lo stato risultante della pagina sia il valore restituito.

L’azione template accetta name, un module relativo dell’applicazione, un exportName esplicito e schema. Verifica che l’export locale esista e restituisce uno scheletro di registrazione. Rivedilo rispetto a validazione dell’input, autorizzazione e logica di business dell’applicazione prima di abilitarlo; lo strumento non può stabilire quelle garanzie a partire dal nome di una funzione esportata.

Un elenco sources facoltativo nomina file locali al repository con line a base uno e column a base zero, e facoltativamente un file map locale. Le esecuzioni fallite restituiscono diagnostica limitata e collegamenti al sorgente etichettati explicit, local_map o unresolved. La mappatura è consultiva, mai la prova di una causa radice o di un’asserzione superata. Le mappe remote, i percorsi fuori dal repository e i file oltre 1 MiB non vengono letti. Le prove di rete del browser restano solo metadati.

Richiedi prove del browser in implement Arena

Fornisci browserScenario: "<hash>" con mode: "implement". Congela lo scenario e registra un’asserzione realmente in fallimento sulla base pulita corrente prima di avviare Arena. Ogni candidato riceve quel contratto congelato nel proprio worktree isolato e deve eseguirlo due volte con successo tramite il proprio ponte isolato connesso. Attivazione del browser e permessi restano sotto supervisione. Accesso al ponte mancante, contenuto non aggiornato, risultati sconosciuti o ricevute mancanti impediscono la promozione, anche se i controlli del repository passano. La verifica normale del codice e i controlli di mutazione continuano, e nessun candidato viene unito automaticamente.

Scegli le prove in modo efficiente

Gli strumenti WebMCP nativi descrivono le operazioni dell’applicazione; Chrome DevTools MCP fornisce ispezione e automazione del browser. Preferisci lo strumento registrato da una pagina per un’operazione esplicita dell’applicazione, poi verifica il risultato e lo stato risultante della pagina. Usa istantanee di accessibilità per il testo e per localizzatori di elementi stabili. Per layout, canvas o contenuto solo immagine, acquisisci uno screenshot: ritaglia su un’istantanea recente uid oppure usa JPEG con qualità ridotta per restare nei limiti in linea. Interpretare i pixel richiede un modello capace di visione. Né WebMCP né l’elenco documentato degli strumenti DevTools MCP fornisce uno strumento OCR dedicato; il testo inferito dalle immagini è consultivo e non può soddisfare un’asserzione di accettazione strutturata.

Restringi le letture della console con types e pageSize; restringi i metadati di rete con resourceTypes e pageSize. Le ricevute del flusso di lavoro conservano le linee di base precedenti all’azione e i delta limitati, così gli errori introdotti dalla riproduzione sono più facili da trovare. I corpi di rete e la valutazione arbitraria restano fuori dalla superficie concessa dal ponte. Tracce di prestazioni, emulazione, Lighthouse, screencast, memoria e strumenti di estensione nel DevTools MCP upstream sono capacità separate e non sono esposte da questo profilo.

Vedi la guida al debug WebMCP di Chrome e il riferimento degli strumenti DevTools MCP upstream. Il main upstream può differire dal ponte fissato da AX Code; solo gli schemi locali degli strumenti descrivono gli argomenti supportati.