กลับไปที่บล็อก

การลดต้นทุนคู่มือ

การใช้โทเค็นของ Claude Code: เก็บเอาต์พุตเครื่องมือออกจากบริบท

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

โดย CheapTokens Teamเผยแพร่เมื่อ ใช้เวลาอ่าน 6 นาที

เทอร์มินัลแสดงคำสั่งทดสอบที่ไพป์ผ่าน grep และ head เพื่อให้เฉพาะความล้มเหลวไปถึง Claude Code
ในหน้านี้
  1. ทำไมบันทึกหนึ่งฉบับจึงถูกจ่ายหลายครั้ง
  2. วิธีแก้ 1: ฮุก PreToolUse ที่กรองเอาต์พุตการทดสอบ
  3. วิธีแก้ 2: context-mode สำหรับผลลัพธ์เครื่องมือขนาดใหญ่
  4. เซสชันยาวมีค่าใช้จ่ายเท่าไร มีและไม่มีตัวกรอง
  5. รัน Claude Code บนโมเดล CheapTokens
  6. เช็กลิสต์ด่วน

เอเจนต์ของคุณรันชุดทดสอบสามครั้ง และค่าใช้จ่ายก็มากกว่างานที่ทำ สาเหตุไม่ค่อยใช่โค้ดที่มันเขียน แต่เป็นบันทึกการทดสอบ: เมื่อผลลัพธ์จากเครื่องมือเข้าสู่บริบทของ 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 -A 5 -E '(FAIL|ERROR|error:)' | head -100 จากนั้นเอเจนต์จะเห็นเฉพาะความล้มเหลวพร้อมบริบทไม่กี่บรรทัด ไม่ใช่ 10,000 บรรทัดของจุดสีเขียว เอกสารระบุว่าสิ่งนี้สามารถเปลี่ยนหลายหมื่นโทเค็นให้เหลือไม่กี่ร้อย

สิ่งที่เอเจนต์เห็นก่อนและหลังฮุก
เอาต์พุต npm test ดิบเทียบกับเฉพาะความล้มเหลว

นี่คือสคริปต์จากหน้าเอกสารนั้น (ตรวจสอบเมื่อ 23 ตุลาคม 2026) ต้องใช้ jq สร้างโฟลเดอร์ด้วย mkdir -p ~/.claude/hooks บันทึกสคริปต์เป็น ~/.claude/hooks/filter-test-output.sh และรัน chmod +x กับมัน:

bash
#!/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

จากนั้นลงทะเบียนใน ~/.claude/settings.json:

json
{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [{ "type": "command", "command": "~/.claude/hooks/filter-test-output.sh" }]
      }
    ]
  }
}

เพื่อตรวจสอบว่าทำงานได้ ให้เปิด /hooks ภายใน Claude Code และมองหารายการ PreToolUse หรือเริ่มด้วย claude --debug-file ./claude-debug.txt และขอให้เอเจนต์รัน 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:

text
/plugin marketplace add mksglu/context-mode
/plugin install context-mode@context-mode

รีสตาร์ทหรือรัน /reload-plugins จากนั้นตรวจสอบด้วย /context-mode:ctx-doctor ตัวแปรแบบ MCP-only claude mcp add context-mode -- npx -y context-mode เพิ่มเครื่องมือแต่ไม่มีการกำหนดเส้นทางอัตโนมัติ

โครงการรายงานการลดลงอย่างมาก: 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/MiniMax-M2.7 บริบท 180K เอาต์พุตสูงสุด 8,192 โทเค็น) ซึ่งเป็นโมเดลที่เหมาะกับลูปเอเจนต์ที่เน้นอินพุตแบบนี้ อยู่ในแผนภูมิด้านล่าง

ค่าใช้จ่ายเซสชันบน MiniMax-M2.7, 40 ขั้นตอน
  • ไม่มีตัวกรอง$0.133
  • มีฮุก$0.0445

สมมติฐาน: 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 เวอร์ชันสั้น พร้อมคีย์ตัวอย่าง:

bash
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 ใช้กี่โทเค็น

เช็กลิสต์ด่วน#

  1. รัน /context ในเซสชันยาวและดูว่าอะไรกินพื้นที่
  2. เพิ่มฮุก Bash สำหรับคำสั่งทดสอบ; ยืนยันการเขียนใหม่ใน /hooks หรือบันทึกดีบัก
  3. หากเครื่องมือ MCP ส่งสแนปช็อตขนาดใหญ่ ลอง context-mode และเปรียบเทียบ /context ก่อนและหลัง
  4. /clear ระหว่างงานที่ไม่เกี่ยวข้อง เพื่อให้บันทึกเก่าหยุดตามมา