Giữ Codex chạy xuyên đêm trên Mac

Giữ cho Codex chạy xuyên đêm trên Mac nghĩa là phải chặn hai kiểu ngủ khác nhau — idle sleep (ngủ do không thao tác) và clamshell sleep (ngủ khi gập nắp) — mà không để laptop nóng lên trong túi trong lúc bạn ngủ. Nửa đầu, chặn idle sleep, thì miễn phí: caffeinate đã có sẵn trong macOS. Nửa còn lại, chặn clamshell sleep, cần đến pmset disablesleep — một công tắc toàn hệ thống rất dễ quên bật rồi để đó. LidRun gộp cả hai vào một công tắc duy nhất, cộng thêm các lớp bảo vệ về pin và nhiệt độ tự động nhả khi cần, nên lời hứa ở đây là: agent còn chạy → giữ máy thức, agent xong hoặc mất an toàn → nhả và cho máy ngủ — chứ không phải một khóa giữ thức vô điều kiện.
Vì sao một phiên Codex chạy xuyên đêm bị khựng lại
macOS được thiết kế để cho một laptop không hoạt động đi vào giấc ngủ. Sau khi hết thời gian idle, hoặc ngay khi bạn gập nắp máy, hệ thống sẽ suspend — và mọi tiến trình đang chạy cũng suspend theo, kể cả Codex.
Không có gì bị mất khi điều đó xảy ra. Agent dừng lại đúng ở chỗ nó đang làm và chờ lần thức tiếp theo. Nhưng một tác vụ Codex kéo dài nhiều giờ mà bạn muốn xong vào sáng hôm sau giờ mới chạy được vài phút, còn cả đêm thì đã trôi qua.
Có hai cơ chế khác nhau gây ra chuyện này, và mỗi cái cần một cách xử lý riêng. Idle sleep tự kích hoạt theo bộ đếm giờ riêng của nó, bất cứ khi nào bạn rời máy mà vẫn mở nắp. Clamshell sleep (ngủ khi gập nắp) là chuyện khác — nó kích hoạt chỉ trong vài giây sau khi gập nắp, bất kể bộ đếm giờ đang ở đâu. Giữ Codex sống xuyên đêm nghĩa là phải xử lý cả hai, và đây chính là chỗ mà một lệnh caffeinate chạy đơn độc âm thầm bỏ sót mất một nửa vấn đề.
Cách miễn phí: caffeinate cho idle sleep, pmset cho chuyện gập nắp
caffeinate đã có sẵn trong macOS, không cần cài thêm gì. Cứ đặt nó trước lệnh bạn vẫn dùng để khởi chạy Codex — caffeinate -i codex — hoặc nếu Codex đã chạy rồi thì trỏ nó vào tiến trình hiện có bằng caffeinate -i -w $(pgrep -x codex). Dù theo cách nào, nó cũng giữ cùng một IOKit assertion, PreventUserIdleSystemSleep (đó là thứ mà flag -i yêu cầu), để chặn idle sleep, và tự động gỡ bỏ ngay khi tiến trình codex kết thúc. Đó là một cách khắc phục thật sự, miễn phí, cho nửa vấn đề khi mở nắp trong một phiên chạy xuyên đêm.
Nửa còn lại — khi gập nắp — cần một công cụ khác, vì caffeinate không đụng gì đến clamshell sleep cả: gập nắp vẫn khiến Mac suspend trong vài giây dù caffeinate đang chạy. Cách khắc phục được ghi trong tài liệu là sudo pmset -a disablesleep 1, lệnh này bảo macOS bỏ qua hoàn toàn công tắc nắp máy, và đây cũng chính là cơ chế gốc mà LidRun tự động hóa ở phía dưới. Nếu Mac đang cắm sạc và có kết nối màn hình ngoài, macOS đã tự bỏ qua clamshell sleep khi gập nắp, không cần bật gì thêm — nhưng điều đó chỉ có ích khi ngồi bàn làm việc, chứ không giúp gì cho một chiếc laptop gập nắp để trên bàn đầu giường.
Gộp lại, công thức xuyên đêm hoàn toàn miễn phí là: caffeinate -i codex trước khi bắt đầu chạy, sudo pmset -a disablesleep 1 trước khi gập nắp, và sudo pmset -a disablesleep 0 khi xong việc. Nó có hiệu quả. Điều nó không làm được là hiểu bất cứ điều gì về chính chiếc Mac bên dưới nó.
Hướng dẫn liên quanQuy trình làm việc đóng nắp MacBook cho developerGiới hạn của cách làm miễn phí
pmset disablesleep là một thiết lập áp dụng cho cả máy, tồn tại lâu dài, không hề gói gọn trong phiên chạy đêm nay. Nó không biết Codex đã xong lúc 2 giờ sáng — nó cứ giữ nguyên như bạn để lại, cho đến khi có gì đó đặt lại về 0, kể cả khởi động lại máy cũng không tự tắt. Quên mất lệnh tắt vào sáng hôm sau, và Mac sẽ vô tư giữ trạng thái thức dù gập nắp suốt cả ngày mà chẳng để làm gì.


