4 poin oleh GN⁺ 5 jam lalu | 1 komentar | Bagikan ke WhatsApp
  • pxpipe menyatakan bahwa ia mengubah konteks besar dari request Claude Code menjadi gambar PNG di proxy lokal untuk mengurangi token input, dan menurunkan tagihan end-to-end sekitar 59~70% berdasarkan harga resmi Fable saat ini
  • Prinsip utamanya adalah biaya token gambar ditentukan oleh ukuran piksel, bukan jumlah teks di dalam gambar; teks padat seperti kode, JSON, dan output tool dalam trafik Claude Code nyata memuat sekitar 3,1 karakter per token gambar, dan sekitar 1 karakter per token teks
  • Target kompresinya adalah tool_result besar, histori lama yang dilipat, prompt sistem statis, dan dokumentasi tool; turn terbaru, pesan pengguna, output model, prose yang jarang, serta model di luar allowlist diteruskan tetap sebagai teks
  • Karena ini metode lossy, recall string hex 12 karakter yang presisi mencapai 13/15 di Fable 5 dan 0/15 di Opus; miss dapat muncul bukan sebagai error, melainkan sebagai jawaban salah yang terdengar masuk akal, sehingga nilai yang harus akurat byte-per-byte seperti ID, hash, dan secret harus tetap berupa teks
  • Model target default adalah claude-fable-5,gpt-5.6; Opus 4.7/4.8 dan GPT 5.5 hanya digunakan secara opt-in karena performa membaca konteks gambar menurun, dan penerapan aktual serta besaran penghematan dapat diperiksa per request di ~/.pxpipe/events.jsonl

Biaya yang ingin dikurangi pxpipe

  • pxpipe adalah proxy lokal yang merender konteks besar menjadi gambar untuk mengurangi token input Claude Code
  • Targetnya adalah blok input berukuran besar dalam body request, seperti prompt sistem, dokumentasi tool, histori lama, dan output tool besar
  • Output model tidak dikompresi, dan streaming respons tetap berjalan normal
  • Biaya token gambar ditentukan oleh ukuran piksel, bukan jumlah karakter di dalam gambar
    • Dalam trafik Claude Code nyata, konten padat memuat sekitar 3,1 karakter per token gambar
    • Token teks terukur sekitar 1 karakter
  • Contoh render memuat prompt sistem dan dokumentasi tool sekitar 48 ribu karakter ke dalam satu gambar 1573×1248; sebagai teks membutuhkan sekitar 25 ribu token, sedangkan sebagai gambar membutuhkan sekitar 2,7 ribu token gambar

Menjalankan dan dashboard

npx pxpipe-proxy                                  # proxy on 127.0.0.1:47821
ANTHROPIC_BASE_URL=http://127.0.0.1:47821 claude  # point Claude Code at it
  • Proxy berjalan di 127.0.0.1:47821
  • Dashboard tersedia di http://127.0.0.1:47821/
    • Jumlah token yang dihemat
    • Perbandingan berdampingan konversi teks→gambar
    • Kill switch
    • Chip model real-time
  • Turn terbaru dipertahankan sebagai teks, sedangkan prompt sistem, dokumentasi tool, dan histori lama berukuran besar diubah menjadi gambar

Hasil yang ditunjukkan dalam demo

  • Fable 5 adalah default, dan di README disajikan sebagai model pembaca 100/100
    • Menjawab jumlah token secara tepat 10/10 dari 39 file filler yang diubah menjadi gambar
    • Cocok baris demi baris dengan hasil grep
    • Menyelesaikan aritmetika ledger bertahap
    • Biaya sesi disajikan $6.06 saat menggunakan pxpipe, dibanding $42.21 untuk teks biasa
    • Sisi pxpipe membutuhkan satu kali nudging untuk mengikuti format output satu baris yang diminta
  • Opus 4.8 dinonaktifkan secara default
    • Needle teks terbaca di kedua sisi
    • Phrase-count yang diubah menjadi gambar tidak terbaca oleh Opus, dan pxpipe tidak mengarang angka melainkan menunjukkan kegagalan
    • Karena tingkat salah baca ini, Opus menjadi target opt-in

