pxpipe: พร็อกซีโอเพนซอร์สที่แปลงข้อความเป็นภาพ PNG ลดค่าโทเคน Claude Code / Fable 5 ได้ถึง 70%
ในยุคที่ทุกคนรัน agentic coding ทั้งวัน ค่าโทเคนคือต้นทุนจริงที่กัดกินงบทีมพัฒนา — และวันที่ 4 ก.ค. 2026 มีเครื่องมือโอเพนซอร์สตัวหนึ่งที่โจมตีปัญหานี้ด้วยไอเดียแปลกแต่ได้ผล: pxpipe พร็อกซีโลคัลที่เขียนโดย Steven Chong (teamchong) ซึ่ง แปลงข้อความจำนวนมากให้เป็นภาพ PNG ก่อนส่งเข้าโมเดล เพราะภาพคิดโทเคนตาม “ขนาดพิกเซล” แบบคงที่ ไม่ได้คิดตามจำนวนตัวอักษรเหมือนข้อความ ผลคือบิลรวมลดลงราว 59–70% ตามที่ผู้พัฒนาวัดเทียบกับ baseline การใช้งานจริง
หลักการง่ายมาก: ข้อความคิดประมาณ 1 โทเคนต่อ 1 ตัวอักษร แต่ภาพที่อัดตัวอักษรแน่น ๆ ทำได้ราว 3.1 ตัวอักษรต่อ 1 โทเคนภาพ — เท่ากับบีบอัดได้ราวสามเท่าในส่วนที่ยอมให้เป็นภาพได้ นี่ไม่ใช่ทฤษฎี: repo บน GitHub เปิดสาธารณะแล้ว (ราว 2,000 ดาวตอนเขียนข่าว) และรันได้ด้วยคำสั่งเดียว
กลไก: ดักที่ /v1/messages แล้วเลือกแปลงเฉพาะเนื้อหาคงที่
pxpipe ทำงานเป็นพร็อกซีที่คั่นระหว่าง CLI กับ API ของ Anthropic โดยดักคำขอที่ /v1/messages แล้ว เลือกเขียนใหม่เฉพาะเนื้อหา 3 ประเภทที่มักใหญ่และคงที่:
tool_resultก้อนใหญ่ — ผลอ่านไฟล์, log, เอาต์พุตคำสั่ง- ประวัติสนทนาเก่าที่ยุบแล้ว (older collapsed history)
- system prompt และเอกสารทูลที่นิ่ง
เนื้อหาเหล่านี้จะถูกจัดคอลัมน์ที่ความกว้าง 1,928 พิกเซล อัดเป็นหน้า PNG (~92,000 ตัวอักษรต่อหน้า) แล้วเสียบกลับเข้าคำขอโดย รักษาโครงสร้างที่เป็นมิตรกับ prompt caching ไว้ ที่สำคัญคือ pxpipe มี “ตัวประเมินความคุ้ม” (profitability estimator) ที่จะแปลงเป็นภาพ เฉพาะเมื่อคณิตศาสตร์คุ้มจริง เท่านั้น ส่วนข้อความล่าสุดในบทสนทนายังคงเป็นข้อความตามปกติ
การตั้งค่าใช้แค่ชี้ base URL ของ Claude Code มาที่พร็อกซี:
npx pxpipe-proxy # รันพร็อกซีที่ 127.0.0.1:47821
# แล้วตั้งให้ Claude Code ใช้พร็อกซีนี้
export ANTHROPIC_BASE_URL=http://127.0.0.1:47821
มีแดชบอร์ดที่ http://127.0.0.1:47821 ไว้ดูสถิติและเปิด/ปิดฟีเจอร์ และมีการวัดผลจริงด้วยการยิง count_tokens คู่ขนานแล้วบันทึกลง ~/.pxpipe/events.jsonl
ตัวเลขและข้อจำกัดที่ต้องรู้ก่อนเปิดใช้
ตัวอย่างที่ผู้พัฒนาโชว์: งานหนึ่งบน Fable 5 ค่าใช้จ่ายลดจาก $42.21 เหลือ $6.06 โดยอัดข้อความราว 48,000 ตัวอักษรลงเป็น PNG แผ่นเดียว แทนที่โทเคนข้อความ ~25,000 ด้วยโทเคนภาพเพียง ~2,700 บนสไลซ์เฉพาะคำขอที่ถูกแปลง ประหยัดได้ถึง 72–74%
แต่วิธีนี้ lossy — และนี่คือจุดที่ต้องระวังที่สุด:
- ความแม่นยำขึ้นกับโมเดล: ค่าเริ่มต้นรองรับ Fable 5 และ GPT-5.6 ซึ่งอ่านข้อความในภาพได้ดี (Fable 5 ทำ 100% บนโจทย์คณิตทดสอบ) ส่วน Opus 4.7/4.8 อ่านพลาดราว 7% และ GPT-5.5 แย่ลงเมื่อรับ context เป็นภาพ — สองตัวหลังจึง ปิดไว้เป็นค่าเริ่มต้น
- สตริงที่ต้องเป๊ะห้ามแปลง: README ระบุชัดว่า “exact strings in imaged content are not byte-safe” — เช่นเลข hex 12 หลัก Fable 5 อ่านถูก 13/15 ครั้ง ส่วน Opus 0/15 ดังนั้น ID, hash, secret ควรคงเป็นข้อความ (เครื่องมือกันส่วนนี้ให้อยู่แล้ว)
- พลาดแบบเงียบ: เมื่ออ่านผิด โมเดลจะ “แต่งเติม” (confabulate) แทนที่จะ error — มีเคสจริงที่โมเดลจำชื่อคนจากประวัติที่เป็นภาพผิด
- ช้าลงเล็กน้อย: เพราะต้องส่งภาพผ่าน vision encoder แทนอ่านข้อความตรง ๆ
มุมมอง AI Curator
pxpipe คือตัวอย่างชั้นดีของ “geek hack” ที่ฉลาดในเชิงเศรษฐศาสตร์ของ LLM: มันไม่ได้ลดจำนวน “ข้อมูล” ที่ส่งเข้าโมเดล แต่ไปใช้ช่องว่างของ โครงสร้างราคา ที่คิดภาพเป็นก้อนคงที่ — เป็นการ arbitrage ระหว่างสองหน่วยราคาในโมเดลเดียวกัน สิ่งที่น่าสนใจกว่าตัวเลข 70% คือมันเปิดคำถามว่า ผู้ให้บริการโมเดลจะ “ปิดช่อง” นี้หรือไม่ (ปรับราคาโทเคนภาพ หรือคิดตามความหนาแน่นของเนื้อหา) ถ้าเทคนิคนี้แพร่หลาย
สำหรับทีมไทย/SEA ที่ค่าเงินและงบจำกัด นี่คือเครื่องมือที่ควรรู้จัก — แต่ อย่าเพิ่งเปิดทั้งทีมแบบไม่คิด มุมที่ใช้ได้จริงคือเปิดกับงานที่ context ส่วนใหญ่เป็นเอกสาร/ประวัติยาว ๆ และ โมเดลที่รองรับดี (Fable 5) ส่วนงานที่ต้องอ้างอิงค่าเป๊ะ ๆ — โค้ดที่มี hash, migration ที่มี ID, การจัดการ secret — ความเสี่ยง “อ่านผิดแบบเงียบ” อาจแพงกว่าค่าโทเคนที่ประหยัดได้มาก จุดขายจริงของ pxpipe จึงไม่ใช่ “เปิดแล้วลืม” แต่คือมันวัดผลให้เห็น (events.jsonl + dashboard) ว่าประหยัดจริงเท่าไรและแลกกับความเสี่ยงอะไร — เริ่มจากงานที่ทนความคลาดเคลื่อนได้ วัด แล้วค่อยขยาย
น่าจับตาอีกชั้นคือ: ถ้า “ภาพถูกกว่าข้อความ” กลายเป็นความจริงถาวร เราอาจเห็นเครื่องมือ context ยุคใหม่ที่ออกแบบมาให้ส่ง prompt เป็นภาพตั้งแต่ต้น — ไม่ใช่แค่ hack ครอบทีหลัง
แหล่งข่าว
อ่านเพิ่มในหมวด เครื่องมือนักพัฒนา
Betelgeuse รัน Qwen3.8 Flash Next ขนาด 68GB บน RTX 3060 กับแรม 16GB ส่วน Basalt วัดให้เห็นว่าเอนจินที่เร่งด้วยแฟล็กลัดทำให้โมเดลลืมของ
Betelgeuse ฟอร์ก llama.cpp ที่เปิดเมื่อ 31 ต.ค. ดึง expert จาก NVMe เข้า VRAM ตามต้องการ อ้าง 22 tok/s แบบไม่ทิ้ง expert แต่ README เตือนเองว่ายังทดลองและตัวเลขมาจากคนละรอบ วันเดียวกันผู้พัฒนา Basalt เผยผลวัดว่าแฟล็กเร่งความเร็วทำคุณภาพ Q8 ตกไปใกล้ Q2
กฎห้ามโคลนเกมของ Claude Code เริ่มกระทบงานจริง บริษัทรับทำเกมกระดานร้องงานลูกค้าหยุด แต่รายงานหลายชิ้นปนกับตัวกรองไซเบอร์คนละเรื่อง
ต่อจากที่เราพบกฎนี้ในไบนารี Claude Code ผู้ใช้เริ่มรายงานว่างานเชิงพาณิชย์ถูกปฏิเสธ และ Tom's Hardware กับ Mashable หยิบไปรายงาน แต่เมื่อไล่ issue ที่อ้างถึง พบว่าหลายรายการเกิดก่อนกฎจะมา จึงน่าจะเป็นตัวกรองด้านไซเบอร์ ส่วน Anthropic ยังไม่ชี้แจง
Claude Code ส่ง transcript ของ background agent ให้โมเดลทุก ~30 วินาทีเพื่อเขียนสถานะ 3–5 คำ ผู้วัดรายงานกินราว 16% และยังปิดแบบทางการไม่ได้
รายงานอิสระพบว่าฟีเจอร์ agent_summary ของ Claude Code ส่ง transcript เต็มของ background agent ไปถามสถานะทุก ~30 วินาที คิดเป็น 16.4% ของค่าใช้จ่ายในระบบของผู้วัด Issue เปิดมาตั้งแต่ ส.ค. ยังไม่มีสวิตช์ปิดที่รองรับ เราตรวจพบโค้ดนี้ใน 2.1.314 และพบกฎใหม่เรื่องเกมที่ไม่อยู่ใน changelog