NLWeb — opis narzędzia

przez Łukasz | maj 19, 2026

Czym jest NLWeb

NLWeb to otwarty standard Microsoftu który pozwala stronie internetowej odpowiadać na pytania w języku naturalnym — zarówno od ludzi jak i od agentów AI.

Bez NLWeb: agent otwiera stronę, scrape’uje HTML, próbuje zrozumieć strukturę, szuka odpowiedzi w treści.

Z NLWeb: agent wysyła pytanie do /ask. Strona odpowiada bezpośrednio.

Microsoft ogłosił NLWeb 19 maja 2025 na konferencji Build 2025, nazywając go „HTML dla agentic web”. Wśród pierwszych partnerów którzy zadeklarowali adopcję: Shopify, TripAdvisor, O’Reilly Media, Snowflake.

Repozytorium: github.com/nlweb-ai/NLWeb

Dwa endpointy

NLWeb definiuje dwa standardowe punkty dostępu:

/ask — konwersacyjny endpoint dla zapytań w języku naturalnym. Użytkownik lub agent pyta: „jakie usługi oferujecie?” Strona odpowiada na podstawie swojej treści. Działa jak chatbot oparty na zawartości witryny — bez konieczności budowania osobnego UI.

/mcp — endpoint MCP dla agentów AI. Zamiast czytać stronę, agent wywołuje funkcję. Ustrukturyzowany dostęp do treści i akcji strony zgodny z Model Context Protocol Anthropic.

Oba endpointy razem sprawiają że strona przestaje być pasywnym dokumentem do odczytania i staje się aktywnym uczestnikiem rozmowy z agentem.

Związek z MCP i WebMCP

NLWeb, MCP i WebMCP rozwiązują ten sam problem w różnych warstwach:

MCP (Anthropic) — protokół komunikacji między modelem AI a narzędziami po stronie serwera.

WebMCP (propozycja Chrome/W3C) — standard przeglądarkowy po stronie klienta. Strona wystawia listę akcji bezpośrednio w przeglądarce.

NLWeb (Microsoft) — protokół dla stron internetowych. Strona wystawia endpoint który rozumie pytania w języku naturalnym. Implementuje /mcp jako jeden z endpointów — jest kompatybilny z ekosystemem MCP.

Trzy standardy, trzy warstwy. Mogą współistnieć na tej samej stronie.

Historia bezpieczeństwa — czego nauczyła pierwsza podatność

Kilka tygodni po ogłoszeniu NLWeb, niezależni badacze bezpieczeństwa Aonan Guan i Lei Wang odkryli w implementacji referencyjnej klasyczny błąd path traversal.

Mechanizm był prosty: przez spreparowany URL można było nawigować poza dozwolone katalogi i odczytać dowolne pliki na serwerze bez uwierzytelnienia. W tym pliki .env z kluczami API do modeli językowych — GPT-4, Gemini i innych.

Guan opisał konsekwencję precyzyjnie: „Te pliki zawierają klucze API dla modeli językowych, które są kognitywnym silnikiem agenta. Atakujący nie kradnie tylko poświadczenia — kradnie zdolność agenta do myślenia, rozumowania i działania.”

1 lipca 2025 Microsoft wydał łatkę. Jednocześnie odmówił przyznania identyfikatora CVE, łamiąc standardowe praktyki odpowiedzialnego ujawniania podatności. Uzasadnienie: kod referencyjny nie jest używany bezpośrednio w produktach Microsoft. Wszystkie wdrożenia oparte na repozytorium pozostawały jednak narażone do czasu aktualizacji.

Szczegóły wyszły publicznie w sierpniu 2025. Instalacje które nie zaktualizowały się po 1 lipca pozostawały narażone przez kolejne tygodnie.

Dlaczego to ważne dla właścicieli stron:

Path traversal to błąd z lat 90. Pojawił się w protokole który miał być „HTML dla agentic web” — w centralnym punkcie który trzyma klucze API do wszystkich zintegrowanych modeli językowych. Ta sama historia co LiteLLM, Flowise, Marimo — stare klasy błędów, nowe miejsce, nowe konsekwencje.

Jeśli wdrażasz NLWeb przez własne repozytorium — sprawdź czy używasz wersji po 1 lipca 2025.

Jak wdrożyć — trzy ścieżki

Ścieżka 1: Cloudflare AI Search (najprostsza) Cloudflare oferuje wdrożenie NLWeb przez dashboard AI Search bez pisania kodu. Crawluje stronę, indeksuje treść, deployuje Worker z endpointami NLWeb. Publiczne preview — kontakt przez nlweb@cloudflare.com dla wdrożeń produkcyjnych.

Ścieżka 2: Implementacja referencyjna Repozytorium GitHub zawiera implementację w Pythonie. Wymaga własnego serwera, obsługuje różne backendy dla wektorowego wyszukiwania (Azure AI Search, Qdrant, Snowflake i inne).

