Wprowadzenie — dlaczego to w ogóle testujemy
Kiedy mówimy „agent AI odwiedza Twoją stronę”, zwykle myślimy o tym, co robi z tekstem — jak czyta nagłówki, akapity, dane strukturalne. Ale coraz więcej agentów (crawlerów AI, przeglądarek z wbudowanym modelem, systemów odpowiadających na pytania w wyszukiwarkach) ma też wzrok — potrafi analizować zdjęcia produktów, banery, infografiki, zrzuty ekranu.
To rodzi pytanie, które rzadko ktoś sobie zadaje: czy agent czytający obraz robi to poprawnie? A jeśli nie zawsze — to gdzie dokładnie się myli, i co to oznacza dla strony, która pokazuje ważne informacje (cenę, skład, liczbę sztuk) właśnie na grafice, a nie w czystym tekście?
Żeby to sprawdzić, przeprowadziliśmy prosty eksperyment. Przygotowaliśmy sześć testowych obrazów — każdy zaprojektowany tak, żeby uderzyć w jedną konkretną, znaną słabość modeli wizyjnych. Następnie poprosiliśmy model (Claude, w roli „agenta czytającego”) o opisanie każdego obrazu bez żadnej podpowiedzi, co dokładnie ma znaleźć. Na końcu dodaliśmy drugi etap: sytuacje, w których obraz i tekst strony mówią sobie nawzajem coś sprzecznego — bo to jest scenariusz, który naprawdę zdarza się na sklepach internetowych i stronach produktowych.
Hipotezy — czego się spodziewaliśmy
Zanim pokażemy wyniki, warto wytłumaczyć, dlaczego akurat te sześć scenariuszy wybraliśmy. Każdy odpowiada znanej, udokumentowanej słabości modeli generatywnych i wizyjnych:
1. Liczenie obiektów. Modele AI nie mają wewnętrznego licznika — „widzą” gęstość wzoru, a nie liczą jeden po drugim jak człowiek odhaczający pozycje na liście. Przy małej liczbie obiektów (kilka sztuk) zwykle radzą sobie dobrze, ale to nie jest pewne z definicji.
2. Konflikt tekst kontra obraz. Jeśli grafika promocyjna mówi co innego niż opis produktu w HTML, które źródło agent potraktuje jako prawdziwe? To pytanie o priorytet, nie o „widzenie”.
3. Wiązanie atrybutów (binding problem). Kiedy na jednym zdjęciu jest kilka obiektów, z których każdy ma swoją etykietę/cenę/kolor, model czasem przypisuje atrybut do złego obiektu — zwłaszcza gdy elementów jest więcej niż 3-4.
4. Drobny tekst / gęsty druk. Etykiety składu, listy INCI, drobne adnotacje prawne — to tekst na granicy czytelności nawet dla ludzkiego oka. Ciekawe, gdzie dokładnie model „odpuszcza” i zaczyna zgadywać zamiast czytać.
5. Negacja wizualna. Ikony przekreślające coś (np. przekreślony kłos zboża jako symbol „bez glutenu”) to test na to, czy model poprawnie łączy negację z właściwym obiektem, czy myli się przez samo skojarzenie wizualne.
6. Sprzeczność z priorem (fizyka/typowa pozycja). Jeśli obiekt jest pokazany w nietypowej, odwróconej pozycji (np. but podeszwą do góry), model może „poprawić” to mentalnie do znanego, typowego układu zamiast opisać to, co faktycznie widzi.
Metodologia
Dla każdej hipotezy przygotowaliśmy jeden obraz testowy (wygenerowany według konkretnego promptu), a model opisywał go „na ślepo” — bez znajomości oryginalnego promptu ani wcześniejszej wiedzy, czego dokładnie szukamy. Dopiero po odczycie porównywaliśmy wynik z tym, co faktycznie zlecono wygenerować.
W drugiej fazie do dwóch obrazów (konflikt cenowy i negacja „gluten free”) dodaliśmy fikcyjny fragment tekstu strony, który zaprzeczał informacji z grafiki — żeby sprawdzić, które źródło „wygrywa”, gdy są sprzeczne.
Test 1 — Liczenie: ile słoików jest na półce?