Akurasi dan sifat lossy

  • pxpipe adalah metode kompresi lossy
  • Pada konten gambar padat, hasil recall string hex 12 karakter yang presisi sangat berbeda menurut model
    • Fable 5: 13/15
    • Opus: 0/15
  • Miss dapat muncul bukan sebagai error, melainkan sebagai confabulation yang senyap
  • Nilai yang membutuhkan akurasi byte-per-byte, seperti ID, hash, dan secret, harus dipertahankan sebagai teks
  • Guard khusus untuk risiko verbatim belum terpasang bawaan
  • Subagent yang memakai model di luar allowlist dapat diteruskan sebagai teks
    • CLAUDE_CODE_SUBAGENT_MODEL=claude-sonnet-4-6
    • model: sonnet pada frontmatter agent

Benchmark dan pengukuran

  • Benchmark berbasis soal angka acak baru menggunakan soal yang kecil kemungkinan telah dihafal model
Tes N Teks Gambar pxpipe Token
novel arithmetic, claude-fable-5 100 100% 100% −38%
novel arithmetic, claude-opus-4-8 100 100% 93% −38%
gist recall A/B, Fable 5 98/arm 98/98 98/98 -
state tracking, Fable 5 18/arm 18/18 18/18 -
never-stated facts confabulation, Fable 5 16/arm 0/16 0/16 -
verbatim 12-char hex recall, dense render, Opus 15 15/15 0/15 -
verbatim 12-char hex recall, dense render, Fable 5 15 - 13/15 -
  • Pilot SWE-bench Lite mencapai 10/10 di kedua sisi, dengan ukuran request −65%
  • SWE-bench Pro mencatat ON 14/19 dan OFF 15/19, dengan ukuran request −60%
    • Penilaian cocok pada 18/19 kasus
    • Satu split diselesaikan kembali 3/3 dalam eksekusi replikasi
    • README memperlakukannya sebagai variasi antar-run, bukan masalah kompresi
    • Ada caveat bahwa jumlah sampel kecil
  • GSM8K mencapai 96% dalam kondisi diubah menjadi gambar, tetapi karena mungkin termasuk dalam data pelatihan, README mengutamakan evaluasi novel-number

Cara kerja

tool_result string ──► wrap at 1928px-wide columns ──► pack ~92,000 chars/page ──► PNG[]
  • Proxy mencegat /v1/messages dan menulis ulang input besar yang cocok menjadi image block
  • Blok yang dikonversi disisipkan kembali dengan ramah cache, mempertahankan prefix statis agar prompt caching tetap berfungsi
  • Gambar 1928×1928 menggunakan sekitar 4.761 vision token dan memuat sekitar 92.000 karakter
  • Agar teks unggul, harus melebihi sekitar 19 karakter/token, sedangkan trafik Claude Code terukur sekitar 1,91 berdasarkan N=391
  • Estimator per request menentukan apakah harus diubah menjadi gambar, dan prose yang jarang dipertahankan sebagai teks
  • Event dicatat di ~/.pxpipe/events.jsonl

Apa yang dikompresi dan apa yang dibiarkan apa adanya

  • Target kompresi adalah tiga jenis blok input, semuanya berada di balik gate profitabilitas
    • Body tool_result padat token sekitar 6 ribu karakter atau lebih
    • Histori lama yang dilipat di belakang live tail
    • Slab prompt sistem statis dan dokumentasi tool
  • Item yang diteruskan apa adanya juga dijelaskan
    • Pesan pengguna
    • Turn terbaru
    • Output model
    • Prose yang jarang
    • Blok yang terlalu kecil sehingga tidak menguntungkan
    • Model di luar allowlist
  • Cakupan default adalah Fable 5 dan GPT 5.6
  • Opus 4.8 dan GPT 5.5 memiliki performa pembacaan konten gambar yang buruk, sehingga harus dinyalakan secara eksplisit lewat dashboard atau PXPIPE_MODELS
  • PXPIPE_MODELS=off menonaktifkan pengubahan menjadi gambar
  • Pada jalur GPT, definisi tool dipertahankan sebagai JSON native dan tidak memakai marker cache_control Anthropic

