สรุปใจความสำคัญ
หากต้องการให้ AI coding agent ทำงานต่อเนื่องแม้ในเวลาที่แล็ปท็อปของคุณเข้าสู่โหมดสลีป คุณมี 3 วิธีแก้ปัญหาเรียงตามระดับความพยายาม ได้แก่: ป้องกันไม่ให้แล็ปท็อปสลีปด้วยคำสั่ง caffeinate หรือการตั้งค่าพลังงาน, ย้ายเอเจนต์ไปรันบน Computer ที่เปิดตลอดเวลา เช่น Mac mini หรือ Linux server, และตั้งคิว (Queue) ไว้ด้านหน้า เพื่อให้งานรอประมวลผลบนเครื่องนั้นแทนที่จะหยุดชะงักไปพร้อมกับการพับหน้าจอลง
ทำไมเอเจนต์ถึงหยุดทำงานเมื่อคุณพับหน้าจอแล็ปท็อป
คุณสั่งให้ Claude Code หรือ Codex ทำงานรีแฟกเตอร์โค้ดชุดใหญ่ ปิดฝาแล็ปท็อป แล้วเดินทางกลับบ้าน แต่พอเปิดเครื่องมาในเช้าวันถัดมา หน้าต่างเทอร์มินัลกลับยังค้างอยู่ที่ขั้นตอนเดิมเหมือนตอนที่คุณเพิ่งเดินออกจากโต๊ะ งานไม่มีอะไรเสร็จเลยสักอย่าง แถมไม่มีการแจ้งเตือนอะไรบอกคุณเลยด้วยซ้ำ
สาเหตุที่เป็นเช่นนี้ก็เพราะว่า เมื่อ macOS เข้าสู่โหมดสลีป ระบบจะระงับการทำงาน (Suspend) ของทุกโปรเซส รวมถึงตัวเอเจนต์ของคุณด้วย การเชื่อมต่อที่เอเจนต์เปิดค้างไว้กับ API ของโมเดลจะหลุดไป เช่นเดียวกับการเชื่อมต่อไปยังเครื่องมือภายนอกหรือบอร์ดต่าง ๆ พอแล็ปท็อปตื่นขึ้นมา เอเจนต์อาจพยายามลองใหม่ ขึ้นข้อผิดพลาด หรือไม่ก็นั่งนิ่งรอคำตอบที่ไม่มีวันส่งมาถึง ไม่ว่าผลลัพธ์จะเป็นแบบไหน เวลาหลายชั่วโมงที่คุณนอนหลับไปก็สูญเปล่า
คู่มือนี้จะอธิบาย 3 วิธีที่จะช่วยให้ AI coding agent ทำงานต่อไปได้ สิ่งที่ต้องแลกมาในแต่ละวิธี และงานส่วนไหนที่ยังจำเป็นต้องพึ่งพาแล็ปท็อปของคุณอยู่ หากคุณกระจายงานของเอเจนต์ผ่านบอร์ดที่แชร์ร่วมกันอย่าง Sharkly อยู่แล้ว ทางแก้ที่ 2 และ 3 จะใช้เวลาตั้งค่าเพียงแค่ราว ๆ 10 นาทีเท่านั้น