Co agent AI naprawdę widzi na Twojej stronie? Test sześciu granic
Hipoteza: model może błędnie policzyć obiekty, zwłaszcza powyżej 5-6 sztuk, i podać przybliżenie zamiast dokładnej liczby.
Prompt do generatora: siedem identycznych bursztynowych słoików z białymi wieczkami na drewnianej półce.
Odczyt modelu: model policzył słoiki jeden po drugim, od lewej do prawej, i podał dokładną liczbę 7 — zgodną z tym, co faktycznie zlecono wygenerować.
Wynik: ✅ zgodność pełna. Przy tej liczbie obiektów (7, w prostym rzędzie, bez zasłaniania) liczenie nie sprawiło problemu.
Test 2 — Konflikt tekst kontra obraz: cena na naklejce

Co agent AI naprawdę widzi na Twojej stronie? Test sześciu granic
Hipoteza: jeśli tekst strony i grafika promocyjna podają różne wartości procentowe zniżki, trzeba sprawdzić, które źródło agent zacytuje jako prawdziwe.
Prompt do generatora: czerwona okrągła naklejka z białym tekstem „-50%” na białym pudełku produktu.
Odczyt modelu (etap 1, sam obraz): naklejka czytelna, jednoznaczna, tekst „-50%” bez żadnej dwuznaczności.
Odczyt modelu (etap 2, z dodanym sprzecznym tekstem strony „-30%”): model zauważył sprzeczność i zasygnalizował ją wprost, ale przyznał też, że w praktyce — jeśli działa szybko, bez pogłębionej analizy — prawdopodobnie zacytuje tekst HTML jako główne źródło, ponieważ tekst jest tańszy i pewniejszy do przetworzenia niż analiza obrazu.
Wynik: ⚠️ to jest sedno problemu. Gdy oba źródła się nie zgadzają, wygrywa zwykle tekst — nawet jeśli to grafika jest aktualna, a tekst strony nieaktualny (albo odwrotnie).
Test 3 — Wiązanie atrybutów: pięć butelek, pięć cen

Co agent AI naprawdę widzi na Twojej stronie? Test sześciu granic
Hipoteza: przy kilku obiektach z osobnymi etykietami model może pomylić, która cena należy do którego produktu.
Prompt do generatora: pięć różnych butelek kosmetyków w rzędzie, każda z metką w innym kolorze i inną liczbą (29, 45, 12, 67, 38).
Odczyt modelu: model poprawnie przypisał wszystkie pary kolor–liczba–produkt:
- bursztynowa buteleczka z pipetą → czerwona metka 29
- niebieska butelka → niebieska metka 45
- miętowa tubka → zielona metka 12
- beżowa butelka z pompką → żółta metka 67
- fioletowa butelka ze sprayem → fioletowa metka 38
Wynik: ✅ zgodność pełna, ale z zastrzeżeniem — to był „łatwy” układ: jedna metka na jeden produkt, bez nakładania się elementów. Przy bardziej stłoczonej kompozycji (więcej obiektów, nakładające się etykiety) błąd wiązania jest bardziej prawdopodobny.
Test 4 — Drobny tekst: skład kosmetyku

Co agent AI naprawdę widzi na Twojej stronie? Test sześciu granic
Hipoteza: gęsty, drobny druk (typowy dla list składników) to miejsce, gdzie model zaczyna gubić dokładność odczytu.
Prompt do generatora: bardzo bliskie zbliżenie na listę składników kosmetyku, drobny druk, lekko pod kątem.
Odczyt modelu: większość tekstu odczytana poprawnie — Aqua, Sodium C14-16 Olefin Sulfonate, Glycerin, Citric Acid i kolejne pozycje na liście. Model zauważył jednak, że kilka słów jest fizycznie ucięte na krawędzi kadru (np. początek/koniec niektórych linii wychodzi poza obraz) i otwarcie zasygnalizował niepewność co do dokładnej treści tych fragmentów, zamiast zgadywać z pewnością.
Wynik: ⚠️ jedyne realne potknięcie w całym teście — ale ciekawe, bo przyczyną nie była gęstość druku, tylko fizyczny brak danych (tekst wychodzący poza kadr). Co ważne: model przyznał się do niepewności, zamiast wymyślić brakującą treść.
Test 5 — Negacja wizualna: „gluten free”