Cara menghitung biaya

  • Persentase penghematan headline didasarkan pada total tagihan, bukan hanya slice input
  • Pada snapshot 13.709 request, $100 turun menjadi sekitar $41, dihitung sebagai penghematan 59%
  • Pada trace 8.904 request terkompresi berikutnya, penghematan terukur sekitar 70%
  • Jika hanya request yang dikompresi dihitung terpisah, angkanya sekitar 72~74%, tetapi README tidak memakai ini sebagai headline
  • Untuk setiap POST /v1/messages, counterfactual count_tokens gratis dijalankan paralel terhadap body asli yang tidak dikompresi
  • Penggunaan tertagih aktual dibaca dari usage block respons Anthropic
  • Penggunaan asli dan aktual dicatat pada baris yang sama di ~/.pxpipe/events.jsonl, menghindari confound turn-count atau run-to-run
  • Konversi dolar memakai rasio harga resmi Fable 5
    • input ×1.0
    • cache write ×1.25
    • cache read ×0.1
    • output ×5
  • Harga cache diterapkan sama pada kedua sisi, sehingga diskon cache tidak dihitung ganda sebagai penghematan

Penggunaan sebagai library

import { renderTextToPngs, transformAnthropicMessages } from "pxpipe";

const imgs = await renderTextToPngs(toolResultText);            // RenderedImage[]
const { body, applied, info } = await transformAnthropicMessages({
  body: requestBytes,
  model: "claude-fable-5",
});
  • Dapat digunakan sebagai library tanpa proxy
  • options.keepSharp(block) mengunci blok tertentu agar tetap sebagai teks
  • options.emitRecoverable mengembalikan sumber asli dari blok yang diubah menjadi gambar
  • Runtime-nya Pure JS dan mendukung Node serta edge/Workers
  • @napi-rs/canvas hanya digunakan pada build time
  • API lengkap ada di src/core/index.ts

Kegagalan nyata dan keterbatasan

  • Dalam beberapa minggu pemakaian harian, pernah ada satu kasus ketika recall nama orang dari histori chat yang diubah menjadi gambar salah dengan penuh keyakinan
  • Sesi coding dapat menoleransi mode kegagalan ini karena file dibaca ulang sebelum diedit, tetapi recall chat murni tidak memiliki verifikasi yang sama
  • Audit keterbacaan mengukur recall string presisi dari halaman render
    • Blind read identifier padat mencapai maksimum 63%
    • Semua miss dapat diprediksi oleh glyph-confusability matrix
    • Mitigasi yang diterapkan membatasi page geometry agar sesuai dengan API resample cap
    • Identifier presisi seperti SHA dan angka juga disertakan sebagai teks
  • Keterbatasan juga disebutkan
    • Recall verbatim berbasis gambar sulit dipercaya
    • Request besar menambahkan latensi encoding PNG sebelum pengiriman
    • ASCII/Latin-1 telah diuji dengan baik
    • CJK berfungsi tetapi diperlakukan secara konservatif

Pengembangan dan roadmap

pnpm install && pnpm test
pnpm run build                # regenerates dist/
  • Perintah pengembangan terdiri dari instalasi·test dan build
  • Lisensinya MIT
  • Roadmap disajikan hanya sebagai hipotesis; jika tidak disertai angka dan jumlah sampel, jangan diperlakukan sebagai claim
    • Rendering glyph yang lebih tajam
    • Apakah bulk yang diubah menjadi gambar dapat meningkatkan konteks efektif sekitar 2× dalam window 1M yang sama
    • Apakah active context yang lebih kecil meningkatkan akurasi tugas panjang

