A2A: pozwól agentom AI wywoływać Twoją witrynę
Opublikowano:
Agent AI właśnie zwalidował tę witrynę bez otwierania przeglądarki, klikania przycisku ani scrapowania strony — odczytał mały plik JSON, wysłał jedno typowane żądanie i otrzymał w odpowiedzi ustrukturyzowany wynik. Ta wymiana to właśnie A2A, i każda witryna może ją oferować.
Czym jest A2A
A2A (Agent2Agent) to otwarty protokół — obecnie pod auspicjami Linux Foundation — umożliwiający agentom AI odkrywanie i wzajemne wywoływanie się przez zwykłe HTTP. Pomyśl o nim jako o odpowiedniku publicznego API dla komunikacji między agentami: zamiast człowieka czytającego dokumentację i piszącego integrację, inny agent odczytuje maszynowy opis tego, co robi Twój serwis, i wywołuje go bezpośrednio.
Składa się z dwóch części: dokumentu wykrywalności (karty agenta) oraz wywoływalnego punktu końcowego (umiejętności).
1. Karta agenta — odkrywanie
Publikujesz plik JSON pod adresem /.well-known/agent-card.json, opisując kim jesteś i co potrafisz zrobić. Wymagane pola to name, description, version, url (Twój punkt końcowy A2A) oraz co najmniej jedna skill:
{
"protocolVersion": "0.3.0",
"name": "llms.txt Validator",
"description": "Validate a website's llms.txt and return a score with findings.",
"url": "https://llms-txt-validator.dev/a2a",
"skills": [{ "id": "validate_llms_txt", "name": "Validate llms.txt",
"description": "Given a domain or URL, fetch and validate its llms.txt." }]
}
2. Punkt końcowy — wywoływalna umiejętność
Pole url karty wskazuje na punkt końcowy JSON-RPC 2.0. Agent wywołuje metodę message/send z wiadomością; Ty wykonujesz pracę i zwracasz Task. Oto rzeczywiste wywołanie naszego agenta:
POST /a2a
{ "jsonrpc": "2.0", "id": "1", "method": "message/send",
"params": { "message": { "role": "user",
"parts": [{ "kind": "text", "text": "validate llmstxt.org" }] } } }
…i odpowiedź — ukończone zadanie zawierające czytelne dla człowieka podsumowanie oraz ustrukturyzowane dane:
{ "result": { "kind": "task", "status": { "state": "completed" },
"artifacts": [{ "parts": [
{ "kind": "text", "text": "Validated llmstxt.org: score 100/100..." },
{ "kind": "data", "data": { "ok": true, "report": { "scores": { "overall": 100 } } } }
] }] } }
Żadnej przeglądarki, żadnego parsowania HTML — agent otrzymuje dokładnie te dane, o które prosił.
A2A vs WebMCP vs MCP
- A2A — agenci sieciowi wywołujący Twój serwis przez HTTP (orkiestratory, inni agenci). Ta strona.
- WebMCP — agent działający wewnątrz przeglądarki, wywołujący narzędzia na Twojej otwartej stronie.
- MCP — łączenie narzędzi z jednym modelem lub aplikacją, zazwyczaj lokalnie.
Uzupełniają się nawzajem: A2A dociera do agentów sieciowych, a WebMCP do agentów wewnątrz przeglądarki. Zobacz jak te trzy elementy współgrają ze sobą.
Jak każda witryna może to dodać
Nie musisz implementować całego protokołu na start — wybierz jedną rzeczywistą czynność, którą wykonuje Twój serwis:
- Udostępnij poprawną kartę agenta pod adresem
/.well-known/agent-card.jsonz jedną umiejętnością. - Zaimplementuj synchroniczną metodę
message/sendopakowującą tę możliwość i zwróć ukończonyTaskz wynikiem jako artefakt. - Strumieniowanie, historia zadań i powiadomienia push są opcjonalne — ustaw
capabilities.streamingna false i dodaj je tylko wtedy, gdy będą potrzebne.
Jedna zasada: popieraj kartę rzeczywistym punktem końcowym
Karta to kontrakt, nie metatag. Jeśli opublikujesz kartę, której url faktycznie nie odpowiada na message/send, każdy agent, który jej ufa, trafia w ślepy zaułek. Udostępniaj A2A tylko dla możliwości, które naprawdę możesz obsłużyć — tak właśnie zbudowaliśmy naszą, i dlatego nasz raport oznacza sygnał jako obecny tylko wtedy, gdy stoi za nim działający punkt końcowy. Chcesz zobaczyć to na żywo? Pobierz naszą kartę agenta.