Claude Code คืออะไร เข้าใจ pattern หลักของ CLI coding agent

Claude Code ไม่ใช่ chatbot ในเทอร์มินัล แต่เป็น agent ที่คุณสั่งงานได้
ลองนึกภาพ dev สองคนเปิด Claude Code ครั้งแรก คนแรก paste code 200 บรรทัดเข้าไป ตามด้วย prompt 500 คำที่อธิบายทุกขั้นตอนว่าอยากให้แก้อะไรตรงไหน ส่วนคนที่สองพิมพ์แค่ fix the failing tests แล้วนั่งดู agent วน loop เปิดไฟล์ รัน test แก้ code รัน test อีกครั้ง รวม 6 tool call จนเสร็จ ความต่างของ 2 คนนี้ไม่ได้อยู่ที่ tool แต่อยู่ที่ mental model ของคนใช้
บทความนี้ไม่ใช่ feature tour ของ Claude Code version ใดเวอร์ชันหนึ่ง แต่เป็น mental model ของ CLI coding agent ที่ใช้ได้แม้ Claude Code จะกลายเป็น tool ตัวอื่นในอนาคต
ทำไมพิมพ์ prompt ยาวกว่าเดิมไม่ทำให้ Claude Code ทำงานดีขึ้น
จุดที่ dev ส่วนใหญ่พลาดในวันแรกคือคิดว่า Claude Code คือกล่อง chat อีกอัน เลยใช้กลยุทธ์เดิมจาก ChatGPT คือพยายามเขียน prompt ให้ละเอียดที่สุดเท่าที่จะทำได้ แต่ doc ทางการบอกชัดว่า Claude Code คนละสายพันธุ์กับ chatbot
doc ใช้คำว่า "agentic harness" คือโครงที่ห่อหุ้ม Claude เอาไว้ พร้อมให้ 3 อย่างคือ tool (เครื่องมือลงมือทำ) context management (จัดการบริบทของ codebase) และ execution environment (สภาพแวดล้อมรัน command บนเครื่องคุณ) doc สรุปไว้ว่า "Claude Code serves as the agentic harness around Claude: it provides the tools, context management, and execution environment that turn a language model into a capable coding agent"
ถ้าจะเปรียบให้เห็นภาพ chatbot คือพนักงานที่นั่งหลังเคาน์เตอร์ ตอบคำถามได้ทุกอย่าง แต่ลุกไปเปิดไฟล์ในเครื่องคุณไม่ได้ ส่วน agent harness คือพนักงานคนเดิมที่ได้กุญแจห้องเอกสาร รหัสเข้าระบบ และอนุญาตให้เดินไปทำของจริง โครงรอบตัวพนักงานนี่แหละคือ harness ตัว LLM ยังเป็นตัวเดิม สิ่งที่เพิ่มขึ้นคือ "อำนาจลงมือทำ"
doc พูดประโยคนี้ตรงๆ "Without tools, Claude can only respond with text. With tools, Claude can act."
ดังนั้นถ้ายังคิดว่า Claude Code เป็น chat ไปเรื่อยๆ คุณจะใช้แค่ 5% ของที่เครื่องมือทำได้ แทนที่จะเขียน prompt ยาวขึ้น ลองเปลี่ยนคำถามในหัวเป็น "ผมจะ delegate task อะไรให้มันลงมือทำเองได้" แล้วปล่อยให้มันไปจัดการ