วิธีแก้ที่ 1: ป้องกันไม่ให้แล็ปท็อปเข้าสู่โหมดสลีป
วิธีที่เร็วที่สุดคือการสั่งไม่ให้แล็ปท็อปสลีป ข้อเสียคือเปลืองแบตเตอรี่และเกิดความร้อนสะสม อีกทั้งยังใช้งานไม่ได้หากคุณพับหน้าจอลง เว้นแต่จะเข้าเงื่อนไขตามที่ Apple กำหนดไว้ วิธีนี้จึงเหมาะสำหรับการรันงานสั้น ๆ ไม่กี่ชั่วโมง ไม่ใช่แผนที่คุณควรใช้เป็นประจำทุกคืน
จะป้องกันไม่ให้ Mac สลีประหว่างที่เอเจนต์กำลังทำงานได้อย่างไร?
macOS มีคำสั่งในตัวสำหรับเรื่องนี้โดยเฉพาะที่ชื่อว่า caffeinate คำสั่งนี้จะสร้าง power assertion ซึ่งเป็นการร้องขอเพื่อบอกระบบไม่ให้เข้าสู่โหมดสลีปตราบเท่าที่คำสั่งยังทำงานอยู่ แฟล็กที่คุณจะได้ใช้งานตามข้อมูลใน เอกสารอ้างอิง caffeinate มีดังนี้:
-iป้องกันไม่ให้เครื่องสลีปเมื่อไม่มีการใช้งาน (Idle sleep)-sป้องกันไม่ให้ระบบสลีป แต่จะทำงานเฉพาะตอนเสียบปลั๊กไฟ (AC power) เท่านั้น-dสั่งให้หน้าจอเปิดค้างไว้ตลอดเวลา (แทบไม่จำเป็นต้องใช้)-w <pid>ยกเลิกการป้องกันสลีปเมื่อโปรเซสดังกล่าวทำงานเสร็จสิ้น-t <seconds>ยกเลิกการป้องกันสลีปหลังจากพ้นระยะเวลาที่กำหนด (เป็นวินาที)
รูปแบบการใช้งานที่เรียบร้อยและปลอดภัยที่สุด คือการครอบคำสั่งไว้ที่ตัวเอเจนต์โดยตรง เพื่อให้การป้องกันสลีปสิ้นสุดลงพร้อมกับที่เอเจนต์ทำงานเสร็จ:
# Hold the assertion for exactly as long as the agent runs
caffeinate -is claude -p "Refactor the billing module and run the tests"
# Or attach to an agent that's already running
pgrep -f codex # prints the PID, for example 48213
caffeinate -i -w 48213
หากคุณถนัดคลิกตั้งค่ามากกว่าพิมพ์คำสั่ง ให้เปิดไปที่ การตั้งค่าระบบ (System Settings) แล้วเลือก แบตเตอรี่ (Battery) ในส่วน ตัวเลือกเพิ่มเติม (Additional Options) ให้เปิดใช้งาน “ป้องกันไม่ให้เครื่องเข้าสู่โหมดพักการทำงานโดยอัตโนมัติบนอะแดปเตอร์แปลงไฟเมื่อปิดจอแสดงผล” (คู่มือการตั้งค่าแบตเตอรี่ของ Apple) โดยตัวเลือกนี้จะทำงานเฉพาะเวลาที่เสียบสายชาร์จแล็ปท็อปไว้เท่านั้น
caffeinate ทำงานได้ไหมเมื่อพับหน้าจอลง?
คำสั่งนี้ไม่สามารถทำได้ด้วยตัวเอง เพราะการพับหน้าจอ MacBook จะทำให้เครื่องเข้าสู่โหมดสลีปเสมอ เว้นแต่คุณจะใช้งานในโหมดปิดจอแสดงผล (Closed-display mode) ซึ่ง Apple ระบุเงื่อนไขไว้ว่าจะต้องเสียบสายชาร์จ ต่อจอภาพภายนอก รวมถึงเชื่อมต่อคีย์บอร์ดและเมาส์ภายนอกเอาไว้ (คู่มือโหมด closed-display ของ Apple) ดังนั้น หากคุณถอดปลั๊กหรือไม่ได้ต่อจอมอนิเตอร์ภายนอก ให้ถือได้เลยว่าเอเจนต์จะหยุดทำงานทันทีที่คุณพับจอ
แต่ถ้าคุณใช้งาน Sharkly Desktop คุณก็ไม่จำเป็นต้องพิมพ์คำสั่งเหล่านี้เลย เพราะในการตั้งค่าของ Computer จะมีสวิตช์ Prevent sleep ให้เลือกตั้งเวลาได้ตั้งแต่ 5 นาที, 30 นาที, 1, 2, 5 หรือ 8 ชั่วโมง ไปจนถึง ตลอดเวลา (Always) ซึ่งใน เอกสารประกอบการใช้งาน Computers ระบุว่าฟีเจอร์นี้จะช่วยให้ระบบตื่นอยู่ตลอดเวลาในขณะที่หน้าจอสามารถดับลงได้ และจะปิดการทำงานลงอัตโนมัติเมื่อครบกำหนดเวลา โดยฟีเจอร์นี้เปิดให้ใช้เฉพาะบนเครื่องปัจจุบัน (This computer) เท่านั้น ไม่สามารถใช้กับเครื่องที่แชร์หรือเครื่องระยะไกล (Remote) ได้