1 komentar

 
GN⁺ 5 jam lalu
Komentar Hacker News
  • Bahkan dari Gemini saja, setahu saya saat memproses PDF mereka melakukan OCR terlebih dahulu lalu memasukkan teks dan gambar bersama-sama ke model, dan biaya token teks tidak ditagihkan
    Jika backend Claude juga melakukan hal yang sama, trik ini lebih mirip celah pada skema penagihan token, dan jika Claude nantinya berperilaku seperti Gemini kemungkinan besar ini akan ditutup

    • Bagian ini benar-benar menarik. Awalnya saya berpikir, “toh pada akhirnya di internal semuanya akan diubah menjadi token teks, jadi dari sudut pandang Claude biaya eksekusi nyata tidak mungkin jadi lebih murah”
      Tapi di komentar bawah ada yang menyebut DeepSeek sangat meningkatkan rasio kompresi dengan token visual: https://news.ycombinator.com/item?id=48777848
      Saya tidak sepenuhnya memahami semua detail teknis internalnya, jadi saya masih kurang paham bagaimana jalur OCR bisa berujung pada penghematan daya atau biaya komputasi secara keseluruhan
    • Tidak selalu begitu. Lihat makalah DeepSeek-OCR: Contexts Optical Compression: https://arxiv.org/abs/2510.18234
      Saat memasukkan gambar ke LLM, salah satu caranya adalah membagi gambar menjadi tile, melewatkan tile-tile itu ke jaringan saraf vision encoder untuk membuat token visual, lalu memasukkannya ke LLM seperti token teks. Tentu saja vision encoder dan LLM dilatih agar saling memahami. Pendekatan seperti ini disebut model OCR end-to-end
      Setelah model seperti itu dilatih, kita bisa memperbesar atau memperkecil gambar dokumen untuk mengubah jumlah token visual yang dipakai untuk merepresentasikan dokumen teks yang sama, dan parameter seperti ukuran patch atau kompleksitas vision encoder juga bisa disesuaikan
      Hasilnya cukup bagus, dan pada beberapa pengujian input token berkurang 90% sambil tetap mempertahankan 97% performa output
    • Claude Science memang punya alat untuk mengekstrak PDF, tapi saya tidak yakin apakah itu benar-benar melakukan OCR
  • Tahun lalu saya mencoba hal yang sama dengan model OpenAI, dan saat itu memang membantu mengurangi token prompt, tetapi token completion yang dibutuhkan jauh lebih banyak sehingga akhirnya justru lebih mahal dan lebih lambat
    https://pagewatch.ai/blog/post/llm-text-as-image-tokens/

  • Aduh, sakit di mata. Terasa seperti README hasil vibe coding

    • Penjelasan yang dikompresi LLM itu sangat menyakitkan untuk dibaca. Sulit menunjuk persis apa penyebabnya, tapi langsung terasa, dan butuh usaha harfiah dua kali lipat untuk memahaminya
      Contohnya:

      Honest caveat, visible in the clip: the pxpipe arm answered the count first and needed one follow-up nudge to also print the ledger balance in the requested one-line format; the plain arm followed the format on the first try. Legibility is solved on Fable — single-reply format compliance is the remaining rough edge.
      Kalau dibaca ulang empat kali, kita memang bisa menginterpolasi kira-kira apa yang terjadi, tapi sebagian besar isinya informasi yang tidak perlu dan membingungkan
      Semua model sampai tingkat tertentu menulis seperti ini, tapi Claude tampaknya sangat parah. GPT 5.5 terasa lebih ringkas dan lebih mampu memadatkan informasi yang bernilai

    • Kalau seseorang membagikan sesuatu yang mereka buat dan terlihat README vibe coding, saya menganggap itu sinyal kuat bahwa mereka tidak cukup memahami apa yang mereka buat untuk bisa menjelaskannya dengan otoritatif
      AI memang bisa dipakai untuk membuat hal yang benar-benar berguna, terutama jika itu di bidang yang sudah kita kuasai. Tapi kalau begitu, 1) ungkapkan bahwa Anda memakai bantuan AI dan 2) jelaskan dengan kata-kata Anda sendiri sebenarnya apa yang Anda buat. Akan lebih baik lagi jika bisa menjelaskan batasan saat bekerja dengan AI
      Dengan begitu timbul kepercayaan bahwa “hasil buatan orang ini layak dicoba, dia paham betul apa yang dibuatnya”
      Sekarang ini 99% yang muncul adalah hasil orang bekerja di area yang sama sekali tidak mereka pahami, jadi kalau saya melihat README seperti itu saya langsung menutup tab
  • Ini terlihat seperti hack pricing yang membakar sumber daya. Kalau celahnya ditutup, bukankah harga OCR harus naik?

    • Ini bukan celah, melainkan lebih dekat ke fakta bahwa mengodekan informasi sebagai token optik jauh lebih efisien daripada teks
    • Tidak juga. Metode ini juga belum tentu memakai lebih banyak sumber daya. Malah bisa jadi ini menghilangkan inefisiensi yang mendasar
      Kalau dipikir-pikir masuk akal. Manusia memang membaca kode kata demi kata, tetapi biasanya kita lebih sering memindai sekilas dan mengenali pola untuk memahami kira-kira apa yang dilakukan. Hanya saat perlu menjawab pertanyaan tertentu kita fokus pada bagian tertentu
      Dalam arti tertentu, manusia juga secara alami melakukan optimisasi lewat jalur memutar yang serupa
  • Tulisan terkait: https://blog.can.ac/2026/06/10/snapcompact/

  • Metode ini perlu diwaspadai. Alasan biaya turun bisa jadi sebenarnya karena berpindah ke model lain yang performanya lebih rendah
    Dari luar tampak seperti Fable, tapi sebenarnya mungkin bukan. Kalau begitu ini cuma menambah pekerjaan, dan mungkin lebih baik langsung mengembalikan model ke opus 4.8

  • Sepertinya Oh-My-Pi(OMP.sh) memakai gambar untuk kompresi konteks. OMP dibangun di atas agen coding Pi

  • Ada juga whitepaper DeepSeek tentang teknik ini: https://www.seangoedecke.com/text-tokens-as-image-tokens

  • Dulu saya pernah melihat tweet seseorang, mungkin salah satu dari Carmack, Geohot, atau Karpathy, yang intinya mengatakan bahwa gambar bisa jadi pilihan yang lebih baik
    Sejak itu, saat memberi tahu agen apa yang sedang terjadi sekarang, saya memakai gambar bersama prompt kalimat yang sangat sederhana, dan kadang bahkan sama sekali tidak memasukkan teks ke prompt
    Hasilnya sangat bagus
    Memang ini tidak persis sama dengan yang dibicarakan Karpathy, tapi pemikiran itu tetap membawa saya ke alur kerja yang lebih baik

  • Maaf, tapi ini omong kosong. Ini memang bekerja dan memang cerdas, tapi jelas merupakan cara untuk mengakali kegagalan pricing
    Seperti ketika hadiah untuk menangkap ular membuat orang mulai membiakkan ular, ini memanfaatkan sekaligus mendorong pemborosan
    Pada akhirnya saya rasa tanggung jawabnya ada pada skema harga Anthropic yang buruk yang memungkinkan arbitrase seperti ini. Tapi menjijikkan membayangkan sampai itu diperbaiki, orang-orang akan berbondong-bondong mengeksploitasinya, dan lebih banyak sampah digital yang sepenuhnya tidak perlu akan terus tercurah