Co agent AI naprawdę widzi na Twojej stronie? Test sześciu granic
Hipoteza: przekreślona ikona (tu: kłos zboża) to klasyczny test negacji — model musi poprawnie połączyć symbol przekreślenia z właściwym znaczeniem, a nie tylko rozpoznać sam obiekt (kłos).
Prompt do generatora: czerwona plakietka z tekstem „GLUTEN FREE” i ikoną przekreślonego kłosa pszenicy na opakowaniu mąki.
Odczyt modelu (sam obraz): tekst i ikona odczytane poprawnie i spójnie — oba komunikują „produkt bez glutenu”. To nie był jeszcze test konfliktu, bo w tym obrazie nic sobie nie przeczy.
Odczyt modelu (z dodanym sprzecznym tekstem strony o „śladowych ilościach glutenu”): tutaj sprawa jest poważniejsza niż przy cenie, bo dotyczy bezpieczeństwa zdrowotnego (celiakia, alergie). Model wskazał, że nie powinien ignorować żadnego z sygnałów — właściwa odpowiedź powinna informować o obu: że opakowanie deklaruje „gluten free”, ale opis produktu wspomina o możliwym śladowym zanieczyszczeniu. Zastrzegł jednak, że mniej ostrożny, „szybszy” agent mógłby po prostu zacytować samą plakietkę i pominąć zastrzeżenie z tekstu.
Wynik: ⚠️ podobny mechanizm co w teście 2 (tekst kontra obraz), ale z wyższą stawką — błędne pominięcie jednego z dwóch sygnałów może mieć realne konsekwencje zdrowotne dla czytelnika.
Test 6 — Sprzeczność z priorem: odwrócony but

