An toàn runtime khi chạy AI agent qua đêm trên Mac

Bạn khởi chạy một AI agent trước khi đi ngủ — một coding assistant dựng tính năng, một batch inference, hoặc một chuỗi build dài — rồi thức dậy gặp pin cạn hoặc máy nóng đến mức không dám chạm. Những lần chạy không có người giám sát để lại hậu quả thực: pin hao mòn nhanh do xả sâu liên tục, hiệu suất sụt do nhiệt kéo dài, hoặc một job bị treo ngốn CPU hàng giờ mà chẳng làm được gì. An toàn runtime không phải là lời hứa — là các giới hạn cứng: một ngưỡng pin tối thiểu, một trần nhiệt độ, và thứ gì đó theo dõi đúng tiến trình đã khởi chạy.
Rủi ro thực tế của các phiên AI agent chạy qua đêm không giám sát
Một phiên Ollama qua đêm, một Claude Code agent dựng cả một tính năng, một build pipeline chạy lại sau mỗi lần thay đổi file — các workload này có chung một điểm: không ai ngồi trông. Khi không có người giám sát, cơ chế idle-sleep mặc định của macOS sẽ kích hoạt, nhưng nó không đặt giới hạn cứng cho mức pin hay nhiệt độ CPU kéo dài. Job cứ chạy cho đến khi xong, hoặc cho đến khi Mac tự tắt.
Thiệt hại pin tích lũy theo thời gian. Sạc MacBook từ gần cạn lặp đi lặp lại sẽ ăn mòn chu kỳ sạc nhanh hơn nhiều so với sạc từ mức 40–80%. Một lần xả sâu xuống 0% hiếm khi ngay lập tức gây hại; nhưng nếu thành thói quen vài tuần thì sẽ tăng tốc suy giảm dung lượng pin. Nguy hiểm tức thì hơn là một agent bị treo — một prompt loop, một API timeout không tự retry, một build chờ cổng bị khóa — ngốn CPU đều đặn 60–70% hàng giờ trong khi bạn ngủ, không hoàn thành, cũng không hiện lỗi.
Rủi ro nhiệt độ trên MacBook một phần do macOS tự xử lý, một phần phụ thuộc vào môi trường vật lý. Chip sẽ tự throttle, nhưng throttle nghĩa là phiên chạy dài hơn, nóng hơn — không phải an toàn hơn. MacBook đặt trên bề mặt mềm với lỗ thoát nhiệt bị chặn, hoặc chạy nắp đóng với luồng khí kém, khiến nhiệt tập trung vào một vùng nhỏ. Không phần mềm nào thay đổi được thực tế vật lý đó. Guardrail giúp bạn duy trì trong vùng an toàn hơn của dải hoạt động — chúng không làm được gì để vượt qua quy luật vật lý.
Bảo vệ pin: tại sao ngưỡng pin tối thiểu quan trọng
Ngưỡng pin tối thiểu là một điểm dừng cứng: khi mức pin xuống dưới ngưỡng bạn đặt, job kết thúc, máy quay về chế độ sleep mặc định, và bạn thức dậy với Mac vẫn còn pin. Sự khác biệt giữa mức cắt 10% và 25% rất đáng kể. Ở 10%, một CPU spike ngắn hay phản ứng quạt chậm có thể đẩy máy vào vùng macOS buộc tắt khẩn cấp mà không cảnh báo. Ở 25–30%, bạn có runway — đủ pin để dừng sạch và có đệm trước những tải đột biến không lường trước.
Tính năng auto-stop pin của LidRun theo dõi mức pin qua IOKit và dừng power assertion khi vượt ngưỡng đặt. Với các phiên qua đêm chỉ chạy bằng pin — không cắm điện — 25% là ngưỡng hợp lý cho hầu hết MacBook. Nếu workload hay spike (inference model lớn, biên dịch nặng), 30% cho thêm biên an toàn. Cắm AC loại bỏ lo ngại cạn pin trực tiếp, nhưng ngưỡng vẫn bảo vệ trường hợp adapter bị rút giữa chừng.
Với bất kỳ session nào kéo dài hơn hai giờ, hãy cắm điện trước. CPU load cao kéo dài trên pin sẽ rút ngắn chu kỳ sạc nhanh hơn nhiều so với cùng mức load trên AC. Đây không phải khuyến cáo riêng của LidRun — đây là bảo dưỡng phần cứng cơ bản. Thông báo tình trạng pin trên macOS phản ánh điều này; những lần xả sâu lặp đi lặp lại khiến cảnh báo xuất hiện sớm hơn trên các máy dùng nặng cho compute. Khi có thể, hãy cắm sạc cho các phiên agent work qua đêm.
Hướng dẫn liên quanHướng dẫn an toàn chạy MacBook khi đóng nắpBảo vệ nhiệt độ: điều Mac báo cho bạn và điều không
macOS cung cấp trạng thái nhiệt độ qua ProcessInfo.thermalState: nominal, fair, serious, critical. LidRun đọc tín hiệu này và có thể dừng assertion khi trạng thái đạt 'serious'. Vấn đề nằm ở độ phân giải: 'serious' bao phủ một dải nhiệt độ rộng, và hệ thống chỉ chuyển sang 'critical' khi đã throttle nặng rồi. Khi API trả về 'critical', clock speed đã giảm từ trước. Dừng ở 'serious' là trigger hữu dụng hơn — nó bắt được quá trình leo nhiệt trước khi đến giai đoạn tệ nhất.
Tốc độ quạt và dữ liệu cảm biến SMC có thể đọc được trên Intel Mac và một số cấu hình Apple Silicon. Trên Apple Silicon, điều khiển quạt chủ yếu do platform controller quản lý và không mở ra theo cách tương tự như Intel. LidRun đọc số liệu quạt như tín hiệu giám sát trên phần cứng tương thích; nó không thể ép quạt quay nhanh hơn trên các chip mà đường điều khiển đó bị khóa. Biết quạt đang ở 4.200 RPM cho bạn biết hệ thống đang hoạt động ở công suất cao. Có nên tiếp tục hay không phụ thuộc vào xu hướng thermal state và điều kiện vật lý — không chỉ từ một metric duy nhất.
Guardrail phần mềm là lớp phòng vệ thứ hai. Lớp đầu tiên là vật lý: bề mặt cứng phẳng, lỗ thoát nhiệt thông thoáng, nắp mở khi có thể. Chạy nắp đóng tập trung nhiệt nhiều hơn nắp mở — điều này cần hiểu rõ trước khi bạn cài đặt workflow clamshell qua đêm. Một laptop stand có khoảng trống phía dưới, hoặc đơn giản là nâng máy lên chút, tạo ra sự khác biệt đáng kể. Chạy job compute dài trong túi hay không gian kín là cấu hình rủi ro nhất — không phần mềm nào thoát khỏi được cái bẫy nhiệt đó.
Xây dựng defaults an toàn cho agent work qua đêm
Với một phiên AI agent qua đêm điển hình trên Mac dev, đây là cấu hình khởi đầu hợp lý: battery floor ở 25–30%, thermal stop ở 'serious' hoặc cao hơn, session timer đặt 8 giờ hoặc đủ dài cho đến khi bạn thức dậy. Session timer thường bị bỏ qua. Nó xử lý trường hợp agent bị treo từ giờ thứ hai nhưng keep-awake assertion vẫn giữ máy thức cho đến sáng — ngốn pin và sinh nhiệt cho một tiến trình đã không làm gì có ích từ mấy tiếng trước.
Tính năng phát hiện tiến trình của LidRun cho phép liên kết keep-awake assertion với một tiến trình cụ thể — Claude Code, Ollama, hoặc một script Python tùy chỉnh. Khi tiến trình đó thoát, assertion tự động tắt. Cách này gọn hơn timer cố định vì khớp đúng với thời lượng thực của workload, thay vì ước tính theo trường hợp xấu nhất. Kết hợp với session timer làm giới hạn trên: assertion kết thúc khi tiến trình thoát, hoặc sau N giờ — cái nào đến trước.
Push notification qua ntfy.sh hoặc Pushover khép vòng phản hồi. Khi agent chạy qua đêm, một thông báo lúc nó dừng — dù do hoàn thành, pin thấp hay nhiệt độ — nghĩa là bạn biết lúc 3 giờ sáng thay vì phát hiện máy nguội ngắt còn 12% pin khi ăn sáng. Với những job xong trong hai hoặc ba tiếng, phản hồi này quan trọng: bạn có thể kiểm tra và kick off giai đoạn tiếp theo, thay vì mất nửa ngày vì một phiên chạy đã treo từ lâu.
Với các phiên ngắn, có người theo dõi, caffeinate và một terminal mở là đủ. LidRun thêm giá trị ở sự kết hợp: battery floor cộng thermal stop cộng process-linked assertion cộng notifications, quản lý từ menu bar mà không cần giữ terminal mở. Sự an toàn đến từ cả stack guardrail, không từ một tính năng đơn lẻ. Cài đặt một lần, để Mac chạy, và để các giới hạn tự làm phần việc của chúng.
Tính năng của LidRun's keep-awake engine.
LidRun giữ công việc của bạn chạy tiếp khi đóng nắp, với cơ chế bảo vệ pin và nhiệt tích hợp sẵn.
Câu hỏi thường gặp
Tùy vào thiết lập. Cắm AC, đặt máy trên bề mặt cứng phẳng với luồng khí thông thoáng, kết hợp battery floor và session timer sẽ giảm rủi ro đáng kể. Chỉ dùng pin không có guardrail, đặt trên bề mặt mềm hay nắp đóng trong không gian kín thì rủi ro nhiệt và pin đều tăng. Không phần mềm nào biến compute qua đêm không giám sát thành việc có giới hạn an toàn cố định — mục tiêu là duy trì trong vùng an toàn hơn của dải hoạt động và nhận thông báo khi giới hạn bị chạm tới.
25–30% là ngưỡng thực tế cho hầu hết MacBook chạy bằng pin. Dưới 20%, một CPU spike bất ngờ có thể đẩy máy vào vùng macOS buộc tắt khẩn cấp không cảnh báo. Ở 25–30%, bạn còn đủ pin để dừng an toàn và có đệm trước các tải đột biến. Trên AC, lo ngại cạn pin trực tiếp giảm đi, nhưng battery floor vẫn bảo vệ trường hợp adapter bị rút giữa chừng — nên giữ ngưỡng này ngay cả khi đang cắm điện.
Nhiệt tích lũy nhanh hơn khi nắp đóng vì màn hình không còn đóng vai trò tản nhiệt thụ động nữa. macOS sẽ throttle chip khi nhiệt độ leo thang, nhưng throttle nghĩa là phiên chạy chậm hơn, nóng hơn, kéo dài hơn — không phải an toàn hơn. Đặt máy trên bề mặt cứng phẳng, lỗ thoát nhiệt thông thoáng, tốt nhất là cắm điện, sẽ giảm rủi ro. Nắp đóng trên bề mặt mềm hay trong túi là cấu hình rủi ro nhất; guardrail phần mềm không bù được khi luồng khí bị cắt hoàn toàn.
LidRun theo dõi mức pin và thermal state qua IOKit và macOS API, rồi tự dừng power assertion khi bất kỳ giới hạn nào bị vượt. Nó cũng hỗ trợ process-linked assertion — keep-awake tắt tự động khi agent process thoát — cùng session timer làm giới hạn trên cứng và push notification để bạn biết khi nào phiên dừng và vì sao. Các guardrail này giúp giảm nguy cơ thức dậy gặp pin cạn hay Mac bị throttle; chúng không phải bảo đảm tuyệt đối, và thiết lập vật lý vẫn là yếu tố then chốt.