Claude Architect · บทเรียน

โหมดไร้ส่วนติดต่อ

แฟล็ก -p / --print สำหรับการทำงานแบบไร้ส่วนติดต่อใน CI

บทเรียน 1 จาก 413 ขั้นตอน

โหมดไร้ส่วนติดต่อ เป็นบทเรียน Claude Architect ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Claude Architect และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Claude Architect มีบทเรียนทั้งหมด 4 บทเรียน

เหตุผลที่มีโหมดไร้หน้าจอ

Claude Code ตั้งต้นเป็นเซสชันเทอร์มินัลแบบ โต้ตอบ: โปรแกรมจะแจ้งถามคุณ รอข้อมูลนำเข้า และสตรีมบทสนทนา รูปแบบนี้เหมาะอย่างยิ่งเมื่อคุณนั่งทำงานอยู่หน้าเครื่อง แต่ใช้การไม่ได้ภายใน pipeline

ตัวเรียกใช้ CI/CD ไม่มี มนุษย์คอยยืนยันแผน อนุมัติการแก้ไข หรือตอบคำถามเพิ่มเติม จึงต้องใช้คำสั่งเดียวที่ทำงาน สร้างผลลัพธ์ และจบการทำงานด้วยรหัสสถานะ

นั่นคือสิ่งที่ -p / --print มอบให้: การทำงานแบบไม่โต้ตอบ (ไร้หน้าจอ) นี่คือแฟล็กพื้นฐานสำหรับเรียกใช้ Claude Code ใน CI

แฟล็ก --print

คุณเรียกใช้โหมดไร้หน้าจอได้โดยส่งพรอมต์ไปยัง -p (รูปแบบย่อของ --print) Claude จะทำวงจรการทำงานของเอเจนต์จนเสร็จสมบูรณ์และพิมพ์ผลลัพธ์สุดท้ายไปยัง stdout จากนั้นกระบวนการจะจบการทำงาน

ไม่มี REPL ไม่มีการรอข้อมูลนำเข้า และไม่มีคำถามขอการยืนยัน มีเพียงคำสั่งหนึ่งคำสั่งเข้าและผลลัพธ์หนึ่งรายการออก — ซึ่งเป็น contract ที่ขั้นตอนของ pipeline ต้องการ

# Interactive (default) — opens a session, waits for you
claude

# Non-interactive (headless) — runs and exits, prints to stdout
claude -p "Review the staged diff and list any blocking issues"

ขั้นตอน CI จริง

ในทางปฏิบัติ -p จะกลายเป็นหนึ่งขั้นตอนในงาน ตัวเรียกใช้จะดึงโค้ดออกมา จากนั้นเรียก Claude พร้อมคำสั่งที่แม่นยำ เมื่อกระบวนการจบลงหลังจากวงจรไปถึง end_turn pipeline จึงดำเนินต่อได้ตามธรรมชาติ

กำหนดขอบเขตพรอมต์ให้ ชัดเจนและระบุรายละเอียดครบถ้วน — ไม่มีมนุษย์คอยช่วยชี้แจงความกำกวมระหว่างการทำงาน ดังนั้นคำสั่งต้องเข้าใจได้ด้วยตัวเอง

# .github/workflows/review.yml (excerpt)
- name: Claude review
  run: |
    claude -p "Review the diff in this PR. Flag only changes that
    introduce a bug, a security issue, or break a public API."
  env:
    ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}

ผลลัพธ์ที่แยกวิเคราะห์ได้: --output-format json

ข้อความธรรมดาเหมาะสำหรับมนุษย์ที่อ่านบันทึกการทำงาน แต่ pipeline มักต้อง ดำเนินการกับผลลัพธ์ — โพสต์ข้อคิดเห็น ตั้งสถานะการตรวจสอบ หรือควบคุมการรวมโค้ด

เพิ่ม --output-format json เพื่อให้ Claude ส่งผลลัพธ์แบบมีโครงสร้างที่เครื่องอ่านได้ แทนข้อความบรรยายอิสระ จากนั้นขั้นตอนถัดไปจะสามารถแยกวิเคราะห์ฟิลด์อย่างเป็นแน่นอนด้วย jq หรือสคริปต์