agentic loop 3 phase ที่ user ขัดจังหวะ steer ได้ตลอด
เมื่อคุณสั่งงาน 1 task agent จะวนใน loop 3 phase ที่ผสมกันแบบยืดหยุ่น ไม่ใช่ pipeline ที่ตายตัว ลำดับมาตรฐานคือ gather context (อ่านไฟล์ search code ค้น web) ตามด้วย take action (edit รัน command รัน test) แล้วต่อด้วย verify results (ดู error อ่าน code อีกที รัน test ใหม่) loop จะปรับตัวเองตามผลลัพธ์ของ step ก่อนหน้า doc สรุปว่า "When you give Claude a task, it works through three phases: gather context, take action, and verify results. These phases blend together"
ถ้าจะนึกภาพแบบที่เพื่อน dev ฟังเข้าใจทันที loop นี้คล้าย junior dev คนใหม่ที่คุณ pair กับเขาแก้ bug ตัวหนึ่ง เขาไม่ได้ส่ง PR มาทีเดียวเสร็จ แต่เปิดไฟล์ดูก่อน ลองแก้ รัน test เห็น test fail แบบใหม่ กลับไปอ่าน code เพิ่ม แล้วลองอีกที ส่วนคุณนั่งดูข้างๆ ขัดได้ตลอดทาง
doc ยกตัวอย่างที่เห็นชัดที่สุด คำสั่ง fix the failing tests ทำให้ Claude เรียก tool 6 ตัวติดกันเป็น chain เพื่อค้นหาสาเหตุ ลองแก้ และยืนยันผล โดย doc บอกว่า "Each tool use gives Claude new information that informs the next step"
มี 2 ปุ่มที่อยู่บน loop นี้ที่ dev ส่วนใหญ่ไม่รู้ตอนวันแรก
- กด Esc 2 ครั้ง = checkpoint rewind ทุก file edit reversible กลับไป snapshot ก่อนหน้าได้ทันที ตามที่ doc ระบุ
- กด Shift+Tab = cycle permission mode สลับระหว่าง default acceptEdits และ plan mode ได้ระหว่าง task โดยไม่ต้องออกจาก session
ผลของ 2 ปุ่มนี้คือคุณกล้าทดลองมากขึ้นเพราะมี safety net ของจริง แทนที่จะกลัวจน lock ตัวเองให้พิมพ์ chat อย่างเดียว

extension 4 ชั้นที่หลายคนสับสน
ของที่ extend Claude Code ได้มี 4 ชั้นที่มีหน้าที่ต่างกันคนละแบบ ไม่ใช่ 4 ทางเลือกแทนกัน เลือกผิดชั้น = เปลือง context หรือทำงานไม่ deterministic
ก่อนอื่นต้องเคลียร์ความสับสนที่เจอบ่อยสุด slash command ไม่ใช่ primitive แยกอีกต่อไป doc ระบุตรงๆ ว่า "Custom commands have been merged into skills" ดังนั้น .claude/commands/foo.md กับ .claude/skills/foo/SKILL.md สร้าง /foo เหมือนกัน ในบทความนี้ผมจะพูดถึง skill ในฐานะ canonical ส่วน slash command ถือเป็นแค่ shortcut ที่เรียก skill นั้นออกมา
ทีนี้มาดูทั้ง 4 ชั้นว่าแต่ละชั้นแก้ปัญหาคนละแบบยังไง
- อยากให้ Claude จำ ทุก session โดยไม่ต้องบอกซ้ำ ใช้ CLAUDE.md ซึ่ง doc บอกว่า "loaded into the context window at the start of every session"
- อยากให้ Claude มี playbook ที่หยิบใช้เมื่อจำเป็น ใช้ Skill ซึ่ง doc บอกว่า body "loads only when it's used, so long reference material costs almost nothing until you need it"
- อยากให้ Claude delegate งานหนักให้ context window แยก ไม่ flood main session ใช้ Sub-agent ซึ่ง doc บอกว่า "Each subagent runs in its own context window with a custom system prompt, specific tool access, and independent permissions"
- อยากให้บางอย่าง เกิดอัตโนมัติตาม lifecycle event โดยไม่พึ่ง LLM ตัดสินใจ ใช้ Hook ซึ่ง doc อธิบายว่าเป็น "user-defined shell commands, HTTP endpoints, or LLM prompts that execute automatically at specific points in Claude Code's lifecycle"
- อยากต่อกับ external service ใหม่ เช่น Jira Slack Google Drive หรือ custom API ใช้ MCP ซึ่ง doc อธิบายว่าเป็น "open standard for connecting AI tools to external data sources"
ตัวอย่างการเลือกผิดที่เจอบ่อย 3 แบบ
- เอา playbook 500 บรรทัดไปยัด CLAUDE.md ทำให้ทุก session โหลด context เปลืองโดยไม่จำเป็น ที่ควรใช้คือ Skill เพราะโหลดเฉพาะตอนเรียก
- เอา rule แบบ "ห้าม edit production config" ไปทำเป็น Skill ทำให้ LLM อาจไม่เลือกเรียก rule นั้น ที่ควรใช้คือ Hook เพราะ deterministic ไม่ขึ้นกับ LLM ตัดสินใจ
- เอา task explore codebase ขนาดใหญ่ไปรันใน main session ทำให้ main context flood ที่ควรทำคือ delegate ไป Sub-agent (Explore built-in ทำหน้าที่นี้โดยตรง)