วิธีแก้ที่ 2: รันเอเจนต์บน Computer ที่เปิดทิ้งไว้ตลอดเวลา
ทางแก้ปัญหาที่ยั่งยืนคือ เลิกรันงานที่กินเวลานานบนแล็ปท็อป แล้วย้ายเอเจนต์ไปไว้บนเครื่องที่ไม่เคยต้องพับจอ เช่น Mac mini เครื่องสำรองบนโต๊ะทำงาน, Linux server ในห้องเซิร์ฟเวอร์ หรือ Virtual Machine (VM) บนคลาวด์ แล็ปท็อปของคุณก็จะทำหน้าที่เพียงแค่เป็นที่สั่งงานและตรวจดูผลลัพธ์เท่านั้น
ทีมผู้พัฒนา DeepSeek Harness ได้อธิบายแนวคิดการแบ่งการทำงานลักษณะนี้ไว้ใน บทความการออกแบบ Super-agent โดยพวกเขาเรียกสิ่งนี้ว่า BYOM ซึ่งลูปการทำงานและสถานะเซสชันของเอเจนต์จะอยู่บนคลาวด์ ในขณะที่แต่ละสภาพแวดล้อมที่เก็บโค้ดของคุณจะรันเดมอน (Daemon) ขนาดเล็กและทำงานอยู่กับที่ แม้ว่าบทความดังกล่าวจะพูดถึงเชิงสถาปัตยกรรม ไม่ใช่ผลิตภัณฑ์ที่คุณสามารถกดเปิดสวิตช์ใช้งานได้ทันที แต่หลักการนี้ก็ใช้ได้จริง โค้ดและเครื่องมือต่าง ๆ จะยังคงอยู่บนฮาร์ดแวร์ที่คุณควบคุม ส่วนลูปที่คอยแจกจ่ายงานก็ยังคงดำเนินต่อไป ไม่ว่าแล็ปท็อปของคุณจะเปิดหรือปิดอยู่ก็ตาม
สำหรับการตั้งค่าขั้นต่ำบนเครื่องที่เปิดทิ้งไว้นั้น คุณต้องมี CLI ของเอเจนต์, ข้อมูลรับรองความถูกต้องของ Git (Git credentials) และวิธีรักษาสถานะเซสชันให้ทำงานต่อเนื่อง บน Linux มักจะใช้ tmux หรือเซอร์วิสของ systemd เพื่อให้เอเจนต์ยังคงทำงานต่อไปได้แม้คุณจะตัดการเชื่อมต่อ SSH ไปแล้ว วิธีนี้ใช้ได้ดีกับเอเจนต์ตัวเดียว แต่จะเริ่มจัดการยากขึ้นเมื่อคุณต้องรันพร้อมกัน 5 ตัว เพราะคุณจะต้องคอย SSH เข้าไปตรวจเช็กว่าตัวไหนรันเสร็จแล้วบ้าง
จะเพิ่ม Remote Computer เข้าสู่ Sharkly ได้อย่างไร?
ใน Sharkly นิยามของ “Computer” คือโฮสต์ใด ๆ ก็ตามที่เชื่อมต่ออยู่และใช้สำหรับรันเอเจนต์ โดยจะมีเซอร์วิสขนาดเล็กติดตั้งอยู่ในเครื่องเพื่อตรวจจับเครื่องมือเอเจนต์ที่ลงไว้ (เช่น Claude Code, Codex และอื่น ๆ) จากนั้นจะรายงานแต่ละตัวในฐานะ Runtime, คอยส่งสัญญาณ Heartbeat และรับงานเข้ามาประมวลผล เซอร์วิสนี้จะเปิดการเชื่อมต่อขาออก (Outbound) เสมอ ทำให้การติดตั้งทั่วไปไม่จำเป็นต้องเปิดพอร์ตขาเข้า (Inbound port) แต่อย่างใด
ขั้นตอนการเชื่อมต่อเซิร์ฟเวอร์:
- ใน Sharkly ให้ไปที่การตั้งค่า (Settings) เลือก Computers แล้วเลือกเชื่อมต่อ Computer เครื่องใหม่
- สร้างโทเค็นสำหรับติดตั้งแบบใช้ครั้งเดียว (Install token) โทเค็นนี้มีอายุจำกัดและใช้งานได้เพียงครั้งเดียว จึงไม่ควรนำไปใส่ไว้ในสคริปต์หรือ Image
- บนเซิร์ฟเวอร์ ให้ติดตั้ง Sharkly CLI แล้วลงทะเบียนด้วยคำสั่ง:
sharkly computer register --install-token <install-token>
# Check it from any terminal
sharkly computer list
sharkly computer ping <computer-id> <runtime-id>
- รอจนกระทั่งสถานะของ Computer แสดงเป็นออนไลน์ จากนั้นตรวจสอบว่ามี Runtime พร้อมใช้งานอย่างน้อยหนึ่งรายการ
เอกสารประกอบการใช้งาน Computers มีรายละเอียดครอบคลุมแพ็กเกจสำหรับ Linux (AppImage, deb, tar.gz) รวมถึงการตรวจสอบ Runtime และหากต้องการคำแนะนำอย่างละเอียดในการตัดสินใจเลือกระหว่างการใช้เซิร์ฟเวอร์หรือแล็ปท็อป สามารถอ่านเพิ่มเติมได้ที่ การรัน Coding Agent จากระยะไกล และ คู่มือการใช้งาน Computers ใน Sharkly
วิธีแก้ที่ 3: จัดคิวงานแทนที่จะปล่อยให้ล้มเหลว
แม้จะเป็น Computer ที่เปิดทิ้งไว้ตลอดเวลา แต่เครื่องก็อาจมีการรีสตาร์ตเพื่ออัปเดตหรือสัญญาณ Wi-Fi หลุดได้เป็นครั้งคราว วิธีแก้ปัญหาสุดท้ายนี้จะช่วยให้ช่องว่างช่วงสั้น ๆ เหล่านั้นทำให้คุณเสียเวลาเพียงไม่กี่นาที แทนที่จะเสียไปทั้งคืน เพราะเราต้องการให้งานเข้าคิวรอจนกว่า Computer จะพร้อม ไม่ใช่ล้มเหลวเพียงเพราะเครื่องไม่ได้ออนไลน์อยู่ในวินาทีที่งานถูกส่งเข้ามา
นี่คือจุดที่ระบบคิว (Queue) เข้ามามีบทบาทสำคัญ ใน Sharkly เมื่อคุณมอบหมายงานให้กับ Agent ระบบจะส่งงานนั้นไปยัง Computer และ Runtime ของ Agent ตัวดังกล่าว ซึ่งตามเอกสารระบุไว้ว่า:
- หาก Computer ออฟไลน์อยู่ งานที่สั่งใหม่มักจะรอจนกว่าเครื่องจะเชื่อมต่อกลับเข้ามา
- หาก Computer ขาดการเชื่อมต่อไปก่อนที่งานจะถูกส่งออกไป งานนั้นจะยังคงรออยู่ในคิว
- Computer แต่ละเครื่องมีขีดจำกัดการทำงานพร้อมกัน (Concurrency limit) งานที่เกินขีดจำกัดจะอยู่ในสถานะ Queued เพื่อรอคิว
- เมื่อใช้งานไดเรกทอรีชั่วคราวหรือ Git worktree แบบแยกส่วน ขีดจำกัดการทำงานพร้อมกันเริ่มต้นของ Agent จะอยู่ที่ 50% ของขีดจำกัดบน Computer เครื่องนั้น