claude -p "List blocking issues in the staged diff" \
  --output-format json | jq '.result'

บังคับใช้โครงสร้างข้อมูล

การใช้ JSON เพียงอย่างเดียวยังเปิดให้โมเดลเลือกรูปแบบได้ สำหรับการทำงานอัตโนมัติที่เชื่อถือได้ ให้ใช้ --output-format json คู่กับ schema เพื่อให้ทุกครั้งส่งคืนฟิลด์ชุดเดียวกัน วิธีนี้กำจัดความประหลาดใจด้านไวยากรณ์และทำให้คุณกำหนดคีย์ที่ pipeline ใช้งานได้อย่างตรงจุด

ใช้วินัยเดียวกับผลลัพธ์แบบมีโครงสร้างของ API: กำหนดฟิลด์เป็น required เฉพาะเมื่อฟิลด์นั้นมีอยู่เสมอ — อย่าบังคับฟิลด์ที่อาจไม่มีอยู่ตามปกติ มิฉะนั้นโมเดลจะกุค่าขึ้นมา

{
  "type": "object",
  "properties": {
    "verdict": { "type": "string", "enum": ["pass", "fail"] },
    "issues": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "file": { "type": "string" },
          "severity": { "type": "string", "enum": ["blocking", "warning"] },
          "detail": { "type": "string" }
        },
        "required": ["file", "severity", "detail"]
      }
    }
  },
  "required": ["verdict", "issues"]
}

ตรวจสอบในเซสชันที่แยกออกมา

ประเด็นละเอียดที่สำคัญต่อการสอบคือ เมื่อ Claude ทั้ง สร้างโค้ดและ ตรวจสอบโค้ดนั้นในเซสชันเดียวกัน การตรวจสอบจะมีอคติ — ผู้เขียนยังคงยึดเหตุผลของตนเองและไม่ท้าทายความคิดของตัวเอง

ใน CI ให้เรียกใช้การตรวจสอบใน เซสชันใหม่ที่แยกเป็นอิสระจากบริบทการสร้างใด ๆ อินสแตนซ์ที่เป็นอิสระมีแนวโน้มจะตรวจพบข้อบกพร่องจริงได้มากกว่ามาก ซึ่งสอดคล้องกับกฎทั่วไปว่า การตรวจสอบอย่างเป็นอิสระดีกว่าการตรวจสอบตนเองในเซสชันเดิม

# Generation and review are SEPARATE invocations / sessions
claude -p "Implement the change described in TASK.md"

# Fresh, unbiased reviewer — no generation history
claude -p "Review the resulting diff for correctness and security only" \
  --output-format json

ลดผลบวกเท็จ

ผู้ตรวจสอบ CI ที่ส่งสัญญาณเตือนเกินจริงจะถูกเพิกเฉย เป้าหมายคือ ความแม่นยำ: แสดงเฉพาะสิ่งกีดขวางที่เกิดขึ้นจริง และไม่ส่งสัญญาณเมื่อไม่มีปัญหา

เครื่องมือสำคัญคือพรอมต์ ไม่ใช่การวิงวอนแบบคลุมเครือ เกณฑ์ที่ชัดเจนดีกว่าคำขอที่กำกวม: "ทำเครื่องหมายข้อคิดเห็นเฉพาะเมื่อข้อคิดเห็นนั้นขัดแย้งกับโค้ด" ให้ผลดีกว่า "โปรดแม่นยำขึ้น" ตัวอย่าง Few-shot ที่เจาะจงจำนวนเล็กน้อย (2-4 ตัวอย่าง) ซึ่งแสดงผลบวกจริงเทียบกับผลบวกเท็จ จะช่วยปรับเทียบโมเดลกับกรณีขอบเขตของคุณได้เพิ่มเติม

claude -p "Review the diff. Report an issue ONLY if it (a) causes
incorrect behavior, (b) is a security risk, or (c) breaks a public
contract. Do NOT comment on style, naming, or formatting.

Example (flag):   off-by-one in loop bound -> array overrun
Example (ignore): a variable could be renamed for clarity" \
  --output-format json

จำกัดขอบเขตเครื่องมือด้วยสิทธิ์เท่าที่จำเป็น

