Pi 0.86 เพิ่ม "cache warming" เปิดเป็นค่าเริ่มต้น — ยิงคำขอ 1 โทเคนเลี้ยง prompt cache ไม่ให้หมดอายุระหว่างรอ tool ยาว ๆ และจะยิงก็ต่อเมื่อคาดว่าประหยัดได้อย่างน้อย $0.05
19 ก.ย. 2026 โปรเจกต์ Pi (earendil-works/pi) ปล่อย v0.86.0 และตามด้วย v0.86.1 ในวันรุ่งขึ้น ฟีเจอร์แรกใน release note คือ “Prompt cache warming” ซึ่งคอยเลี้ยง prompt cache ไม่ให้หมดอายุระหว่างที่เอเจนต์รอ tool ที่รันนาน ๆ และถ้าผู้ใช้เปิดเพิ่ม ก็จะเลี้ยงต่อระหว่างที่รอผู้ใช้พิมพ์ prompt ถัดไปด้วย วิธีทำคือส่งคำขอเดิมซ้ำโดยจำกัด output ไว้ 1 โทเคน ก่อน cache จะหมดอายุเล็กน้อย
Pi เป็น agent harness ภายใต้ license MIT ประกอบด้วย unified LLM API, agent loop, TUI และ coding agent CLI มีดาวบน GitHub ราว 107,900 ดวง และเปิดมาตั้งแต่ ส.ค. 2025 แต่บล็อกนี้ยังไม่เคยเขียนถึงโดยตรง เคยปรากฏแค่ในโพสต์ HarnessTax ซึ่งพบว่าเมื่อใช้โมเดลเดียวกัน Pi ถูกกว่า Claude Code ราวครึ่งหนึ่ง โพสต์นี้จึงถือเป็นการตามเก็บ และเราเลือก 0.86 เป็นจุดตั้งต้น เพราะฟีเจอร์นี้เป็นแนวคิดเรื่องต้นทุนที่ทีมอื่นเอาไปใช้ต่อได้ ไม่ได้จำกัดอยู่แค่ใน Pi
ปัญหาที่มันแก้: cache หมดอายุตอนที่ tool ยังรันไม่เสร็จ
เอกสารของ Anthropic ระบุว่า prompt cache มีอายุ 5 นาที เป็นค่าเริ่มต้น และเริ่มนับตั้งแต่ ต้นคำขอ ไม่ใช่ตอนที่คำตอบสตรีมเสร็จ ถ้าคำตอบใช้เวลาสตรีม 4 นาที คำขอถัดไปต้องเริ่มภายในราว 1 นาทีเท่านั้น ในงาน coding agent ที่สั่ง npm test หรือ build นาน 6–10 นาที cache จึงหมดอายุระหว่างรอผลเป็นเรื่องปกติ รอบถัดไปก็ต้องจ่ายค่าเขียนบริบทหลักแสนโทเคนใหม่ทั้งหมด
Pi แก้ด้วยการยิงคำขอ refresh เมื่อผ่านไป 90% ของอายุ cache โดยเผื่อเวลาไว้อย่างน้อย 10 วินาทีก่อนหมดอายุ มีสามโหมด:
"streaming"(ค่าเริ่มต้น) — เลี้ยง cache เฉพาะระหว่างที่เอเจนต์กำลังทำงาน แล้วหยุดทันทีที่งานจบ"idle"— เลี้ยงต่อระหว่างรอผู้ใช้ด้วย โดยสมมติความน่าจะเป็นที่ผู้ใช้จะกลับมาพิมพ์ต่อไว้คงที่ 15% ซึ่งทีมบอกว่าวัดจากการใช้งานจริง"off"— ปิด
แต่ละครั้งจะ refresh ก็ต่อเมื่อ เงินที่คาดว่าจะประหยัดได้ หักค่า refresh แล้ว เหลืออย่างน้อย $0.05 ระหว่างเอเจนต์ทำงานจะใช้ความน่าจะเป็น 100% การเลี้ยงจะหยุดเมื่อบริบทเปลี่ยน (สลับโมเดล, compaction, ย้าย branch) และมีเพดานเวลา คือโหมด idle หยุดภายใน 30 นาทีหลังคำขอจริงครั้งล่าสุด ส่วนระหว่างเอเจนต์ทำงานหยุดที่ 60 นาที คำสั่ง /session จะแสดงการตัดสินใจครั้งถัดไป ค่าที่คาดว่าจะประหยัด และเกณฑ์ที่ใช้
คำนวณเองว่าคุ้มแค่ไหน
เราลองคิดจากตารางราคาในเอกสาร prompt caching ของ Anthropic ซึ่งระบุว่า การเขียน cache แบบ 5 นาทีคิด 1.25 เท่าของราคา input ปกติ และ cache hit หรือ refresh คิด 0.1 เท่า (ยกเว้น Claude Fable 5.1 กับ Mythos 5.1 ที่คิดแค่ 0.025 เท่า)
- ค่า refresh หนึ่งครั้งคือการอ่าน cache ทั้งบริบท บวก output 1 โทเคน ≈ 0.1 เท่า ของราคา input
- ถ้า cache หมดอายุ ต้องเขียนใหม่ 1.25 เท่า แทนที่จะจ่ายค่าอ่าน 0.1 เท่า ส่วนต่างที่เสียไปคือ 1.15 เท่า
- refresh หนึ่งครั้งจึงมีต้นทุนราว 8% ของการเขียนใหม่ (0.1 ÷ 1.25) และจะคุ้มเมื่อโอกาสที่ต้องใช้ cache นั้นจริงสูงกว่าราว 8.7% (0.1 ÷ 1.15) ตัวเลข 15% ที่ Pi ใช้ในโหมด idle จึงอยู่เหนือจุดคุ้มทุนนี้พอสมควร
- สำหรับ Fable 5.1 ที่ค่า refresh เหลือ 0.025 เท่า จุดคุ้มทุนลดเหลือราว 2% เกือบทุกกรณีจึงคุ้ม
ยกตัวอย่างให้เห็นภาพ ถ้าสมมติว่าราคา input อยู่ที่ $3/MTok บริบท 150,000 โทเคนจะมีค่าเขียน cache ใหม่ราว $0.56 ส่วนค่า refresh ราว $0.045 ต่อครั้ง (ตัวเลขนี้เราคำนวณเอง ไม่ได้มาจาก Pi) ถ้ารอ tool นาน 20 นาที ต้อง refresh ราว 4 ครั้ง รวม ~$0.18 ก็ยังถูกกว่าการเขียนใหม่ครั้งเดียว ทั้งนี้เกณฑ์ $0.05 ของ Pi คิดเป็นรายครั้ง ถ้าบริบทเล็ก เงินที่ประหยัดได้ก็น้อยจนไม่ผ่านเกณฑ์ และ Pi จะไม่ยิง
ข้อจำกัดที่เอกสารบอกไว้เอง: Pi มีข้อมูลอายุ cache ในตัวเฉพาะเมื่อเรียก Anthropic โดยตรง ถ้าใช้ผู้ให้บริการอื่นต้องประกาศ promptCache เองใน models.json และจะข้ามโมเดล Claude ที่ใช้ thinking แบบกำหนด budget เพราะ Anthropic คำนวณ thinking budget จาก max_tokens และใช้ค่านั้นเป็นส่วนหนึ่งของ key ของ cache คำขอที่จำกัดไว้ 1 โทเคนจึงชี้ไปคนละ entry กับ cache เดิม (โมเดลที่ใช้ adaptive thinking ไม่มีปัญหานี้) ถ้าอยากได้ cache ที่อยู่นานกว่านั้นยังใช้ PI_CACHE_RETENTION=long เพื่อเลือก TTL 1 ชั่วโมงได้ แต่ค่าเขียนจะแพงขึ้นเป็น 2 เท่า
อย่างอื่นใน 0.86 ที่ควรรู้
/bugส่งรายงานบั๊กที่รวม environment, โมเดล, provider, extension และ settings (ตัด secret ออก) และจะแนบ transcript ของ session ด้วยถ้าผู้ใช้เลือก รายงานถูกอัปโหลดไปที่บริการ Radius โดยไม่ต้องล็อกอิน หรือจะ export เป็นไฟล์ zip แทนก็ได้ ใครทำงานกับโค้ดลับควรเลือก export- breaking change สำหรับคนเขียน extension: hook
user_bashเปลี่ยนเป็น fail closed คือถ้า handler error คำสั่งจะถูกยกเลิก ไม่รันต่อ ส่วน custom provider ต้องย้ายไปอ่าน system prompt กับ tool จากTranscriptContextแทนContext - v0.86.1 (20 ก.ย.) เพิ่ม provider Meta Muse ใช้งานได้ด้วย
/login metaหรือMETA_API_KEYเพื่อเรียกโมเดล Muse Spark ผ่าน subscription - ข้อควรจำที่ README เขียนไว้ชัด: Pi ไม่มีระบบ permission ในตัว และรันด้วยสิทธิ์ของผู้ใช้ที่เปิดมันขึ้นมา ถ้าต้องการขอบเขตที่ปลอดภัยกว่า ทีมแนะนำให้รันใน Docker, micro-VM (Gondolin) หรือ OpenShell
มุมมอง AI Curator
ฟีเจอร์นี้น่าสนใจเพราะเปลี่ยนเรื่อง cache จากการเดามาเป็นการคำนวณ เวลาทีมบ่นว่า “Claude แพง” หลายครั้งต้นเหตุไม่ได้อยู่ที่ราคาต่อโทเคน แต่อยู่ที่ cache หลุดโดยไม่มีใครเห็น เช่น รอ test suite นาน 7 นาทีแล้วต้องเขียนบริบท 200k ใหม่ทุกรอบ Pi ทำสองอย่างที่ควรเป็นมาตรฐานของ harness ทุกตัว คือให้เห็นเป็นตัวเลขว่า cache miss แต่ละครั้งเสียเงินเท่าไร และตัดสินใจ refresh จาก expected value ไม่ได้ refresh ทุกครั้ง ผลจาก HarnessTax ที่บอกว่า harness เปลี่ยนต้นทุนได้หลายเท่า ในขณะที่อัตราสำเร็จแทบไม่ต่างกัน ก็สอดคล้องกับแนวคิดนี้
ทีมไทยที่เขียน agent ใช้เองบน Claude API นำหลักเดียวกันไปใช้ได้ทันทีโดยไม่ต้องย้ายมา Pi: ถ้างานของคุณมีช่วงรอนานกว่า 5 นาทีเป็นประจำ ให้เทียบระหว่าง (ก) เปลี่ยนไปใช้ TTL 1 ชั่วโมงที่ค่าเขียน 2 เท่า กับ (ข) refresh ด้วยคำขอ 1 โทเคนที่ค่าอ่าน 0.1 เท่า สูตรคุ้มทุนข้างบนใช้ได้ทันที แต่ต้องระวังกับดักเรื่อง thinking budget ที่ Pi เจอ เพราะถ้าคำขอ refresh ต่างจากคำขอจริงแม้แต่พารามิเตอร์เดียว คุณจะจ่ายค่า refresh ไปโดยไม่ได้ประโยชน์อะไรเลย
อีกเรื่องที่ควรคิด: cache warming เป็นการจ่ายเงินล่วงหน้าเพื่อซื้อโอกาส ฟีเจอร์นี้เปิดเป็นค่าเริ่มต้นในโหมด streaming ก็สมเหตุสมผล เพราะตอนเอเจนต์กำลังทำงาน โอกาสที่จะต้องใช้ cache ต่อแทบเป็น 100% แต่โหมด idle ที่ใช้ตัวเลข 15% จากค่าเฉลี่ยของผู้ใช้ทั้งหมด อาจไม่ตรงกับพฤติกรรมของคุณ ก่อนเปิดควรดูค่าจริงใน /session สักสองสามวัน
แหล่งข่าว
อ่านเพิ่มในหมวด เครื่องมือนักพัฒนา
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