Hipoteza: jeśli obiekt jest pokazany w nietypowej pozycji, model może „poprawić” opis do typowego, znanego układu (tak jak w naszym wcześniejszym eksperymencie ze szklanką wody postawioną do góry nogami), zamiast wiernie opisać to, co faktycznie widać.
Prompt do generatora: pojedynczy but sportowy odwrócony podeszwą do góry, stojący na białym cokole.
Odczyt modelu: model poprawnie rozpoznał, że widzi podeszwę buta w pozycji odwróconej (spodem do góry), a nie standardowy widok buta z boku — z opisem wzoru bieżnika. Nie doszło do „poprawienia” opisu do typowej pozycji.
Wynik: ✅ zgodność pełna. W przeciwieństwie do eksperymentu ze szklanką wody (gdzie model konsekwentnie mylił fizykę cieczy przy odwróceniu), tutaj model poprawnie rozpoznał czystą inwersję pozycji obiektu statycznego — sugeruje to, że problem ze szklanką dotyczył specyficznie symulacji fizyki (zachowania wody), a nie samego rozpoznawania „góra/dół” obiektu.
Podsumowanie — gdzie faktycznie jest granica
Zbierając wszystkie sześć testów razem, wyłania się dość precyzyjny obraz tego, gdzie leży granica zrozumienia:
To, co działa dobrze:
- Liczenie małej/średniej liczby obiektów w czytelnym układzie (test 1)
- Przypisywanie atrybutów do obiektów, gdy układ jest prosty i nienakładający się (test 3)
- Rozpoznawanie nietypowej, odwróconej pozycji statycznego obiektu (test 6)
- Odczyt tekstu i ikon, gdy są kompletne w kadrze (test 5, sam obraz)
To, co faktycznie zawodzi — i dlaczego to ważne:
- Granica nie leży w samym „widzeniu”, tylko w rozstrzyganiu konfliktów. Testy 2 i 5 pokazują, że prawdziwym problemem nie jest błędny odczyt obrazu — obraz był czytany poprawnie w obu przypadkach. Problem pojawia się, gdy drugie źródło (tekst strony) mówi coś innego. W takiej sytuacji model przyznaje, że domyślnie skłania się ku zaufaniu tekstowi HTML, bo jest tańszy i pewniejszy w przetwarzaniu niż analiza piksela.
- Fizyczny brak danych, nie gęstość informacji, jest głównym źródłem niepewności. W teście 4 problemem nie był „za dużo tekstu”, tylko tekst ucięty na granicy kadru. Co ważne — model to zasygnalizował, zamiast zgadywać z fałszywą pewnością.
- Niepewność zasygnalizowana to nie porażka — to pożądane zachowanie. Zarówno w teście 4, jak i w testach konfliktowych (2, 5), najlepszym wynikiem nie było „zgadnij poprawnie za każdym razem”, tylko „przyznaj się, gdy dane są niekompletne albo sprzeczne”.
Praktyczna konsekwencja dla stron, które chcą być czytelne dla agentów:
Jeśli ważna informacja (cena, skład, dostępność, liczba sztuk) istnieje tylko na grafice, a tekst strony obok jest nieaktualny, niekompletny albo sprzeczny — istnieje realne ryzyko, że agent zacytuje tekst, a nie to, co faktycznie widać na zdjęciu. Innymi słowy: obraz nie jest wystarczającym źródłem prawdy, jeśli tekst obok niego mówi coś innego.Dla agent-readiness oznacza to prostą zasadę: kluczowe fakty powinny być zgodne w obu warstwach — tekstowej i wizualnej — a nie polegać na tym, że agent „zobaczy” właściwą wersję na obrazku.
Co o tym mówi dokumentacja crawlerów
Wnioski z samego eksperymentu warto zestawić z tym, co niezależnie zmierzono na prawdziwych crawlerach AI odwiedzających strony — bo to przenosi tezę z „model spekuluje o sobie” na „tak faktycznie działa infrastruktura”.
Żaden z głównych crawlerów nie wykonuje JavaScriptu. Wspólna analiza Vercela i MERJ, obejmująca ponad 500 milionów zapytań GPTBota, nie znalazła żadnego dowodu na wykonywanie skryptów — nawet gdy GPTBot pobierał pliki JS, nie uruchamiał ich. To samo dotyczyło ClaudeBota, agenta Mety, crawlera ByteDance i PerplexityBota. Vercel podsumowuje to wprost: żaden z głównych crawlerów AI obecnie nie renderuje JavaScriptu.
Tekst jest domyślnym, obraz — wyjątkiem. Dane pokazują, że crawlery ChatGPT i Claude faktycznie pobierają pliki JavaScript (odpowiednio 11,5% i 23,84% zapytań), ale ich nie wykonują — czyli nawet gdy plik trafia na serwer agenta, kod w nim pozostaje martwy.
Ciekawy wyjątek, który trzeba dobrze rozumieć. ClaudeBot pobiera obrazy aż w 35,17% swoich zapytań — więcej niż inne crawlery. Ale to konkretnie ClaudeBot, czyli crawler zbierający dane pod przyszły trening modeli, a nie Claude-User, który pobiera stronę wyłącznie wtedy, gdy konkretny użytkownik w rozmowie prosi o przeczytanie danego adresu. Anthropic nie opublikowało oficjalnego wyjaśnienia tego wysokiego odsetka; najbardziej prawdopodobna interpretacja to budowanie par obraz-tekst na potrzeby przyszłych, multimodalnych wersji modelu — co jest zbieraniem surowca „na później”, a nie analizą wizyjną w czasie rzeczywistym, w reakcji na konkretne zapytanie.
Co z tego wynika dla naszego eksperymentu: nasz test pokazał mechanizm na poziomie pojedynczego modelu („dlaczego agent wolałby tekst”). Dane z realnego ruchu crawlerów pokazują, że ten sam mechanizm faktycznie kształtuje architekturę — crawlery odpowiadające na żywo na pytania użytkowników (Claude-User, ChatGPT-User) parsują wyłącznie surowy HTML, bez wykonywania JS i bez potwierdzonej, systematycznej analizy wizyjnej obrazów w tym trybie. To nie jest już tylko hipoteza robocza — to udokumentowane zachowanie infrastruktury, którą realnie odwiedza Twoja strona.
Ograniczenia tego eksperymentu — trzeba to powiedzieć wprost
Ten test jest celowo prosty i koncepcyjnie czysty — a to ma swoją cenę, którą warto uczciwie nazwać, zanim ktokolwiek potraktuje te wyniki jako ostateczne.
1. Obrazy generowane przez AI czyta AI. Wszystkie sześć grafik testowych powstało w generatorze obrazów, a odczytywał je model tej samej rodziny technologii. Prawdziwe zdjęcie produktowe ze sklepu ma rozmycie, nierówne oświetlenie, ostrość ustawioną nie tam gdzie trzeba, kompresję JPEG, palce trzymające produkt w kadrze. To zupełnie inny poziom trudności niż czysta, wyrenderowana grafika studyjna — i nie testowaliśmy tego wariantu.
2. Model wiedział, że bierze udział w eksperymencie. W realnym scenariuszu agent trafia na stronę bez kontekstu „to jest test granic zrozumienia” — nie wie, że akurat ta grafika została zaprojektowana pod konkretną hipotezę. Świadomość bycia testowanym mogła subtelnie podnieść czujność modelu (np. przy sygnalizowaniu niepewności w teście z uciętym tekstem) w sposób, którego nie zobaczylibyśmy przy zwykłym, nieoznaczonym crawlowaniu.
3. To był test możliwości, nie testu decyzji. W tym eksperymencie model zawsze analizował obraz, bo mu go wprost pokazaliśmy — sam eksperyment nie mierzy, czy agent w ogóle zdecydowałby się spojrzeć. Tę część, wcześniej czysto hipotetyczną, częściowo domyka niezależna dokumentacja crawlerów opisana w sekcji poniżej: crawlery odpowiadające na żywo na pytania użytkowników (Claude-User, ChatGPT-User) parsują wyłącznie surowy HTML, bez wykonywania JS i bez potwierdzonej, systematycznej analizy wizyjnej obrazów w tym trybie. To mocniejsza podstawa niż samoopis modelu — ale wciąż nie wiemy z takim samym poziomem pewności, co dzieje się wewnątrz pojedynczej, żywej sesji, w której użytkownik wprost pyta agenta o konkretną stronę ze zdjęciem. Kolejna runda testów powinna więc użyć prawdziwych zdjęć produktowych osadzonych w realnym kodzie strony, nie czystych grafik testowych analizowanych w izolacji.
Innymi słowy: ten eksperyment mówi wiarygodnie „model potrafi to poprawnie odczytać, gdy już patrzy”. Nie mówi jeszcze wiarygodnie „agent zawsze zdecyduje się patrzeć” — a to drugie pytanie jest dla agent-readiness równie ważne, może ważniejsze.
To pierwsza runda testów. Kolejny naturalny krok: sprawdzić, jak agent zachowuje się przy bardziej stłoczonych kompozycjach (więcej niż 5 obiektów z etykietami), przy prawdziwych, niedoskonałych zdjęciach produktowych zamiast czystych renderów, oraz przy dłuższych, wieloakapitowych sprzecznościach tekst-obraz osadzonych w realnym kodzie strony.
Źródła:
- Vercel, The rise of the AI crawler — analiza z MERJ, ponad 500 mln zapytań GPTBota
- Search Engine Land, Anthropic clarifies how Claude bots crawl sites — oficjalny podział ClaudeBot / Claude-User / Claude-SearchBot