Giới hạn tương tự cũng áp dụng cho các công cụ giữ máy thức có giao diện như Amphetamine, KeepingYouAwake, Caffeine, hay Lungo — một cách gọn gàng, miễn phí để chặn idle sleep ngay từ menu bar thay vì gõ lệnh terminal, và là lựa chọn ổn cho một phiên chạy mở nắp. Nhưng chúng dừng lại ở đúng bức tường mà caffeinate cũng gặp: không xử lý clamshell, không biết gì về pin hay nhiệt độ.
Quan trọng hơn, cả caffeinate, các công cụ giao diện, lẫn pmset đều không biết gì về pin hay nhiệt độ. Tất cả đều giữ Mac thức một cách vô điều kiện. Nếu dây sạc bị tuột ra trong đêm, caffeinate vẫn giữ assertion cho đến khi pin cạn sạch. Nếu disablesleep đang bật và chiếc máy gập nắp lại bị vùi dưới chăn hay nhét trong túi, không có gì can thiệp khi nhiệt độ tăng lên — đó chính là cái giá của một khóa giữ thức "mù": đáng tin cậy, nhưng không có khái niệm khi nào nên dừng.
Khoảng trống đó — có cơ chế thật, nhưng không có ý thức an toàn — chính là thứ mà một phiên chạy xuyên đêm thực sự cần được lấp đầy.
Cách LidRun giữ Codex chạy xuyên đêm
Với idle sleep, LidRun giữ đúng assertion PreventUserIdleSystemSleep mà caffeinate cũng dùng — không có gì mới ở đây, đây là cơ chế đã quen thuộc.


Với chuyện gập nắp, LidRun tự động hóa cùng công tắc pmset disablesleep đó, nhưng chỉ xin quyền một lần qua hộp thoại admin gốc của macOS, và luôn ghép cặp bật-tắt cho nó: bật khi bạn bắt đầu một phiên Closed-Lid, tắt lại khi bạn dừng, khi bạn thoát app, và được đối chiếu lại ở lần khởi chạy tiếp theo nếu app từng crash giữa chừng — nên nó không thể bị bỏ lửng theo kiểu một lệnh terminal bị quên.
Riêng với Codex, Auto Mode đã có sẵn codex trong danh sách theo dõi mặc định — không cần gõ gì thêm. Nó kiểm tra danh sách tiến trình mỗi 10 giây; ngay khi codex không còn chạy nữa, khóa giữ thức được nhả ra và Mac lại được tự do ngủ theo bộ đếm giờ bình thường. Đó là phiên bản trung thực của lời hứa: agent còn chạy thì giữ thức; agent xong thì cho ngủ — chứ không phải một khóa giữ thức sống lâu hơn cả thứ nó vốn được tạo ra để giữ.
Các lớp bảo vệ mới là phần thêm vào thực sự so với cách làm miễn phí. Battery auto-stop mặc định ở 20% và bạn có thể chỉnh, nhưng còn có một ngưỡng sàn cứng — khoảng 4% — luôn kích hoạt bất kể bạn đặt gì, để một phiên chạy không thể rút cạn pin về 0. Về nhiệt độ, LidRun đọc nhiệt độ SMC thực và mức throttle của CPU thay vì chỉ dựa vào API thermal-state thô của hệ thống, coi Mac là đang chịu áp lực thật khi ở khoảng 98°C hoặc throttle xuống dưới 50%, và lùi lại khi ở khoảng 100°C hoặc throttle dưới 30%. Không có gì ở đây khẳng định một chiếc máy gập nắp sẽ không nóng lên qua đêm — nó vẫn có thể nóng, vì gập nắp vốn giữ nhiệt lại theo thiết kế — các lớp bảo vệ này tồn tại để nhả trước khi chuyện đó biến thành một lần tắt máy do quá nhiệt, chứ không hứa rằng nó sẽ không bao giờ đến gần mức đó.
Thiết lập một phiên Codex xuyên đêm trong LidRun
Bật Auto Mode. Codex đã có sẵn trong danh sách theo dõi mặc định, nên không cần cấu hình gì trước khi bắt đầu — cứ khởi chạy Codex, và LidRun sẽ nhận ra nó ở lần quét tiếp theo.


