ที่มา
- ในโน้ตการเปิดตัว 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 แบบ programmable อีกมาก
พรอมป์ต์สำหรับวิเคราะห์สถานะการตั้งค่าของฉัน
เข้าเรื่องเลย สำหรับคนที่อยากตรวจสอบว่าการตั้งค่า coding agent ของตัวเองเป็นอย่างไร นี่คือพรอมป์ต์:
https://gist.github.com/spilist/c468cbf1ed0ffc91100f813aabdcd520/… 를 읽고 그대로 실행해줘
อะไรคือสิ่งที่กินโทเคนจริง ๆ
ช่องทางที่โทเคนรั่วใน coding agent โดยทั่วไปมีอยู่ 3 แบบ
- ข้อความเพิ่มเติมที่ถูกแนบมาอัตโนมัติในทุกเซสชันหรือทุกเทิร์น
- ผลลัพธ์จากการเรียกใช้เครื่องมือที่ยาวเกินไปและยังคงค้างอยู่ในประวัติการสนทนา
- การเรียกใช้เพิ่มเติมที่เกิดจากการเชื่อมต่อภายนอก เช่น การค้นหา คอนเน็กเตอร์ หรือการเชื่อมต่อกับ IDE
ต่อไปนี้คือคันโยกใน Claude Code และ Codex ที่ช่วยลดทั้ง 3 อย่างข้างต้นได้ (ขอละเรื่องพื้นฐาน เช่น การปิด 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 sub-agent และนิยามสกิลออกจาก system prompt--tools: เปิดใช้ native tools แบบเลือกได้ หากเป็น--tools ""จะปิดทั้งหมด สำหรับ worker ที่ใช้เฉพาะความสามารถของโมเดลจริง ๆ ปิดทั้งหมดก็ได้ แต่ถ้าใช้แบบ interactive เพื่อสั่งงานง่าย ๆ แล้วปิดหมด ก็จะทำงานอะไรแทบไม่ได้ ดังนั้นควรเปิดเฉพาะที่จำเป็น เช่น"Bash,Edit,Glob,Grep,Read,Write"--strict-mcp-config: ใช้เฉพาะการตั้งค่า MCP ที่ระบุผ่าน CLI และไม่สนใจการตั้งค่า MCP แบบ global ทำให้ใส่เฉพาะคอนเน็กเตอร์ที่จำเป็นให้แต่ละ 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 (apps/connectors) ที่เชื่อมกับ 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: สำหรับ automation ที่ต้องการแค่อ่าน ป้องกันลูปพยายามเขียนโดยไม่ตั้งใจ → retry loop → เสียโทเคนโดยเปล่าประโยชน์--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 มากกว่า
ขอบคุณครับ