ทำให้ Mac หรือพีซีไม่เข้าโหมดพักเครื่องขณะเอเจนต์เขียนโค้ดทำงาน
ป้องกันไม่ให้ Mac หรือพีซี Windows เข้าโหมดพักเครื่องขณะเอเจนต์เขียนโค้ดทำงานที่ใช้เวลานาน ด้วย caffeinate หรือการตั้งค่าโหมดพัก แล้วคืนค่าเดิมเมื่องานเสร็จ
หากต้องการให้ Mac ไม่พักเครื่องขณะเอเจนต์เขียนโค้ดทำงาน ให้เปิดเทอร์มินัล รัน caffeinate -i แล้วเปิดหน้าต่างนั้นไว้จนกว่างานจะเสร็จ บน Windows 11 ให้ตั้งเวลาเข้าโหมดสลีปขณะเสียบปลั๊กในการตั้งค่าเป็น “ไม่เลย” (Never) แล้วตั้งกลับหลังงานเสร็จ ถ้าเป็นแล็ปท็อป ให้เสียบอะแดปเตอร์ไฟและเปิดฝาไว้
คู่มือนี้ครอบคลุม macOS และ Windows 11 แต่ไม่รวมการใช้แล็ปท็อปแบบปิดฝา Mono by Reunified ทำให้ Mac ไม่พักเครื่องขณะเอเจนต์ทำงานได้ แต่ขั้นตอนเหล่านี้ใช้ได้กับเอเจนต์ทุกตัว
1. รู้ว่าโหมดพักเครื่องส่งผลต่อเซสชันของเอเจนต์อย่างไร
โหมดพักเครื่องหยุดทุกโปรแกรมไว้ชั่วคราว รวมถึงเอเจนต์ และตัดการเชื่อมต่อเครือข่ายของโปรแกรมเหล่านั้น เซสชันอาจกลับมาทำงานต่อได้ไม่สมบูรณ์
- การพักจอภาพแค่ปิดหน้าจอ โปรแกรมยังทำงานต่อ
- การพักเครื่องเมื่อไม่ได้ใช้งานจะทำให้คอมพิวเตอร์เข้าโหมดพักเมื่อไม่มีการป้อนข้อมูลมาระยะหนึ่ง เอเจนต์ที่กำลังทำงานไม่นับเป็นการป้อนข้อมูล
- การปิดฝาแล็ปท็อปมักทำให้เครื่องเข้าโหมดพัก ไม่ว่าจะตั้งเวลาไม่ได้ใช้งานไว้อย่างไร
- การปิดเครื่องหรือรีสตาร์ตจะทำให้เซสชันจบลง
อย่าหวังว่าโทรศัพท์จะปลุกคอมพิวเตอร์ที่พักเครื่องหรือปิดอยู่ได้
ตัวอย่างสมมติ: ก่อนออกไปกินข้าวเที่ยง คุณปล่อยให้เอเจนต์อัปเกรด dependency และรันการทดสอบในโปรเจกต์ “tidy-recipes” เป็นงานประมาณ 40 นาทีบน MacBook Air ที่เสียบสายไฟอยู่
2. ใช้ caffeinate ให้ Mac ไม่พักเครื่องตลอดงานหนึ่งงาน
caffeinate มีมาในตัว macOS เมื่อใช้กับ -i จะป้องกันการพักเครื่องเมื่อไม่ได้ใช้งานตลอดเวลาที่คำสั่งทำงานอยู่ เมื่อหยุดคำสั่ง การตั้งค่าปกติของคุณจะกลับมามีผล
| คำสั่ง | ผล |
|---|---|
caffeinate -i |
ไม่พักเครื่องจนกว่าคุณจะหยุดด้วย Control-C |
caffeinate -i <command> |
รันคำสั่งนั้น และไม่พักเครื่องจนกว่าคำสั่งจะจบ |
caffeinate -i -t 3600 |
ไม่พักเครื่องเป็นเวลา 3,600 วินาที (หนึ่งชั่วโมง) |
caffeinate -i -w <pid> |
ไม่พักเครื่องจนกว่าโปรเซสนั้นจะจบ |
caffeinate -d |
เปิดจอภาพค้างไว้ |
เอเจนต์ของ tidy-recipes ทำงานในแอปเดสก์ท็อป คุณจึงเริ่มเอเจนต์ผ่าน caffeinate ไม่ได้ แต่รัน caffeinate -i -t 3600 แทน คือให้เวลาหนึ่งชั่วโมงสำหรับงาน 40 นาที แล้วเปิดหน้าต่างเทอร์มินัลนั้นทิ้งไว้ คอลัมน์ PID ในแอปตัวตรวจสอบกิจกรรมบอกหมายเลขที่ใช้กับ -w และ man caffeinate แสดงตัวเลือกทั้งหมด
3. เปลี่ยนการตั้งค่าการพักเครื่องของ Mac สำหรับเซสชันที่นานกว่า
ถ้าเอเจนต์ทำงานครั้งละหลายชั่วโมงหรือทำงานทุกวัน ให้เปลี่ยนการตั้งค่าแทน คู่มือการตั้งค่าการพักและปลุกเครื่องของ Apple บอกตำแหน่งไว้ดังนี้:
- แล็ปท็อป: “การตั้งค่าระบบ > แบตเตอรี่ > ตัวเลือก” แล้วเปิด “ป้องกันไม่ให้พักเครื่องโดยอัตโนมัติเมื่อจอภาพปิดอยู่ขณะใช้อะแดปเตอร์แปลงไฟ”
- เดสก์ท็อป: “การตั้งค่าระบบ > พลังงาน” แล้วเปิด “ป้องกันไม่ให้พักเครื่องโดยอัตโนมัติเมื่อจอภาพปิดอยู่”
Apple ระบุว่าการป้องกันการพักเครื่องอาจทำให้ใช้พลังงานมากขึ้น ส่วน “พร้อมสำหรับการเข้าถึงผ่านทางเครือข่าย” แค่ให้ Mac ตื่นชั่วครู่เพื่อให้บริการที่แชร์ไว้ ตัวเลือกนี้ไม่ได้ทำให้เอเจนต์ทำงานต่อไปได้
ใน Mono บน Mac เมนู “การตั้งค่า > Code” มี “ไม่ให้เครื่องหลับขณะเอเจนต์ทำงาน” ซึ่งเปิดอยู่โดยค่าเริ่มต้น ตัวเลือกนี้เลื่อนการพักเครื่องเมื่อไม่ได้ใช้งานออกไปจนกว่าเอเจนต์จะทำงานในรอบนั้นเสร็จ การปิดฝายังทำให้ Mac เข้าโหมดพักอยู่ดี ส่วน “ทำงานต่อขณะล็อกหน้าจอ” ซึ่งเปิดอยู่โดยค่าเริ่มต้นเช่นกัน ให้เซสชันที่เปิดอยู่ทำงานต่อได้ขณะที่หน้าจอล็อก Mono ไม่มีการตั้งค่าเรื่องการพักเครื่องบน Windows
4. ทำให้พีซี Windows ไม่เข้าโหมดสลีป
ใน Windows 11 ให้เปิด “เริ่มต้น > การตั้งค่า > ระบบ > พลังงาน & แบตเตอรี่ > การหมดเวลาของหน้าจอ โหมดสลีป & ไฮเบอร์เนต” ตามที่คู่มือการตั้งค่าพลังงานของ Microsoft แสดงไว้ บนเครื่องเดสก์ท็อป หน้านี้อาจชื่อ “พลังงาน” (Power)
ใต้ “ทำให้อุปกรณ์ของฉันเข้าสู่โหมดสลีปหลังจาก” ให้จดค่าตอนเสียบปลั๊กไว้ แล้วตั้งเป็น “ไม่เลย” (Never) หรือเวลาที่นานกว่างานมาก
วันถัดมา คุณรันงานคล้ายกันที่ใช้เวลา 40 นาทีบน “den-pc” ซึ่งเป็นเดสก์ท็อป Windows ที่เข้าโหมดสลีปหลังจาก 30 นาที เวลานี้สั้นกว่างาน คุณจึงจดค่า 30 นาทีไว้แล้วเลือก “ไม่เลย”
หากต้องการตั้งเวลากลับจากเทอร์มินัลในภายหลัง powercfg รับค่าเป็นนาที: powercfg /change standby-timeout-ac 30
5. เตรียมงานยาวที่จะปล่อยให้รันทิ้งไว้
กรอกตารางนี้ก่อนออกไป
| สิ่งที่ตรวจ | MacBook Air | den-pc (Windows) |
|---|---|---|
| ไฟและฝาเครื่อง | เสียบอะแดปเตอร์ เปิดฝา | เดสก์ท็อป เสียบปลั๊ก |
| สิ่งที่ทำให้ไม่พักเครื่อง | caffeinate -i -t 3600 |
ตั้งโหมดสลีปเป็น “ไม่เลย” |
| ค่าที่ต้องคืน | ไม่มี | 30 นาที |
| ติดตั้งอัปเดตแล้ว ไม่มีการรีสตาร์ตค้างอยู่ | ใช่ | ใช่ |
| เอเจนต์ทำงานอยู่ ทดสอบการแจ้งเตือนแล้ว ชาร์จโทรศัพท์แล้ว | ใช่ | ใช่ |
ดูขั้นตอนแรกของเอเจนต์ไว้ เพื่อไม่ให้งานไปค้างอยู่ที่หน้าขอให้ลงชื่อเข้าใช้หรือติดเพราะขาดเครื่องมือ ตั้งการแจ้งเตือนของเอเจนต์เขียนโค้ดไว้สำหรับตอนที่ทำงานเสร็จหรือรอการอนุมัติ และใช้คู่มือเขียนโค้ดจากระยะไกลเพื่อติดตามงานจากโทรศัพท์
6. คืนค่าการตั้งค่าเมื่องานเสร็จ
- หยุด
caffeinateด้วย Control-C หรือปล่อยให้หมดเวลาเอง - ปิดตัวเลือกการพักเครื่องของ Mac ที่คุณเปิดไว้
- บน Windows ให้คืนค่าเวลาเข้าโหมดสลีปที่จดไว้ (30 นาทีบน den-pc)
จากนั้นตรวจว่าไม่มีอะไรที่ยังกันไม่ให้คอมพิวเตอร์พักเครื่อง บน Mac ให้รัน pmset -g assertions ในเทอร์มินัล แล้วดูใต้ส่วน “Listed by owning process” ไม่ควรมี caffeinate อยู่ แต่รายการของเสียงหรือของระบบถือเป็นเรื่องปกติ บน Windows ให้รัน powercfg /requests ในเทอร์มินัลที่เปิดในฐานะผู้ดูแลระบบ คำสั่งนี้แสดงแอปและไดรเวอร์ที่ทำให้จอภาพเปิดค้างหรือทำให้คอมพิวเตอร์ไม่พักเครื่อง
สุดท้าย ให้ตรวจการเปลี่ยนแปลงของเอเจนต์ก่อน commit อะไรก็ตาม Mono ยังไม่เปิดให้ใช้ แต่คุณเข้าร่วมรายชื่อรอได้