Ścieżka 3: Cloudflare Worker Template Worker z gotową implementacją endpointów NLWeb. Deployujesz na własnym koncie Cloudflare, pełna kontrola nad konfiguracją.

Co NLWeb zmienia dla właścicieli stron

llms.txt i llms-full.txt mówią agentowi co strona zawiera. NLWeb pozwala agentowi wejść w dialog z treścią strony — zadać pytanie i dostać odpowiedź bez scrape’owania HTML.

Dla właścicieli sklepów, firm usługowych i serwisów contentowych — każda strona z NLWeb staje się de facto asystentem AI opartym na własnych danych, dostępnym dla każdego agenta który zna standard.

Dla kogo teraz

Deweloperzy i osoby techniczne — które chcą eksperymentować ze standardem zanim stanie się powszechny. Cloudflare Worker daje działający endpoint w kilka godzin, bez dotykania istniejącej strony.

Właściciele serwisów contentowych — dokumentacja, baza wiedzy, FAQ — to przypadki gdzie /ask ma natychmiastową wartość. Agent który obsługuje klienta nie musi scrape’ować — pyta.

Jeśli potrzebujesz agent-readiness dziś i nie chcesz eksperymentować — zacznij od llms.txt i structured data. Jeśli chcesz być gotowy na to co standardem stanie się za rok — NLWeb jest ważniejszy niż WebMCP bo ma działającą implementację dostępną teraz.


Sprawdź słownik pojęć Agentic Web

Sprawdź inne narzędzia AI

Agent kończy, ale zadania nie wykonał

Agent kończy, ale zadania nie wykonał

Objawy Agent odpowiada: „Przygotowałem i wysłałem potwierdzenie do klienta." Potwierdzenie nie zostało wysłane. Albo: „Zaktualizowałem wszystkie rekordy" — zaktualizował trzy z dwunastu. Albo: „Nie znalazłem żadnych zamówień" — bo narzędzie zwróciło błąd, którego nikt...

Agent zrobił coś, o co nikt nie prosił

Agent zrobił coś, o co nikt nie prosił

Objawy Operacja, której nikt nie zlecił. Dane wysłane pod adres, którego nie ma w żadnej konfiguracji. Rekord zmieniony poza zakresem zadania. Odpowiedź, z której wynika, że agent dostał instrukcje od kogoś innego niż ty. Cecha wspólna: technicznie wszystko zadziałało...

Agent zrobił to samo dwa razy

Agent zrobił to samo dwa razy

Objawy Ten syndrom różni się od pozostałych jedną rzeczą: objaw widzi klient, nie ty. Trzy identyczne wiadomości w skrzynce. Dwa zamówienia zamiast jednego. Podwójne obciążenie. Duplikaty rekordów, które ktoś zauważa tydzień później. W twoim dzienniku wszystko wygląda...

Agent gubi wątek w długim zadaniu

Agent gubi wątek w długim zadaniu

Objawy Pierwsze kroki idą wzorowo. Po kilkunastu agent zaczyna się rozjeżdżać. Przestaje przestrzegać reguły z promptu systemowego, której trzymał się na początku. Zmienia format odpowiedzi w połowie zadania. Wraca do czegoś, co już ustalił, i ustala to inaczej....

Agent podaje dane, których nie ma

Agent podaje dane, których nie ma

Objawy Numer zamówienia w idealnym formacie, którego nie ma w bazie. Kwota, której w dokumencie nie ma. Nazwa pola API, które nigdy nie istniało. Cytat z regulaminu, brzmiący dokładnie jak reszta regulaminu i w nim nieobecny. Cecha wspólna wszystkich tych przypadków:...

Działał wczoraj, dziś nie działa

Działał wczoraj, dziś nie działa

Objawy Nic się nie wywala. Nie ma wyjątków, nie ma timeoutów, dziennik wygląda tak samo jak zawsze. Po prostu odpowiedzi są gorsze. Postacie, w jakich to się objawia: Jakość. Agent zaczyna pomijać kroki, które wcześniej wykonywał, albo odpowiada ogólniej. Format....

Agent wybiera złe narzędzie

Agent wybiera złe narzędzie

Objawy Agent odpowiada nie na to pytanie. Pobiera listę zamówień, gdy pytano o jedno konkretne. Odpowiada z pamięci, choć miał sprawdzić w bazie. Albo sięga po właściwe narzędzie i wpisuje w argumenty coś, czego nie da się użyć. Sygnał, który odróżnia ten syndrom od...

Agent kręci się w kółko

Agent kręci się w kółko

Objawy Agent wykonuje kolejne obroty pętli, nie zbliżając się do zakończenia zadania. W dzienniku widać jedną z trzech postaci. Powtórzenie. To samo narzędzie, te same argumenty, raz za razem — czasem dziesiątki razy pod rząd. Oscylacja. Agent wywołuje na przemian dwa...