วิดีโอสาธิต > https://youtu.be/-INveHwbRz4

TL;DR

claude agents ให้คุณเปิดใช้งาน ตรวจสอบ และตอบกลับเซสชัน Claude Code แบบเบื้องหลังหลายตัวได้ในหน้าจอเดียว
แต่ละเซสชันอยู่รอดได้แม้ไม่มีเทอร์มินัล → มีโปรเซส supervisor แยกคอยดูแล
แยกความขัดแย้งของไฟล์อัตโนมัติด้วย worktree และถ้ามี PR ก็จะแสดงสถานะ CI ในแถวนั้นด้วย
ต้องใช้ Claude Code v2.1.139+ ขณะนี้อยู่ในช่วง Research Preview

แนวคิดหลัก

คำถามที่เกิดขึ้นอย่างเป็นธรรมชาติใน “ยุคของการเขียนโค้ดด้วยเอเจนต์” คือ: จะรัน 10 เซสชันพร้อมกันอย่างไร?
ก่อนหน้านี้ต้องใช้ tmux + หลายหน้าต่าง + สถานะความคืบหน้าที่ไม่ชัดเจน จนเกิดภาระทางความคิด
Agent View จัดการสิ่งนั้นให้อยู่ในรูปตารางบนหน้าจอเดียว โดยแต่ละแถวจะแสดงชื่อเซสชัน สิ่งที่กำลังทำอยู่ และเวลาที่แก้ไขล่าสุด

วิธีอ่านไอคอนสถานะ

Animated ✽ - Working, กำลังรันเครื่องมือ/สร้างคำตอบ
Yellow - Needs input, กำลังรอการตัดสินใจเรื่องสิทธิ์หรือรอคำถามตอบกลับ
Dimmed - Idle, รออินพุตอยู่ แต่ไม่ได้ติดค้างกับคำถามเฉพาะเจาะจง
Green - Completed, เสร็จสมบูรณ์ตามปกติ
Red - Failed, จบการทำงานด้วยข้อผิดพลาด
Grey - Stopped, ถูกหยุดด้วย Ctrl+X หรือ claude stop

รูปร่างของไอคอนยังบอกได้ด้วยว่าโปรเซสยังมีชีวิตอยู่หรือไม่:

✻ (หรือแอนิเมชัน ✽ ระหว่างทำงาน) = โปรเซสยังทำงานอยู่ และตอบกลับได้ทันที
∙ = โปรเซสตายแล้ว แต่จะรีสตาร์ตต่อเนื่องให้อัตโนมัติเมื่อ peek/reply/attach
✢ = เซสชัน /loop กำลังพักจนกว่าจะถึง iteration ถัดไป (แสดงจำนวนรอบและเวลานับถอยหลัง)

สรุปหนึ่งบรรทัดจะถูกสร้างด้วยโมเดลระดับ Haiku จึงดูสถานะได้โดยไม่ต้องเปิดทรานสคริปต์ และยังอยู่ภายใต้เงื่อนไขการใช้งานและการคิดค่าบริการตามปกติ
เวิร์กโฟลว์

Dispatch: พิมพ์พรอมป์ต์ในช่องป้อนด้านล่าง → Enter ระบบจะตั้งชื่อให้อัตโนมัติ
Peek: กด Space ที่แถว → ดูเอาต์พุตล่าสุดและลิงก์ PR หากเป็นคำถามแบบหลายตัวเลือก สามารถตอบด้วยปุ่มตัวเลขได้ และสำหรับเซสชันที่ติดค้างประเภทอื่นก็ใช้ Tab เพื่อเติมคำตอบแนะนำแล้วส่งได้เช่นกัน หากใส่คำนำหน้า ! ก็สามารถใช้คำสั่ง Bash ได้
Attach: กด Enter หรือปุ่ม → เพื่อเข้าเซสชันแบบโต้ตอบเต็มรูปแบบ Claude จะแสดงสรุปสิ่งที่เกิดขึ้นระหว่างที่คุณไม่อยู่ (recap) ก่อน
Detach: ที่ช่องป้อนว่าง กด ← → เพื่อให้ทำงานเบื้องหลังต่อไป Ctrl+C, Ctrl+D, Ctrl+Z, /exit ทั้งหมดจะยังคงให้เซสชันทำงานเบื้องหลังอยู่ หากต้องการจบเซสชันจริง ๆ ให้ใช้ /stop

หากต้องการส่งเซสชันแบบโต้ตอบเดิมไปทำงานเบื้องหลัง ให้รัน /bg ภายในเซสชันนั้น หรือกด ← ที่พรอมป์ต์ว่าง เมื่อใช้ Agent View แล้ว คุณจะสามารถเข้า Agent View ได้จากเซสชันใดก็ได้ด้วยการกด ← ที่พรอมป์ต์ว่าง
เทคนิคการ dispatch