Nếu bạn định gập nắp máy, hãy bật thêm Closed-Lid mode. Đó là công tắc kích hoạt cặp bật-tắt pmset disablesleep cho phiên làm việc, rồi tự tắt lại khi phiên kết thúc.
Trong Settings, cứ để nguyên mức % battery auto-stop và thermal guard ở trạng thái bật — chúng mặc định bật là có lý do. Nếu bạn muốn giới hạn cả phiên trong một khoảng thời gian cố định thay vì để mở, Timer mode làm đúng việc đó theo lịch riêng của nó, nhả khóa giữ thức khi hết giờ dù Codex có còn chạy hay không. Auto Mode và Closed-Lid nằm trong LidRun Pro; các chế độ cơ bản Keep Awake, Timer, và Charging-only — cùng với battery auto-stop — đều miễn phí, không giới hạn số phiên.
Khi nào đáng dùng, và khi nào không
Nếu tác vụ Codex chỉ mất vài phút là xong, thì chẳng cần làm gì trong số này cả — cứ để mở nắp và để nó chạy.
Giữ máy chạy xuyên đêm phát huy tác dụng với những tác vụ dài: một đợt refactor lớn, một loạt tác vụ agent, bất cứ thứ gì dựa vào một model chậm hoặc một repo lớn — kiểu việc bạn muốn xong vào sáng hôm sau mà không phải ngồi canh.
Nó đáng bật nhất khi phương án thay thế là phải chống nắp máy mở để phiên chạy sống sót đến lúc bạn thức dậy, nhất là khi Mac đang chạy bằng pin hoặc đặt ở nơi dễ giữ nhiệt qua đêm.
Danh sách kiểm tra để thiết lập an toàn qua đêm
Cắm sạc cho Mac. Chạy xuyên đêm bằng pin vẫn khả thi — battery auto-stop khi pin yếu áp dụng trong mọi trường hợp — nhưng cắm điện thì loại bỏ hoàn toàn nỗi lo về hao pin.
Đặt máy trên một bề mặt cứng, phẳng, thoáng khí. Gập nắp vốn đã giữ lại một phần nhiệt theo thiết kế; đặt trên giường, đệm ghế sofa, hay nhét trong túi chỉ khiến chuyện đó tệ hơn, và không phần mềm nào khắc phục được luồng khí vốn không tồn tại.
Cứ để các lớp bảo vệ luôn bật và để phiên chạy tự kết thúc — dù là Codex xong sớm, pin tụt xuống dưới ngưỡng bạn đặt, hay nhiệt độ tăng lên — thay vì trông chờ vào việc bạn còn thức để tự tay dừng nó.
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ó LidRun? Đọc hướng dẫn thiết lập →
Mới biết đến LidRun? Xem bảng giá →
Câu hỏi thường gặp
Có. codex đã nằm trong danh sách theo dõi mặc định của Auto Mode, nên không cần thêm gì cả. Khởi chạy Codex, Auto Mode sẽ giữ Mac thức trong suốt thời gian tiến trình còn chạy, rồi nhả khóa giữ thức ngay khi tiến trình kết thúc.
caffeinate chặn đúng assertion idle-sleep mà LidRun cũng dùng, và nó thật sự miễn phí — cho một phiên chạy mở nắp thì đây là lựa chọn ổn. Nó không đụng đến clamshell sleep khi gập nắp, và cả caffeinate lẫn pmset disablesleep đều không biết gì về pin hay nhiệt độ; cả hai đều giữ Mac thức vô điều kiện cho đến khi bạn tự tay dừng lại. LidRun thêm vào phần xử lý clamshell cùng các ngưỡng pin và nhiệt độ tự nhả khóa giữ thức khi cần.
An toàn hơn khi các lớp bảo vệ được bật, Mac đang cắm sạc, và đặt trên bề mặt thoáng khí — nhưng gập nắp vốn giữ nhiệt lại theo thiết kế, nên hãy xem đây là cách giảm rủi ro, không phải một sự đảm bảo. Đừng để máy trong túi hay dưới chăn gối, và cứ để thermal guard luôn bật để phiên chạy tự lùi lại nếu nhiệt độ tiến gần đến mức áp lực thật sự.
Battery auto-stop mặc định ở 20% và bạn có thể chỉnh lại, nhưng còn có một ngưỡng sàn cứng khoảng 4% luôn kích hoạt bất kể bạn đặt gì, để một phiên chạy không thể rút cạn Mac về 0. Về nhiệt độ, LidRun coi áp lực kéo dài — khoảng 98°C hoặc CPU throttle xuống dưới 50% — là nghiêm trọng, và lùi lại khi ở mức áp lực thật sự nguy cấp, khoảng 100°C hoặc throttle dưới 30%.
LidRun sẽ auto-stop khi pin xuống dưới ngưỡng bạn đặt, nên một phiên chạy dài sẽ không tụt về 0. Nhưng riêng với một phiên xuyên đêm, cắm sạc vẫn là lựa chọn yên tâm hơn — nó loại bỏ hẳn nỗi lo về hao pin thay vì chỉ quản lý nó.
Với Auto Mode, LidRun nhả khóa giữ thức ngay khi tiến trình codex kết thúc và để Mac ngủ trở lại theo bộ đếm giờ bình thường. Timer mode cho kết quả tương tự nhưng theo lịch bạn đặt, dù Codex có còn chạy hay không khi hết giờ.