ดังนั้น รูปแบบการทำงานข้ามคืนจึงเป็นดังนี้: ก่อนเลิกงาน คุณสร้างงานทิ้งไว้ 5 งานแล้วมอบหมายให้ Agent บน Mac mini จัดการ ตัวเครื่อง Computer จะรันงานตามจำนวนสูงสุดที่กำหนดไว้ ส่วนงานที่เหลือจะรออยู่ในสถานะ Queued แล้วคุณค่อยมาตรวจผลลัพธ์ในตอนเช้า งานที่ผูกกับที่เก็บโค้ด (Repository) แต่ละงานสามารถสร้าง Worktree แยกใหม่ได้ ทำให้งานที่รันพร้อมกันไม่ไปแก้ไขทับซ้อนกันใน Checkout เดียวกัน ส่วนคำถามที่ว่าควรรันพร้อมกันกี่ตัว สามารถดูได้ที่บทความ วิธีรัน AI coding agent 10 ตัวพร้อมกัน
ข้อจำกัด 2 ข้อที่คุณควรรู้ไว้คือ ในเอกสารไม่ได้การันตีว่างานที่กำลังรันอยู่จะกลับมาทำงานต่อได้เองหลังจากที่ Computer หลุดการเชื่อมต่อ และงานที่ถูกยกเลิกไปแล้วจะไม่สามารถรันต่อจากจุดเดิมได้ เมื่อพบว่ามีงานค้าง ให้เปิดเข้าไปดูงานนั้น ตรวจสอบสถานะการรัน (Run state) แล้วกดสั่งทำงานใหม่ (Retry) หรือเขียนคอมเมนต์ติดตามผล ส่วนงานที่ตั้งเวลาอัตโนมัติ (Automations) เอกสารระบุสถานะ Skipped เอาไว้ แต่ไม่ได้ระบุชัดเจนว่าจะจัดการอย่างไรหาก Computer ออฟไลน์อยู่ ดังนั้นจึงควรทดสอบกำหนดเวลาของคุณด้วยปุ่ม Run now ดูก่อนที่จะปล่อยให้ทำงานข้ามคืน
สิ่งที่ยังจำเป็นต้องใช้แล็ปท็อปของคุณอยู่
การย้ายเอเจนต์ออกจากแล็ปท็อปไม่ได้แปลว่าจะย้ายทุกอย่างออกไปได้หมด งานเหล่านี้ยังคงต้องทำบน Local Computer:
- Specified directories. การรันงานในโฟลเดอร์ใดโฟลเดอร์หนึ่งบนเครื่องเพื่อใช้งานไฟล์เดิมที่มีอยู่แล้ว สามารถทำได้เฉพาะบน Local Computer เท่านั้น
- Prevent sleep. สวิตช์นี้จะแสดงเฉพาะบนเครื่องปัจจุบันในแอปเดสก์ท็อปเท่านั้น
- Local-only credentials and files. หากงานนั้นจำเป็นต้องใช้ VPN, Private key หรือไฟล์ที่อยู่เฉพาะบนแล็ปท็อปของคุณ เซิร์ฟเวอร์จะไม่สามารถเข้าถึงได้ ให้คัดลอกเฉพาะข้อมูลที่ปลอดภัยไปไว้ที่เซิร์ฟเวอร์ หรือไม่ก็รันงานนั้นบนเครื่องของคุณต่อไปแล้วใช้วิธีแก้ที่ 1 แทน
ส่วนงานอื่น ๆ ทั้งหมด ตั้งแต่การรีแฟกเตอร์โค้ด, การรันชุดทดสอบ ไปจนถึงการอัปเกรดเวอร์ชัน Dependency และการอัปเดตเอกสาร สามารถทำงานบนเครื่องที่ไม่ต้องปิดฝาจอได้อย่างราบรื่น สำหรับค่าใช้จ่ายของโมเดลจะยังคงเรียกเก็บตามแพ็กเกจของ Claude Code, Codex หรือ API ที่ผูกไว้กับ Computer เครื่องนั้น เนื่องจาก Sharkly ไม่ได้จำหน่ายโทเค็น และหากคุณกังวลเรื่องค่าใช้จ่าย สามารถอ่านบทความเปรียบเทียบทางเลือกต่าง ๆ ได้ที่ การรัน AI agent ฟรี และ Codex บนคลาวด์เทียบกับ Computer ของคุณเอง
บทสรุป
แล็ปท็อปมีโหมดสลีป และเอเจนต์ก็จะหยุดทำงานตามไปด้วย สำหรับการรันงานช่วงบ่ายสั้น ๆ ให้ครอบคำสั่งเอเจนต์ด้วย caffeinate หรือเปิดสวิตช์ Prevent sleep เอาไว้ ส่วนงานที่ต้องรันข้ามคืน ให้ย้ายเอเจนต์ไปไว้บน Computer ที่เปิดทิ้งไว้ตลอดเวลา และสำหรับงานสำคัญที่คุณต้องพึ่งพา ให้ตั้งระบบคิวไว้ด้านหน้า เพื่อให้การรีบูตเครื่องหรือเน็ตหลุดกลายเป็นการรอคิวเพียงครู่เดียว แทนที่จะทำให้งานล้มเหลวไปทั้งหมด
ก้าวต่อไปของคุณ: นำคอมพิวเตอร์เครื่องสำรองมาเชื่อมต่อเป็น Computer สักหนึ่งเครื่อง มอบหมายงานให้สองงานในคืนนี้ แล้วพับหน้าจอแล็ปท็อปของคุณลงได้เลย Sharkly เปิดให้เริ่มต้นใช้งานฟรี และ เอกสารประกอบการใช้งาน Computers จะพาคุณไปดูทีละขั้นตอน ตั้งแต่การสร้าง Install token ไปจนถึงการรันงานแรก
คำถามที่พบบ่อย (FAQ)
ทำไม AI agent ถึงหยุดทำงานเมื่อแล็ปท็อปเข้าสู่โหมดสลีป?
โหมดสลีปจะระงับการทำงานของทุกโปรเซสและตัดการเชื่อมต่อเครือข่าย เมื่อเอเจนต์ถูกระงับการทำงานจึงไม่สามารถเชื่อมต่อไปยัง API ของโมเดลได้ ส่งผลให้การทำงานหยุดชั่วคราว เกิดข้อผิดพลาด หรือค้างไปเมื่อแล็ปท็อปตื่นขึ้นมา
จะเปิด Claude Code ให้รันข้ามคืนบน Mac ได้อย่างไร?
ให้เสียบสายชาร์จและรันคำสั่งภายใต้ caffeinate -is เพื่อให้ Mac ตื่นอยู่ตลอดเวลาจนกว่าเอเจนต์จะทำงานเสร็จ และหากต้องการพับหน้าจอลง คุณจะต้องใช้งานในโหมดปิดจอแสดงผล (Closed-display mode) ด้วย แต่สำหรับงานที่ต้องรันข้ามคืนเป็นประจำ การใช้ Computer ที่เปิดทิ้งไว้ตลอดเวลาย่อมมีความเสถียรและไว้วางใจได้มากกว่า
caffeinate ช่วยป้องกันไม่ให้เครื่องสลีปเวลาพับหน้าจอได้หรือไม่?
ไม่ได้ การพับหน้าจอจะทำให้ MacBook เข้าสู่โหมดสลีปเสมอ เว้นแต่จะใช้งานในโหมด closed-display ซึ่งต้องเสียบสายชาร์จ ต่อจอภาพภายนอก รวมถึงคีย์บอร์ดและเมาส์ภายนอกไว้
จะเกิดอะไรขึ้นกับงานใน Sharkly หาก Computer ออฟไลน์?
โดยปกติแล้ว งานใหม่จะรอจนกว่า Computer จะเชื่อมต่อกลับเข้ามา และงานที่ยังไม่ได้ถูกส่งออกไปก็จะยังคงรออยู่ในคิว แต่หากขาดการเชื่อมต่อไปเป็นเวลานาน ควรตรวจสอบสถานะการรัน (Run state) ของงานนั้นด้วย เพราะในเอกสารไม่ได้การันตีว่างานที่กำลังรันค้างอยู่จะสามารถทำงานต่อได้เอง
สามารถรัน Coding Agent บนเซิร์ฟเวอร์ Linux ได้หรือไม่?
ได้แน่นอน เพียงติดตั้ง CLI ของเอเจนต์และ Sharkly CLI บนเซิร์ฟเวอร์ จากนั้นลงทะเบียนด้วย Install token เครื่องเซิร์ฟเวอร์ก็จะปรากฏเป็น Computer พร้อม Runtime ที่ตรวจพบให้ใช้งานได้ทันที



