Jak nakarmić sieć neuronową ścianą kodu jako obrazem i zaoszczędzić 60% budżetu tokenów
Ostatnio złapałem się na myśli, że przyzwyczailiśmy się do traktowania okien kontekstowych modeli językowych wyłącznie jako tekstu. Wysyłasz plik o 50 000 znaków i płacisz za 12–15 000 tokenów tekstowych. Jeśli używasz Claude Code lub Cursor przez wiele godzin, kontekst jest stale uzupełniany instrukcjami systemowymi, dokumentacją narzędzi i logami wykonania poleceń. Rachunek API na koniec miesiąca zaczyna być nieprzyjemnym zaskoczeniem.
Twórcy projektu pxpipe zauważyli interesującą lukę w cennikach nowoczesnych modeli multimodalnych. Koszt obrazu w tokenach zależy tylko od jego fizycznej rozdzielczości w pikselach, nie od tego, ile tekstu się na nim znajduje. Jeśli skompresujesz gęsty tekst na zwarty zrzut ekranu z małą czcionką, jeden token obrazu może pomieścić mniej więcej 3–5 razy więcej znaków niż standardowy token tekstowy.

I tak narodził się pomysł lokalnego serwera proxy — takiego, który na bieżąco przeryсовуje ciężkie części żądania na monochromatyczne strony PNG przed wysłaniem ich do Anthropic lub OpenAI.
Jak działa ten trick
W formacie tekstowym gęste dane, takie jak JSON, zrzuty baz danych czy kod, są konsumowane w tempie mniej więcej jednego znaku na token. Tymczasem nowoczesne modele, jak Claude 3.5 Sonnet, Claude Opus czy Gemini, doskonale rozpoznają obrazy rastrowe dzięki wbudowanym modułom wizyjnym.
Narzędzie pxpipe przechwytuje wychodzące żądania API na Twojej maszynie i tnie nieporęczny kontekst na gęste obrazy z niestandardową czcionką monospace (na przykład Spleen 5×8 lub JetBrains Mono).

Zamiast 25 000 tokenów surowego tekstu dla promptu systemowego i opisów narzędzi, model otrzymuje zaledwie kilka obrazów ważących tylko 2 700 tokenów. Dla okna kontekstowego o pojemności 1 miliona tokenów zwiększa to rzeczywistą pojemność znakową niemal pięciokrotnie: z 4 milionów znaków do 19–21 milionów.
Co jest kompresowane, a co pozostaje tekstem
Jeśli zamienisz całą rozmowę na obraz, model nieuchronnie zacznie popełniać błędy w precyzyjnych identyfikatorach. Twórcy pxpipe wzięli to pod uwagę, więc kompresja działa selektywnie:
- Duże wyniki wykonania narzędzi. Jeśli wynik polecenia konsolowego, logi testów lub odczytany plik przekracza 6 000 znaków, są konwertowane do PNG.
- Stara historia wiadomości. Wczesne kroki długiej sesji są pakowane na strony archiwalne.
- Ciężkie prompty systemowe i specyfikacje narzędzi MCP. Są buforowane i wysyłane jako arkusze graficzne.
Najnowsze odpowiedzi użytkownika, świeże odpowiedzi modelu i krótkie fragmenty tekstu są przesyłane w ich oryginalnej formie tekstowej bez zmian. Model widzi ostatnie edycje bajt po bajcie.
Szybki start i łączenie z agentami
Możesz uruchomić narzędzie bez trwałej instalacji przez npx. Uruchamia lokalny serwer na porcie 47821:
npx pxpipe-proxy
Po tym wystarczy skierować Claude Code na lokalny adres:
ANTHROPIC_BASE_URL=http://127.0.0.1:47821 claude
Jeśli nie chcesz grzebać w zmiennych środowiskowych, repozytorium zawiera polecenie wrapper warp. Proxyje wywołania sieciowe dla określonego procesu:
pxpipe warp -- claude
# либо для других агентов
pxpipe warp -- cursor-agent
Razem z proxy uruchamia się panel webowy pod http://127.0.0.1:47821/. Wyświetla zaoszczędzone dolary w czasie rzeczywistym, liczbę obciętych tokenów oraz podgląd każdej wygenerowanej strony obok oryginalnego tekstu.
Eksport bez uruchamiania serwera
Jeśli nie potrzebujesz proxy, ale chcesz wrzucić ogromną bazę kodu lub git diff do interfejsu czatowego z obsługą obrazów, możesz użyć trybu eksportu:
npx pxpipe-proxy export src/
cat logs.txt | npx pxpipe-proxy export --stdin
npx pxpipe-proxy export --git
Polecenie tworzy folder z gotowymi do użycia plikami page-*.png, krótkim plikiem kluczowych encji factsheet.txt oraz promptem do wklejenia w okno dialogowe.
Druga strona medalu i uczciwe ograniczenia
Podejście wygląda jak oszustwo, ale ma nieuniknione fizyczne ograniczenia. Twórcy wymieniają je wprost w dokumentacji:
- Utrata dokładności na hashach i ID. Moduł wizyjny LLM działa przez patche embeddingów, nie klasyczny OCR z prawdopodobieństwem na znak. Gdy nie ma wystarczającej liczby pikseli na literę, model językowy po prostu wymyśla prawdopodobny znak. W testach autorów dokładne dopasowania 12-znakowych ciągów hex na Fable 5 wyniosły 13 na 15, a na niektórych modelach spadły do zera. Krytyczne identyfikatory lepiej trzymać w tekście.
- Opóźnienie renderowania. Przed wysłaniem dużego żądania procesor poświęca kilkaset milisekund na generowanie buforów PNG w pamięci.
- Korzyść zależy od gęstości treści. Oszczędności są maksymalne na kodzie, stack trace'ach i strukturach JSON. Na zwykłym tekście konwersacyjnym w języku naturalnym zysk jest minimalny lub żaden, ponieważ w zwykłym tekście jeden token już zawiera około 3–4 znaki.
Dla kogo projekt będzie przydatny już teraz
Jeśli regularnie używasz autonomicznych agentów kodowych, prowadzisz benchmarki lub zasilasz model wielomegabajtowymi logami budowania, pxpipe zwraca się od pierwszego dnia. Podczas długich sesji debugowania dzienny rachunek spada z 40 do 6–7 dolarów przy zachowaniu ogólnej logiki działania agenta.
Możesz wypróbować narzędzie w kilka minut, a do pierwszego testu nie musisz nawet budować niczego ze źródeł. Wszystkie statystyki tokenów są starannie przechowywane przez narzędzie w lokalnym logu ~/.pxpipe/events.jsonl, więc możesz łatwo zweryfikować realną korzyść na swoich zadaniach za pomocą narzędzia pxpipe stats.
Powiązane projekty