การทำงานแบบไร้หน้าจอจะทำงาน โดยไม่มีการอนุมัติจากมนุษย์ ดังนั้นการเข้าถึงเครื่องมือโดยไม่จำกัดจึงมีความเสี่ยง ให้สิทธิ์เฉพาะสิ่งที่งานต้องใช้

สำหรับการตรวจสอบแบบอ่านอย่างเดียว โดยทั่วไปคุณต้องการ Read, Grep และ Glob — ไม่ใช่ Write, Edit หรือ Bash แบบทำงานได้ตามอำเภอใจ นี่คือหลักสิทธิ์เท่าที่จำเป็นแบบเดียวกับที่ใช้กับชุดเครื่องมือของเอเจนต์: จำกัดขอบเขตเครื่องมือตามบทบาท และทำให้ชุดเครื่องมือมีขนาดเล็กเพื่อให้เลือกใช้ได้อย่างน่าเชื่อถือ

claude -p "Review the diff and report blocking issues" \
  --output-format json \
  --allowedTools "Read,Grep,Glob"

หยุดที่วงจร ไม่ใช่บรรทัดสถานะ

แม้ทำงานแบบไร้หน้าจอ วงจรการทำงานของเอเจนต์ก็ยังไม่เปลี่ยนแปลง: ขอข้อมูล -> ตรวจสอบ stop_reason -> หากเป็น tool_use ให้เรียกใช้เครื่องมือและทำต่อ -> ทำซ้ำจนถึง end_turn กระบวนการจะจบลงเมื่อโมเดลไปถึง end_turn

อย่าครอบ Claude ด้วยสคริปต์ที่ใช้ grep ผลลัพธ์เพื่อค้นหาคำอย่าง "done" หรือ "finished" แล้วใช้ตัดสินว่าการทำงานเสร็จหรือไม่ การยุติการทำงานขับเคลื่อนด้วยเหตุผลการหยุด การกำหนดขีดจำกัดจำนวนรอบเป็นเพียง กลไกความปลอดภัย ไม่ใช่กลไกหยุดหลัก

การเรียกใช้ซ้ำ: รายงานเฉพาะสิ่งใหม่

CI ถูกเรียกใช้ซ้ำอยู่เสมอ — ทุกครั้งที่พุชจะเรียกงานอีกครั้ง หากผู้ตรวจสอบรายงานปัญหาเดิมทั้งห้าข้อซ้ำทุกครั้ง สัญญาณสำคัญก็จะจมหายไปท่ามกลางเสียงรบกวน

เมื่อเรียกใช้อีกครั้ง ให้ส่ง ผลลัพธ์ก่อนหน้ากลับเข้าไป และสั่ง Claude ให้รายงานเฉพาะปัญหา ใหม่หรือที่ยังไม่ได้แก้ไขเท่านั้น วิธีนี้ทำให้ข้อคิดเห็นแต่ละรายการนำไปดำเนินการได้ และเคารพข้อเท็จจริงที่ว่านักพัฒนาเคยเห็นผลการค้นพบก่อนหน้านี้แล้ว

claude -p "Here are the issues from the previous run:
$(cat prev_review.json)

Review the current diff. Report ONLY issues that are new or remain
unfixed. Omit anything already resolved." \
  --output-format json > review.json

โหมดไร้หน้าจอเทียบกับ Batch API

อย่าสับสนการเรียกใช้ CLI แบบไม่โต้ตอบกับ Message Batches API เนื่องจากทั้งสองอย่างแก้ปัญหาคนละแบบ

  • -p / --print: ทำงานแบบพร้อมกันและหยุดรอผลลัพธ์ โดยส่งผลกลับทันที — เหมาะสำหรับ ด่านตรวจสอบก่อนรวมโค้ด ที่ไปป์ไลน์ต้องรอผลตัดสิน
  • Batch API: มีค่าใช้จ่ายถูกลง 50% มีกรอบเวลาสูงสุด 24 ชั่วโมง ไม่มี SLA ด้านเวลาแฝง และไม่รองรับการเรียกใช้เครื่องมือหลายรอบ — เหมาะสำหรับการตรวจสอบข้ามคืนที่ไม่ต้องหยุดรอผลลัพธ์เท่านั้น ไม่ควรใช้กับการตรวจสอบที่ต้องการผลทันเวลาและต้องหยุดรอ