4 พื้นฐานของวันแรก ที่ดีกว่า "พิมพ์ prompt ยาวๆ"
ถ้าวันนี้คุณเพิ่งเปิด Claude Code ครั้งแรก แทนที่จะ paste code 200 บรรทัด ลอง 4 ขั้นนี้แทน
1. Install แล้ว cd เข้า project ก่อนเรียก claude
session ที่เริ่มผิด working directory จะทำให้ context ของ codebase ผิดทันที ตามที่ doc ระบุ
- macOS / Linux / WSL:
curl -fsSL https://claude.ai/install.sh | bash - Windows:
irm https://claude.ai/install.ps1 | iex
หลัง install แล้วทำ cd your-project && claude อย่าเริ่มจาก home directory เพราะ agent จะไม่รู้ว่าคุณกำลังพูดถึง project ไหน
2. รัน /init ให้ Claude สร้าง CLAUDE.md ให้เอง
แทนที่จะอธิบาย project ใหม่ทุกครั้งใน prompt ให้ Claude อ่าน codebase แล้ว generate persistent context ไว้ในไฟล์ CLAUDE.md ตามที่ doc ระบุ ครั้งหน้าที่เปิด session ใหม่ มันจะอ่าน CLAUDE.md อัตโนมัติโดยที่คุณไม่ต้องบอกซ้ำ
3. ใช้ plan mode ก่อนงานใหญ่
กด Shift+Tab สลับไปที่ plan mode ก่อนสั่งงานที่จะแตะหลายไฟล์ doc บอกว่าใน plan mode "Claude can analyze but not modify files or execute commands" ดีกว่าปล่อย acceptEdits ตั้งแต่แรกแล้วมาเสียใจตอน agent ลบไฟล์ที่ไม่ตั้งใจ
4. delegate แบบ "fix the failing tests" แทน prompt 500 คำ
ใช้คำสั่งสั้นๆ ที่บอก outcome ที่ต้องการ แล้วปล่อยให้ agent gather context เอง doc พูดประโยคที่ผมชอบที่สุดในเรื่องนี้ "Talk to Claude like you would a helpful colleague" และ "Delegate, don't dictate" ถ้าคุณ pair กับ junior dev คุณจะไม่อธิบายทุก keystroke ให้เขาฟัง คุณบอก outcome แล้วให้เขาคิดเอง
วันแรกขอแค่ 2 อย่างก็ไม่ต้องกลัวเครื่องพัง เริ่มที่ default mode ที่ prompt ถามก่อน edit ทุกครั้ง บวกกับรู้ว่ากด Esc 2 ครั้ง = rewind ได้เสมอ
3 pattern ที่ transferable ไป CLI agent ตัวอื่นในอนาคต
ที่ผมเขียนยาวมาทั้งหมดนี้ ไม่ใช่เพราะอยากสอน Claude Code โดยเฉพาะ แต่เพราะ pattern ที่อยู่ใต้มัน 3 อย่างนี้คือสิ่งที่ outlive ตัว tool ไปอีกหลายปี
pattern 1: harness รอบ LLM ทุก CLI coding agent ตอนนี้และในอนาคตใช้โครงเดียวกัน คือ tool + context + execution ที่ห่อ LLM ไว้ ต่างกันแค่รายละเอียดของ tool list และ default behavior
pattern 2: loop 3 phase ที่ steer ได้ gather context → take action → verify results ไม่ใช่ของ Claude Code โดยเฉพาะ agent ทุกตัวที่ทำ multi-step task ใช้ pattern นี้ แค่ชื่อ phase อาจเรียกต่างกัน
pattern 3: layered extension persistent instruction + on-demand playbook + isolated context + lifecycle hook + external connector แต่ละ agent อาจมีชื่อเรียก layer ต่างกัน แต่หน้าที่จริงๆ มี 4-5 ชั้นเดิม เพราะปัญหาที่ต้องแก้คือชุดเดียวกัน
ในชีวิตจริง ถ้า Codex CLI หรือ Aider มี config file ของตัวเอง ก็คือ CLAUDE.md เวอร์ชันของมัน ถ้ามี custom command ก็คือ Skill ของมัน user ที่เข้าใจ pattern จะเรียนรู้เครื่องมือใหม่ภายใน 30 นาที ไม่ใช่ 3 วัน
สำหรับผม ความรู้ "ปุ่มไหนกดยังไงใน Claude Code version ปัจจุบัน" จะตายในอีก 1 ปี แต่ความรู้ "harness + loop + layer คือ mental model ของ CLI agent" จะอยู่กับเราถึงรุ่น agent ที่ยังไม่เกิด
limit + เมื่อไรไม่เหมาะ
agent ทำได้หลายอย่าง แต่ไม่ใช่ทุกอย่าง ก่อนคาดหวังเกินจริงมี 3 จุดที่ต้องเข้าใจ
permission mode มีไว้ใช้ อย่ารัน bypassPermissions ตลอดเวลาเพราะตามที่ doc ระบุ mode นี้ skip prompt เกือบทุกอย่างเหลือแค่ rm -rf / ที่ยังถามเป็น circuit breaker แปลว่า agent อาจ git push เข้า main สาขาผิด ลบไฟล์ที่ไม่ได้ตั้งใจ หรือใช้ API token เกิน budget ของคุณได้จริง ใช้ default mode ในงานปกติแล้วสลับไป acceptEdits เฉพาะตอน task ปลอดภัยจริงๆ คือข้อแลกที่คุ้มกว่ามาก
Claude Code คือ orchestrator ไม่ใช่ oracle dev ยังต้องรู้จักสภาพ codebase และตัดสินใจเรื่องสำคัญด้วยตัวเอง agent ไม่รู้บริบท business ไม่รู้ team agreement ไม่รู้ production constraint ที่ไม่ได้เขียนไว้ในไฟล์ไหน ถ้าคุณไม่บอกมันก่อน มันก็จะตัดสินใจตามที่ code บอก ซึ่งอาจไม่ตรงกับเจตนาคุณ
context limit จริง doc ระบุว่า "Each Claude Code session begins with a fresh context window" สิ่งที่จำข้าม session ได้มีแค่ 2 ทาง คือ CLAUDE.md ที่ user เขียน และ auto memory ที่ Claude เขียนเอง ถ้าทำงานต่อเนื่องหลายวันบน project เดียว การลงทุนเวลา maintain CLAUDE.md ให้สดคุ้มกว่าการเขียน prompt อธิบายซ้ำทุกครั้งหลายเท่า
เมื่อไรไม่เหมาะใช้ agent
- งานที่ต้องการ creative judgement สูง เช่น เลือก architecture หรือตัดสินใจ business ที่มีข้อแลก agent ช่วย explore option ได้ แต่คนที่ตัดสินใจสุดท้ายคือคุณ
- งาน high-stakes ที่ rollback ไม่ได้ เช่น deploy production database migration หรือ git push เข้า main สาขา ใช้ plan mode ก่อนเสมอ แล้ว double-check ด้วยตาตัวเอง
ปิดท้าย คุณคือ orchestrator ไม่ใช่ prompt engineer
ความสำเร็จกับ Claude Code ไม่ได้วัดที่ "เขียน prompt สวยแค่ไหน" แต่วัดที่ "delegate ได้ดีแค่ไหน" doc พูดประโยคที่สรุปทุกอย่างไว้ในประโยคเดียว "Think of delegating to a capable colleague. Give context and direction, then trust Claude to figure out the details"
skill ที่ฝึกแล้ว transferable คือรู้ว่าจะให้ context อะไร วาง boundary ตรงไหน และเข้าไป steer ตอนไหน ทักษะ 3 ข้อนี้ใช้ได้กับ agent ทุกตัวในอนาคต ไม่ใช่ Claude Code โดยเฉพาะ
สรุปสั้นๆ ของบทความนี้คือ สั่ง agent เป็นคนคุม ปล่อยให้มันวน loop 3 phase ของมันเอง เข้าไป steer ตอนที่เห็นว่ามันหลงทาง และรู้ว่ากด Esc 2 ครั้งแล้ว rewind กลับได้ถ้าพัง pattern นี้จะอยู่กับเราไปอีกหลายปี
ถ้าวันนี้อยากเริ่มจริงๆ ลองเปิด terminal cd เข้า project ที่คุณคุ้นที่สุด แล้วพิมพ์ claude แค่นั้นเอง เริ่มจาก task เล็กๆ ที่กลัวพังน้อยที่สุด เช่น เขียน test เพิ่ม 1 ตัว refactor function 1 ตัว หรือให้มันอ่าน codebase ที่คุณยังไม่เคยเปิด แล้วสังเกต loop 3 phase ของมันก่อนที่จะคาดหวังให้มันทำของใหญ่
แหล่งอ้างอิง
บทความที่เกี่ยวข้อง




ความคิดเห็น
ยังไม่มีความคิดเห็น เป็นคนแรกที่แสดงความเห็น!