จุดเริ่มต้น
- ในบันทึกการออกเวอร์ชัน Claude Opus 4.7 ส่วนที่สะดุดตาที่สุดคือเรื่อง ‘การใช้โทเคนเพิ่มขึ้น’
- เมื่อเข้าสู่ยุคที่ถ้ามีโทเคนและเวลามากพอก็ทำอะไรได้มากขึ้นมาก ประสิทธิภาพการใช้โทเคนจึงยังคงเป็นประเด็นสำคัญ
- ตั้งแต่ราวเดือนมีนาคม ชุมชนก็ถกเถียงกันอย่างหนักเรื่องที่ Claude Code แอบลด caching TTL จาก 1 ชั่วโมง → 5 นาที
- มีการวิเคราะห์ว่าเมื่อ ลองวัดด้วย Opus 4.7 ก็พบว่าใช้โทเคนมากกว่า 4.6 เกือบ 1.5 เท่า
- ยังมี รีโพซิทอรีงานวิจัยเกี่ยวกับประสิทธิภาพการแคชของ Claude Code ด้วย
- เลยเกิดคำถามว่า “มีวิธีเพิ่มประสิทธิภาพการใช้โทเคนด้วยการเปลี่ยนค่าตั้งใน Claude Code และ Codex หรือไม่?” และเมื่อไปวิเคราะห์เอกสารทางการของ Claude Code (การตั้งค่า/ตัวแปรสภาพแวดล้อม/IDE), เอกสารทางการของ Codex (การตั้งค่า/ตัวแปรสภาพแวดล้อม/MCP) รวมถึงซอร์สโค้ดของ Codex ก็ได้ผลลัพธ์ที่มีนัยสำคัญ
- ไม่ใช่แค่โหมด interactive ที่ใช้อยู่เป็นประจำเท่านั้น แต่ยังได้เรียนรู้วิธีเพิ่มประสิทธิภาพการใช้โทเคน ความเร็วตอนบูต และความเสถียรในโหมด non-interactive แบบโปรแกรมได้อีกหลายอย่าง
พรอมป์ตสำหรับวิเคราะห์สถานะของฉัน
เข้าเรื่องเลย สำหรับคนที่อยากตรวจสอบว่าการตั้งค่าของ coding agent ของตัวเองเป็นอย่างไร นี่คือพรอมป์ต:
https://gist.github.com/spilist/c468cbf1ed0ffc91100f813aabdcd520/… 를 읽고 그대로 실행해줘
อะไรคือสิ่งที่กินโทเคนจริง ๆ
เส้นทางที่ทำให้โทเคนรั่วใน coding agent โดยทั่วไปมีอยู่ 3 แบบ
- ข้อความเพิ่มเติมที่ถูกแนบเข้ามาอัตโนมัติในทุกเซสชันหรือทุกเทิร์น
- เอาต์พุตจากการเรียกใช้ทูลที่ยาวเกินไปซึ่งยังคงค้างอยู่ในประวัติการสนทนา
- การเรียกใช้เพิ่มเติมจากการเชื่อมต่อภายนอก เช่น การค้นหา คอนเน็กเตอร์ หรือการเชื่อมกับ IDE
ขอแนะนำคันโยกที่ช่วยลด 3 อย่างข้างต้นได้ใน Claude Code และ Codex (จะขอข้ามเรื่องพื้นฐานอย่างการปิด MCP server/ปลั๊กอินที่ไม่ใช้ และการปรับโมเดลหรือระดับ reasoning)
- รายละเอียดคำอธิบายของแต่ละการตั้งค่า รวมถึง trade-off ต่าง ๆ เขียนไว้อย่างละเอียดในบล็อก
Claude Code (เวอร์ชันที่ยืนยันล่าสุด: 2.1.114)
-
includeGitInstructions: false
-
autoConnectIde: false
-
CLAUDE_CODE_GLOB_NO_IGNORE=false
-
ตั้งค่าขีดจำกัดเอาต์พุต (BASH_MAX_OUTPUT_LENGTH, CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS, MAX_MCP_OUTPUT_TOKENS)
-
ตัวแปรสภาพแวดล้อมและแฟล็กสำหรับงานสั้น ๆ เรียบง่าย หรือโหมด non-interactive
ENABLE_CLAUDEAI_MCP_SERVERS=false: ปิด MCP serverCLAUDE_CODE_DISABLE_AUTO_MEMORY=1: ไม่ให้โหลดหน่วยความจำที่บันทึกอัตโนมัติไว้CLAUDE_CODE_DISABLE_CLAUDE_MDS=1: ไม่สนใจCLAUDE.mdระดับ global/projectCLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS=1: ตัด built-in subagent และคำจำกัดความของสกิลออกจาก system prompt--tools: เปิดใช้ native tool แบบเลือกได้ ถ้าเป็น--tools ""จะปิดทั้งหมด สำหรับ worker ที่ใช้เพียงความสามารถของโมเดลอย่างเดียวปิดทั้งหมดก็ได้ แต่ถ้าเป็นงานง่าย ๆ แบบ interactive แล้วปิดหมดก็จะทำงานอะไรไม่ได้เลย จึงควรเปิดเฉพาะที่จำเป็น เช่น"Bash,Edit,Glob,Grep,Read,Write"--strict-mcp-config: ใช้เฉพาะการตั้งค่า MCP ที่ระบุผ่าน CLI และไม่ใช้การตั้งค่า MCP ส่วนกลาง ทำให้ใส่เฉพาะคอนเน็กเตอร์ที่ต้องใช้ในแต่ละ worker ได้อย่างเป็นระเบียบ--disable-slash-commands: ทำให้คำนิยาม slash command อย่าง/help,/clearหลุดออกจาก system prompt--no-session-persistence: ไม่ใช้เส้นทางบันทึก/กู้คืนเซสชัน ทำให้ไม่เหลือร่องรอยของการรันแบบครั้งเดียว--exclude-dynamic-system-prompt-sections: ตัดส่วนที่เปลี่ยนไปตามเครื่อง/สภาพแวดล้อมออก เพื่อเพิ่มอัตราการนำ prompt cache กลับมาใช้ซ้ำ--system-prompt: หรือจะเปลี่ยน Claude system prompt ไปทั้งหมดเลยก็ยังได้
-
ล้าง attribution ให้เป็นค่าว่าง
Codex CLI (เวอร์ชันที่ยืนยันล่าสุด: 0.121.0 + ซอร์สโค้ด Codex บน Github ของเวอร์ชันดังกล่าว)
- ปิด MCP (แอป/คอนเน็กเตอร์) ที่เชื่อมกับ ChatGPT (features.apps = false)
- web_search = "disabled"
- ตั้งค่าขีดจำกัดเอาต์พุต (tool_output_token_limit)
- แฟล็กที่ช่วยให้ทำงานได้ดีในโหมด non-interactive
--profile: รวมการตั้งค่าเฉพาะทางไว้เป็นชุด (web_search = "disabled",tool_output_token_limit = 2000เป็นต้น) แล้วเลือกใช้ได้--json+--output-last-message FILE: ทำให้ parse/extract ใน pipeline ได้ง่ายขึ้น จึงลดการใช้โทเคนซ้ำในขั้นตอน post-processing--sandbox read-only: สำหรับงานอัตโนมัติที่ต้องการแค่อ่าน ป้องกันการพยายามเขียนโดยไม่ตั้งใจ → เกิดลูป retry → สูญเสียโทเคน--skip-git-repo-check: รันได้แม้อยู่ในไดเรกทอรีที่ไม่ได้ถูกทำเครื่องหมายว่าเชื่อถือ--ephemeral: ไม่บันทึกไฟล์เซสชันลงดิสก์--color never: ทำให้เอาต์พุตผ่าน pipe สะอาดขึ้น
- ล้าง attribution ให้เป็นค่าว่าง
ทิ้งท้าย
แม้จะตรวจสอบข้อเท็จจริงอย่างรอบคอบแล้ว แต่แน่นอนว่ายังอาจมีส่วนที่ผิดพลาดได้ หากแจ้งเข้ามาอย่างสบาย ๆ จะขอบคุณมากครับ
5 ความคิดเห็น
ขอบคุณครับ
น่าจะเป็นบทความอ้างอิงที่ดีเลยครับ ถ้าเนื้อหาหลักเป็นแนวทางปิดวาล์วของ "โทเค็นขาเข้า"
สำหรับผมเจอหลายกรณีที่ปัญหาเกิดจาก "สิ่งที่ลงทะเบียนไว้ตั้งแต่แรก" มีมากเกินไป เลยลองทำเครื่องมือชื่อ
claude-slimขึ้นมาครับมันเป็น CLI ที่สแกน จัดหมวดหมู่ และจัดระเบียบสถานการณ์อย่างเช่น จากสกิล 60 อัน มีครึ่งหนึ่งที่ไม่เคยใช้เลยสักครั้ง หรือ
CLAUDE.mdพองตัวขึ้นเพราะปลั๊กอิน การนับโทเค็นอิงกับjs-tiktokenไม่ได้ลบออก แต่ย้ายไปไว้ที่skills.disabled/เพื่อให้ restore กลับได้ทุกเมื่อhttps://github.com/iops-leo/claude-slim
ทิศทางของมันเสริมกับการตั้งค่าในบทความได้พอดี คิดว่าน่าใช้ควบคู่กันครับ
โอ้ ขอบคุณที่แชร์!
ขอบคุณที่แชร์ข้อมูลดี ๆ ครับ โดยพื้นฐานแล้วผมรู้สึกได้เลยว่าปริมาณการใช้โทเค็นเองก็น้อยลงมาก เลยหวังว่า Claude จะเพิ่มให้หน่อย พอฮาร์เนสรันไปแล้วดันมาขาดกลางคันก็เลย...
ขอบคุณครับ การใช้โทเค็นของ Claude ก็ค่อนข้างสูง และผลงานก็ยังไม่น่าพอใจเมื่อเทียบกับ Codex เลยทำให้ช่วงนี้ผมทำงานด้วย Codex มากกว่า