การตรวจทานก่อนรวมโค้ดต้องหยุดรอผลลัพธ์ ดังนั้นให้ใช้ -p และเลือกใช้ Batch เฉพาะกับงานออฟไลน์ที่ไม่เร่งด่วน

ตรวจสอบอย่างรวดเร็ว: เชื่อมต่อผู้ตรวจทาน CI

คุณกำลังเพิ่ม Claude Code เป็นขั้นตอนการตรวจทาน ก่อนรวมโค้ด ในไปป์ไลน์ งานนี้ต้องทำงานได้โดยไม่มีมนุษย์อยู่ด้วย ส่งผลลัพธ์ที่ขั้นตอนถัดไปสามารถแยกวิเคราะห์เพื่อกำหนดสถานะการตรวจสอบได้ และหลีกเลี่ยงการตรวจทานโค้ดที่สร้างขึ้นเองแบบมีอคติ วิธีใดถูกต้อง

สรุป: Claude Code แบบไม่มีส่วนติดต่อผู้ใช้

ประเด็นสำคัญของโหมดไม่โต้ตอบ:

  • -p / --print เป็นแฟล็กที่จำเป็นสำหรับการทำงานของ CI แบบไม่มีส่วนติดต่อผู้ใช้ — ทำงานวนรอบจนเสร็จ พิมพ์ผลไปยัง stdout แล้วจบการทำงาน
  • --output-format json (ควรใช้ร่วมกับสคีมา) ทำให้แยกวิเคราะห์ผลลัพธ์ได้ เพื่อให้ไปป์ไลน์นำไปดำเนินการต่อได้ โดยกำหนดให้บังคับเฉพาะฟิลด์ที่มีอยู่เสมอ
  • เรียกใช้การตรวจทานใน เซสชันใหม่ที่แยกเป็นอิสระ — การตรวจทานอย่างอิสระมีประสิทธิภาพกว่าการตรวจทานงานของตนเองในเซสชันเดิมซึ่งมีอคติ
  • เพิ่มความแม่นยำด้วย เกณฑ์ที่ระบุชัดเจนและตัวอย่างแบบไม่กี่ตัวอย่าง เพื่อลดผลบวกลวง
  • ใช้ เครื่องมือที่มีสิทธิ์น้อยที่สุด สำหรับการทำงานที่ไม่มีผู้ดูแล และเมื่อทำงานซ้ำให้รายงานเฉพาะปัญหาใหม่หรือปัญหาที่ยังไม่ได้แก้
  • การสิ้นสุดให้ยึดตาม เหตุผลการหยุด ไม่ใช่การแยกวิเคราะห์ข้อความ และให้จำกัดจำนวนรอบเป็นเพียงตาข่ายนิรภัย
  • ใช้ -p สำหรับด่านตรวจสอบก่อนรวมโค้ดที่ต้องหยุดรอผลลัพธ์ และสงวน Batch API ไว้สำหรับงานที่ไม่ต้องหยุดรอและไม่เร่งด่วน
เริ่มต้นได้ฟรี

เรียนรู้ Python ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
26
บทเรียน
104

คำถามที่พบบ่อย

บทเรียน “โหมดไร้ส่วนติดต่อ” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “โหมดไร้ส่วนติดต่อ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Claude Architect ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Claude Architect มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “โหมดไร้ส่วนติดต่อ”

แฟล็ก -p / --print สำหรับการทำงานแบบไร้ส่วนติดต่อใน CI คุณปฏิบัติ Claude Architect ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Claude Architect หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Claude Architect บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “โหมดไร้ส่วนติดต่อ” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Claude Architect นี้ได้ไหม

ได้ บทเรียน Claude Architect ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. โหมดไร้ส่วนติดต่อ
  2. ผลลัพธ์แบบมีโครงสร้าง
  3. การแยกเซสชันสำหรับการตรวจทาน
  4. การสร้าง test และมาตรฐาน
← กลับไปที่ Claude Architect