การลดต้นทุนคู่มือ
การใช้โทเค็นของ Claude Code: เก็บเอาต์พุตเครื่องมือออกจากบริบท
ฮุก PreToolUse และปลั๊กอิน context-mode เก็บบันทึกการทดสอบออกจากบริบทของ Claude Code อย่างไร พร้อมการประเมินค่าใช้จ่ายเซสชันทั้งแบบมีและไม่มีตัวกรอง

ในหน้านี้
เอเจนต์ของคุณรันชุดทดสอบสามครั้ง และค่าใช้จ่ายก็มากกว่างานที่ทำ สาเหตุไม่ค่อยใช่โค้ดที่มันเขียน แต่เป็นบันทึกการทดสอบ: เมื่อผลลัพธ์จากเครื่องมือเข้าสู่บริบทของ Claude Code แล้ว ทุกคำขอถัดไปจะพามันไปด้วยอีกครั้ง วิธีแก้คือย่อผลลัพธ์ของเครื่องมือก่อนที่โมเดลจะเห็น วิธีทางการคือฮุก PreToolUse บน Bash วิธีของบุคคลที่สามคือปลั๊กอิน context-mode ทั้งสองวิธีอยู่ด้านล่าง พร้อมการประเมินค่าใช้จ่ายสำหรับเซสชันยาวบนโมเดล CheapTokens
ทำไมบันทึกหนึ่งฉบับจึงถูกจ่ายหลายครั้ง#
ตามหน้าค่าใช้จ่ายของ Claude Code (https://code.claude.com/docs/en/costs ตรวจสอบเมื่อ 23 ตุลาคม 2026) Claude Code ส่งบทสนทนาทั้งหมดในทุกคำขอ และการใช้งานเครื่องมือแต่ละครั้งจะกระตุ้นคำขออีกครั้งที่พาผลลัพธ์ของเครื่องมือไปด้วย การแคชพรอมป์จะอ่านประวัติซ้ำในอัตราแคชที่ถูกกว่า แต่โทเค็นยังอยู่ที่นั่น
สมมติว่าเอเจนต์รัน npm test และได้บันทึก 10,000 บรรทัด เอกสารระบุว่าบันทึกแบบนั้นอาจมีหลายหมื่นโทเค็น สมมติ 30,000 โทเค็น ไม่ว่าคุณจะทำอะไรต่อไป 30,000 โทเค็นนั้นเป็นส่วนหนึ่งของอินพุตของขั้นตอนที่ 11, 12, 13 และต่อไปจนกว่าคุณจะ /clear หรือกระชับ และนั่นคือจุดสำคัญ: บันทึกมีประโยชน์สำหรับหนึ่งขั้นตอน แต่คุณจ่ายสำหรับมันถึงสามสิบขั้นตอน
วิธีแก้ 1: ฮุก PreToolUse ที่กรองเอาต์พุตการทดสอบ#
หน้าเอกสารเดียวกันแนะนำฮุกเป็นขั้นตอนก่อนประมวลผล: ฮุก PreToolUse บน Bash เขียนคำสั่งทดสอบใหม่ (npm test, pytest, go test) ให้ไพป์ผ่าน grep - จากนั้นเอเจนต์จะเห็นเฉพาะความล้มเหลวพร้อมบริบทไม่กี่บรรทัด ไม่ใช่ 10,000 บรรทัดของจุดสีเขียว เอกสารระบุว่าสิ่งนี้สามารถเปลี่ยนหลายหมื่นโทเค็นให้เหลือไม่กี่ร้อย

นี่คือสคริปต์จากหน้าเอกสารนั้น (ตรวจสอบเมื่อ 23 ตุลาคม 2026) ต้องใช้ jq สร้างโฟลเดอร์ด้วย mkdir - บันทึกสคริปต์เป็น ~/ และรัน chmod +x กับมัน:
#!/bin/bash
input=$(cat)
cmd=$(echo "$input" | jq -r '.tool_input.command')
pattern='^(npm test|pytest|go test)( [^;&|<>`$#\\[:cntrl:]]*)?$'
if [[ "$cmd" =~ $pattern ]]; then
filtered_cmd="$cmd 2>&1 | grep -A 5 -E '(FAIL|ERROR|error:)' | head -100"
echo "$input" | jq --arg filtered "$filtered_cmd" '{hookSpecificOutput: {hookEventName: "PreToolUse", updatedInput: (.tool_input + {command: $filtered})}}'
else
echo "{}"
fiจากนั้นลงทะเบียนใน ~/:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [{ "type": "command", "command": "~/.claude/hooks/filter-test-output.sh" }]
}
]
}
}เพื่อตรวจสอบว่าทำงานได้ ให้เปิด /hooks ภายใน Claude Code และมองหารายการ PreToolUse หรือเริ่มด้วย claude - และขอให้เอเจนต์รัน npm test เมื่อฮุกเขียนคำสั่งใหม่แล้ว ไฟล์จะมีบรรทัด modified tool input keys พร้อมฟิลด์ command หากการทดสอบผ่าน เอาต์พุตจะว่างเปล่า เอเจนต์จึงได้รับความสำเร็จแบบเงียบ ปรับแพตเทิร์นหากตัวรันของคุณพิมพ์ความล้มเหลวต่างออกไป
วิธีแก้ 2: context-mode สำหรับผลลัพธ์เครื่องมือขนาดใหญ่#
ฮุกครอบคลุมเฉพาะคำสั่งที่คุณไพป์ได้ สแนปช็อตหน้าจาก Playwright หรือรายการปัญหา GitHub ยี่สิบรายการมาจากเครื่องมือ MCP นั่นคือสิ่งที่ context-mode มุ่งเป้า ตาม README ของมัน (https://github.com/mksglu/context-mode ตรวจสอบเมื่อ 23 ตุลาคม 2026; ไม่แสดงเวอร์ชันหรือวันที่) มันเป็นเซิร์ฟเวอร์ MCP และปลั๊กอินที่เก็บเอาต์พุตเครื่องมือดิบออกจากหน้าต่างบริบท เก็บสถานะเซสชันใน SQLite และกำหนดเส้นทางการเรียกเครื่องมือผ่านฮุก ต้องใช้ Claude Code v1.0.33 หรือใหม่กว่า และสัญญาอนุญาตคือ Elastic License 2.0 ซึ่งไม่ใช่สัญญาอนุญาตโอเพนซอร์สของ OSI
ติดตั้งภายใน Claude Code:
/plugin marketplace add mksglu/context-mode
/plugin install context-mode@context-modeรีสตาร์ทหรือรัน /reload-plugins จากนั้นตรวจสอบด้วย / ตัวแปรแบบ MCP-only claude mcp add context- เพิ่มเครื่องมือแต่ไม่มีการกำหนดเส้นทางอัตโนมัติ
โครงการรายงานการลดลงอย่างมาก: 315 KB เหลือ 5.4 KB (98%) สแนปช็อตหน้า 56 KB เหลือ 299 ไบต์ 986 KB เหลือ 62 KB นั่นคือตัวเลขของผู้เขียนเอง: ถือเป็นเพดานและวัดในเซสชันของคุณเองด้วย /context ก่อนและหลัง
เซสชันยาวมีค่าใช้จ่ายเท่าไร มีและไม่มีตัวกรอง#
นี่คือการคำนวณบนเซสชันสมมติหนึ่งเซสชัน เป็นเซสชันเขียนโค้ด 40 ขั้นตอนบนบริบทฐานเฉลี่ย 20,000 โทเค็น เอาต์พุต 500 โทเค็นต่อขั้นตอน และการรันทดสอบสามครั้งที่ขั้นตอน 10, 20 และ 30 บันทึกดิบแต่ละอันมี 30,000 โทเค็น; เวอร์ชันที่กรองแล้วคือ 500
- บันทึกจากขั้นตอนที่ 10 ถูกส่งซ้ำใน 30 คำขอหลังจากนั้น: 30 × 30,000 = 900,000 โทเค็น ขั้นตอนที่ 20: 20 × 30,000 = 600,000 ขั้นตอนที่ 30: 10 × 30,000 = 300,000 อินพุตเพิ่มเติม: 900,000 + 600,000 + 300,000 = 1,800,000
- กรองแล้ว: (30 + 20 + 10) × 500 = 30,000 อินพุตเพิ่มเติม
- อินพุตฐาน: 40 × 20,000 = 800,000 เอาต์พุต: 40 × 500 = 20,000
- ดังนั้นเซสชันคือ 800,000 + 1,800,000 = 2,600,000 โทเค็นอินพุตเมื่อไม่กรอง และ 800,000 + 30,000 = 830,000 เมื่อกรอง โดยมีเอาต์พุต 20,000 โทเค็นทั้งสองกรณี
การคำนวณนับโทเค็นอินพุตทุกตัวในอัตราเต็ม การแคชลดตัวเลขจริงลง แต่ลดทั้งสองกรณีด้วยตรรกะเดียวกัน ราคาสดสำหรับ MiniMax-M2.7 (MiniMaxAI/ บริบท 180K เอาต์พุตสูงสุด 8,192 โทเค็น) ซึ่งเป็นโมเดลที่เหมาะกับลูปเอเจนต์ที่เน้นอินพุตแบบนี้ อยู่ในแผนภูมิด้านล่าง
สมมติฐาน: 40 ขั้นตอน บริบทฐาน 20,000 โทเค็น เอาต์พุต 500 โทเค็นต่อขั้นตอน การรันทดสอบสามครั้งครั้งละ 30,000 โทเค็น (กรองแล้ว: 500)
บน MiniMax-M2.7 เซสชันมีค่าใช้จ่าย $0.133 เมื่อไม่กรอง และ $0.0445 เมื่อกรอง และโดยรวม เมื่อนับอินพุตและเอาต์พุตรวมกัน จะถูกกว่าราคาอ้างอิงของ OpenRouter ประมาณสองในสามของอินพุตในกรณีที่ไม่กรองคือบันทึกที่เอเจนต์อ่านครั้งเดียว
ประเด็นไม่ใช่จำนวนดอลลาร์ที่แน่นอน แต่คือตัวกรองลบอินพุตประมาณ 1,770,000 จาก 2,600,000 โทเค็น (2,600,000 − 830,000 = 1,770,000) บนโมเดลใดก็ตาม และโมเดลที่ถูกกว่าจะลดราคาของทุกโทเค็นที่เหลือ
รัน Claude Code บนโมเดล CheapTokens#
Claude Code พูดโปรโตคอล Anthropic Messages และ CheapTokens รองรับ URL ฐานสำหรับ Claude Code ไม่มี /v1 การตั้งค่าเต็มอยู่ใน วิธีเชื่อมต่อ Claude Code กับ CheapTokens เวอร์ชันสั้น พร้อมคีย์ตัวอย่าง:
export ANTHROPIC_BASE_URL=https://api.cheaptokens.dev
export ANTHROPIC_AUTH_TOKEN=YOUR_CHEAPTOKENS_KEY
export ANTHROPIC_MODEL=MiniMaxAI/MiniMax-M2.7
claudeใช้ id แบบเต็มจาก เอกสาร; ชื่อสั้นจากตารางราคาไม่ได้รับการยอมรับจาก API ราคาสำหรับทุกโมเดลอยู่ในหน้าราคา สำหรับนิสัยอื่นๆ ที่ลดค่าใช้จ่าย Claude Code (/clear, /compact, /mcp, ซับเอเจนต์) ดู วิธีทำให้ Claude Code ถูกกว่า หากต้องการดูว่าอินพุตและเอาต์พุตถูกนับอย่างไรในคำขอจริง อ่าน คำขอ API ใช้กี่โทเค็น
เช็กลิสต์ด่วน#
- รัน
/contextในเซสชันยาวและดูว่าอะไรกินพื้นที่ - เพิ่มฮุก Bash สำหรับคำสั่งทดสอบ; ยืนยันการเขียนใหม่ใน
/hooksหรือบันทึกดีบัก - หากเครื่องมือ MCP ส่งสแนปช็อตขนาดใหญ่ ลอง context-mode และเปรียบเทียบ
/contextก่อนและหลัง /clearระหว่างงานที่ไม่เกี่ยวข้อง เพื่อให้บันทึกเก่าหยุดตามมา