<subagent-name> <prompt> - หากคำแรกเป็นชื่อ subagent ตัวนั้นจะกลายเป็นเอเจนต์หลัก
@<agent-name> - แม้จะ mention กลางพรอมป์ต์ ก็จะทำงานเป็นเอเจนต์หลัก
@<repo> - เปิด Agent View จากไดเรกทอรีแม่แล้ว route ไปยัง repo ที่ระบุ
/<skill> - Skill dispatch (เหมาะสำหรับแพ็กงานซ้ำ ๆ)
#1234 หรือ PR URL - หากมีเซสชันที่กำลังทำ PR นั้นอยู่แล้วจะเลือกเซสชันนั้น ไม่เช่นนั้นจะ dispatch ใหม่
Shift+Enter - dispatch แล้ว attach ทันที
จากเชลล์โดยตรง: claude --bg "...", claude --agent code-reviewer --bg "..."

การกรองรายการ
หากพิมพ์ในช่องป้อนเฉย ๆ จะทำงานเป็นตัวกรองแทนการ dispatch:

a:<name> - เซสชันที่รันด้วยเอเจนต์นั้น
s:<state> - กรองตามสถานะ (เช่น s:blocked จะแสดงเฉพาะรายการที่รออินพุต)
#<number> หรือ PR URL - เซสชันที่ทำงานกับ PR นั้น

คีย์ลัดหลัก

↑ / ↓: เลื่อนแถว
Enter: attach เข้าเซสชันที่เลือก หรือถ้ามีข้อความในช่องป้อนก็จะ dispatch
Space: เปิด/ปิดแผง peek
Shift+Enter: dispatch แล้ว attach ทันที
Alt+1~Alt+9: attach ไปยังเซสชันลำดับที่ N ของกลุ่มนั้นทันที
Ctrl+S: สลับการจัดกลุ่มตามสถานะ/ไดเรกทอรี
Ctrl+T: ปักหมุด/ยกเลิกปักหมุดเซสชัน
Ctrl+R: เปลี่ยนชื่อเซสชัน
Ctrl+G: เขียนพรอมป์ต์ใน $EDITOR
Ctrl+X: หยุด (กดอีกครั้งภายใน 2 วินาทีเพื่อลบ)
Shift+↑ / Shift+↓: เปลี่ยนลำดับ
?: ดูคีย์ลัดทั้งหมด

ความขัดแย้งของไฟล์ถูกแยกอัตโนมัติด้วย worktree

เซสชันที่ dispatch จาก Agent View หากต้องมีการแก้ไข จะสร้าง git worktree ใต้ .claude/worktrees/ ให้อัตโนมัติ
เมื่อลบเซสชัน worktree จะถูกลบไปด้วย → หากยังไม่ merge/push ก็อาจหายได้ ต้องระวัง
หากกำหนด isolation: worktree ใน frontmatter ของ subagent ก็จะถูกแยกเสมอ

สถาปัตยกรรม Supervisor

เซสชันเบื้องหลังไม่ได้เป็นลูกของเทอร์มินัล แต่เป็นลูกของโปรเซส supervisor ระดับผู้ใช้
เซสชันที่เสร็จแล้วและ idle เกิน 1 ชั่วโมง จะหยุดเฉพาะโปรเซส แต่ข้อมูลยังอยู่บนดิสก์ → เมื่อเชื่อมต่อครั้งถัดไปจะรีสตาร์ตต่อเนื่องให้
ตัว supervisor เองจะปิดเมื่อทุกเซสชันจบลง และจะถูกเปิดใหม่เมื่อมีการ dispatch แบบเบื้องหลังครั้งถัดไป
เมื่อ auto-update จะรีสตาร์ตด้วยไบนารีใหม่โดยอัตโนมัติ และเซสชันเบื้องหลังก็ยังอยู่รอด
ตำแหน่งไฟล์สถานะ: ~/.claude/daemon.log (ล็อกของ supervisor), ~/.claude/daemon/roster.json (รายการเซสชันที่กำลังรัน), ~/.claude/jobs/<id>/state.json (สถานะรายเซสชัน)
สามารถปิดใช้งานทั้งหมดได้ด้วยการตั้งค่า disableAgentView หรือ environment variable CLAUDE_CODE_DISABLE_AGENT_VIEW (รองรับการจัดการในระดับองค์กรด้วย)

คำสั่งเชลล์
claude agents # เปิด Agent View
claude attach <id> # เข้าเซสชัน
claude logs <id> # ดูเอาต์พุตล่าสุด
claude stop <id> # หยุด (= claude kill)
claude respawn <id> # รีสตาร์ตเซสชันที่หยุดไว้
claude respawn --all # ปลุกทั้งหมดหลัง sleep/shutdown
claude rm <id> # ลบออกจากรายการ
ข้อจำกัด

ค่าบริการยังคิดตามเดิม - การรันขนาน 10 ตัวจะใช้โควตาเร็วขึ้น 10 เท่า
เซสชันเบื้องหลังทำงานบนเครื่องโลคัล - หาก sleep/shutdown ก็จะหยุด
worktree จะถูกลบไปพร้อมกันเมื่อเซสชันถูกลบ

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น