Bộ điều tiết an toàn khi giữ Mac thức: vì sao LidRun để một chiếc Mac quá nóng hoặc không hoạt động đi ngủ

Bộ điều tiết an toàn khi giữ Mac thức là lớp quyết định khi nào một chiếc Mac đang chạy được phép ngừng thức, thay vì cứ thức bất chấp mọi thứ. Nó kiểm soát mọi phiên giữ-thức dựa trên mức pin, trạng thái nhiệt, nguồn điện, và thời gian máy không có ai theo dõi, rồi giải phóng việc giữ thức ngay khi một trong các yếu tố đó vượt ngưỡng bạn đặt. Phiên bản của LidRun mặc định tự dừng ở mức pin 20% (có thể chỉnh 15%-50%), lùi lại ngay khi trạng thái nhiệt chuyển sang mức nghiêm trọng (critical), và giải phóng việc giữ thức sau 15-20 phút xác nhận không có hoạt động khi chạy bằng pin. Nó giúp giảm rủi ro cho các phiên chạy AI và dev dài, không người theo dõi. Nó không loại bỏ hoàn toàn rủi ro đó, và cũng không thay thế được việc đặt Mac ở nơi máy thực sự có thể thoát nhiệt.
Vì sao một phiên chạy AI hoặc dev suốt đêm cần nhiều hơn là "giữ máy thức"
Một công cụ giữ-thức đơn thuần chỉ trả lời đúng một câu hỏi: Mac có nên thức ngay bây giờ không? Với một cuộc gọi video, một buổi thuyết trình, hay một lượt build 20 phút mà bạn đang ngồi canh, đó chính xác là câu hỏi cần trả lời và là câu hỏi duy nhất quan trọng. caffeinate, Amphetamine, và KeepingYouAwake đều trả lời tốt câu hỏi đó, và với việc dùng tương tác ngắn thì bạn không cần gì hơn thế.
Công việc AI và dev không người theo dõi lại thay đổi hoàn toàn bản chất vấn đề. Một lượt tải model cục bộ, một job fine-tuning chạy suốt đêm, một coding agent như Claude Code hay Cursor được để chạy trên một repo suốt nhiều giờ, một pipeline nhiều agent, hay một lượt build dài khởi động trước khi đi ngủ — đây là những công việc mà không có ai ngồi trước bàn phím để nhận ra pin đang tụt dần về 0 hay thân máy đang nóng lên dưới một chồng giấy tờ. Một lượt build 40 phút đặt trên đùi bạn thì không sao. Nhưng cùng một wake lock để chạy suốt đêm lại không biết phân biệt giữa "vẫn đang chạy" và "đã chết máy từ lâu".
Cơ chế idle-sleep của chính macOS tồn tại để bảo vệ pin và phần cứng khi không có ai theo dõi. Một wake lock — bất kỳ wake lock nào, từ bất kỳ công cụ nào — tồn tại với đúng mục đích là ghi đè lớp bảo vệ đó. Ngay khi bạn bật nó lên, bạn đã giành lấy một quyết định mà trước đây hệ thống tự đưa ra thay bạn: khi nào thì việc giữ máy thức không còn đáng nữa. Phần lớn công cụ giữ-thức nhận lấy nhiệm vụ đó rồi không làm gì thêm với nó. Chúng giữ khóa cho đến khi bạn bảo chúng dừng, và nếu bạn đang ngủ ở phòng bên cạnh, lệnh dừng đó sẽ không bao giờ đến.
Những cách miễn phí, có sẵn để giữ Mac không ngủ
macOS vốn đã có sẵn mọi thứ bạn cần cho một công việc ngắn mà bạn đang canh chừng. caffeinate là một công cụ dòng lệnh có sẵn trên mọi Mac: caffeinate -i chặn idle sleep, -s chặn system sleep khi cắm điện AC, -d còn giữ luôn màn hình sáng, -w <pid> gắn việc giữ thức vào một process cụ thể để nó tự giải phóng khi process đó kết thúc, và -t <seconds> giới hạn thời gian hẳn hoi. Với một công việc chạy ở foreground mà bạn đang chủ động theo dõi — caffeinate -i npm run build — đây thực sự là câu trả lời đúng, miễn phí, không cần cài thêm gì.
Để chạy máy khi gập nắp lại, cơ chế thực sự đứng sau mọi mẹo "clamshell mode" chỉ là một câu lệnh: pmset -a disablesleep 1. Đó là một thiết lập quản lý nguồn điện thật sự của macOS, không phải một chiêu hack — nó bảo hệ thống không được ngủ khi gập nắp, áp dụng toàn hệ thống, và cần quyền admin để thiết lập. macOS cũng có sẵn một ngoại lệ tích hợp cho việc này mà không cần chạy lệnh nào: cắm màn hình ngoài, bàn phím, và chuột, gập nắp lại, thế là Mac tự thức, không cần thêm phần mềm nào.
Ngoài dòng lệnh, các công cụ menu-bar của bên thứ ba cũng làm tốt việc này với giao diện thân thiện hơn. Amphetamine bổ sung các trigger rule — kích hoạt khi một app cụ thể mở lên, khi bạn kết nối vào một mạng Wi-Fi nhất định, hay theo lịch — vượt xa những gì caffeinate cung cấp sẵn. KeepingYouAwake là một công tắc menu-bar nhỏ gọn, sạch sẽ cho đúng một việc. Lungo và Caffeine đều cho bạn một bộ chọn hẹn giờ đơn giản kiểu "giữ thức trong N giờ". Tất cả đều là những công cụ chắc chắn, tập trung vào đúng việc chúng được sinh ra để làm: giữ một wake lock cho đến khi bạn bảo dừng.
Hướng dẫn liên quanKhi MacBook của bạn nóng lên lúc lập trìnhNơi mà giải pháp miễn phí hết còn lớp bảo vệ
Không công cụ nào ở trên biết được xu hướng tụt pin hay trạng thái nhiệt của Mac bạn, và đó không phải là một lời chê — đơn giản là chúng không được sinh ra để làm việc đó. Chạy caffeinate -i bằng pin suốt đêm, nó sẽ giữ Mac thức thẳng tuột xuống 0%, kéo theo cả công việc mà nó đang bảo vệ tụt xuống cùng. Không có checkpoint giữa chừng, không có cảnh báo sớm, không có quyết định dừng sớm khi pin vẫn còn khỏe. Bạn nhận về một chiếc Mac chết máy và một công việc dang dở cùng một lúc.
pmset -a disablesleep 1 có một kiểu thất bại rõ ràng và cụ thể hơn. Đây là một thiết lập hệ thống toàn cục, tồn tại lâu dài, không gói gọn trong một app hay process nào. Nếu bất cứ thứ gì đã bật nó lên 1 bị crash, bị force-quit, hoặc Mac mất điện đột ngột, thiết lập đó có thể vẫn ở trạng thái BẬT — hệ thống vẫn được cấu hình để không bao giờ ngủ khi gập nắp cho đến khi có thứ gì đó chủ động tắt nó về 0 (sudo pmset -a disablesleep 0). Điều đó có nghĩa là một chiếc Mac có thể chạy nóng bên trong một chiếc túi đóng kín với màn hình tắt, và bản thân thiết lập đó không hề cho bạn biết nó vẫn đang làm vậy.
Các app giữ-thức của bên thứ ba đều mang chung dạng lỗ hổng này, do cách chúng được thiết kế. Chúng chờ bạn ra lệnh khi nào nên dừng — một bộ hẹn giờ, một công tắc thủ công, một trigger rule bạn đã cấu hình trước — thay vì theo dõi các chỉ số sống của máy trong lúc bạn vắng mặt. Với một cuộc gọi 20 phút, đó đúng là mức công cụ vừa đủ. Với một phiên chạy 8 tiếng không người theo dõi, công cụ đó không có cách nào nhận ra hoàn cảnh đã thay đổi kể từ lúc bạn thiết lập nó. Đó chính là khác biệt giữa bất kỳ công cụ nào trong số đó và một bộ điều tiết an toàn khi giữ Mac thức: không có điều nào trong số này là lỗi của caffeinate, pmset, hay các app kể trên — chúng làm tốt đúng một việc chúng hứa hẹn. Lỗ hổng chỉ lộ ra khi một wake lock đơn thuần, "mù", chạy không người theo dõi suốt nhiều giờ, và việc lấp lỗ hổng đó chính là lý do một bộ điều tiết an toàn tồn tại.
Bộ điều tiết an toàn thực sự kiểm tra những gì
Bộ điều tiết của LidRun là một lớp riêng biệt, tách khỏi bản thân chế độ giữ-thức — nó có thể ghi đè lên Keep Awake thủ công, Timer, Charging-only, hay Closed-Lid như nhau. Nó không bao giờ thêm lý do để giữ máy thức. Hai điều duy nhất nó có thể quyết định là: giải phóng việc giữ thức, hoặc đẩy Mac vào giấc ngủ hẳn.




Pin: keep-awake mặc định tự dừng ở mức 20% (có thể chỉnh từ 15% đến 50% trong Settings), việc này giải phóng lớp giữ thức và để Mac idle-sleep theo cách bình thường. Dưới ngưỡng đó có thêm một cảnh báo một lần riêng ở mức 15%, và dưới cùng tất cả là một sàn sinh tồn — mặc định 4% — buộc máy phải ngủ thật sự bất kể các thiết lập khác của bạn. Sàn đó không thể chỉnh thấp hơn 4%, vì macOS cần một chút khoảng trống để hoàn tất việc đi ngủ trước khi viên pin thực sự cạn kiệt.
Nhiệt độ: LidRun đọc nhiệt độ chip do SMC báo cáo và phần trăm throttle của CPU, chứ không chỉ dựa vào API thermalState công khai vốn khá thô — critical là khi chip đạt 100°C trở lên, hoặc CPU bị throttle xuống còn 30% công suất trở xuống; serious là 98°C hoặc throttle ở mức 50% trở xuống. Ngay khi đọc được mức critical, bộ điều tiết giải phóng việc giữ thức ngay lập tức, không có thời gian ân hạn. Nếu tình trạng critical kéo dài liên tục 2 phút, nó leo thang thành một lần ép ngủ thật sự, nhưng chỉ khi bạn không có mặt để chứng kiến: không chạm bàn phím/chuột từ 5 phút trở lên, hoặc nắp máy đang gập lại. Một người dùng đang có mặt với nắp máy mở sẽ không bao giờ bị ép ngủ chỉ vì nhiệt — bạn vẫn tiếp tục làm việc, LidRun chỉ đơn giản là ngừng thêm tải. (Trên một chiếc Mac hiệu chỉnh nội bộ, một khối lượng công việc bình thường với nắp mở chạy quanh mức 95°C mà throttle vẫn trên 80% công suất; cùng khối lượng công việc đó khi máy bị bịt kín trong túi thì throttle tụt xuống còn khoảng 24%, trong khi thermalState công khai của hệ điều hành vẫn chỉ báo "Fair" — đó chính xác là lý do bộ điều tiết không dựa hoàn toàn vào mỗi tín hiệu đó.)
Nguồn điện và khối lượng công việc kết hợp: khi chạy bằng pin, nếu Mac mất kết nối mạng và không có công việc nào được xác nhận đang chạy trong 15 phút, hoặc đứng yên không hoạt động 20 phút mà không có công việc nào được xác nhận, việc giữ thức sẽ được giải phóng. Từ "xác nhận" ở đây có ý nghĩa thật sự — nếu LidRun không thể biết chắc có điều gì đang chạy hay không, nó coi đó là chưa rõ, chứ không phải là đang rảnh, và không bao giờ giải phóng dựa trên phỏng đoán. Nó chỉ buông tay khi đã xác nhận chắc chắn không có gì đang diễn ra — một thiên hướng an toàn có chủ đích: nghiêng về phía giữ máy thức khi chưa chắc chắn, và chỉ để máy ngủ khi bằng chứng cho thấy điều đó là an toàn.
Khi bất kỳ điều nào trong bốn yếu tố trên vượt ngưỡng, bộ điều tiết giải phóng đúng cùng một power assertion IOKit (PreventUserIdleSystemSleep) mà caffeinate -i sử dụng, và để macOS ngủ theo cách bình thường vốn có. Đây không phải là ghi đè lên lớp bảo vệ của chính hệ thống. Đây là lựa chọn ngừng chống lại lớp bảo vệ đó.
Để Mac được ngủ chính là tính năng
Nghe có vẻ ngược đời khi gọi việc ngủ là một tính năng của một app giữ-thức, nhưng đó chính xác là ý nghĩa của một bộ điều tiết. Giữ máy thức mãi mãi là nửa dễ — caffeinate làm được điều đó chỉ trong một dòng lệnh. Nửa khó là biết dừng đúng lúc khi không có ai ở đó để rút phích, và đó là chỗ mà một wake lock "mù" chẳng có gì để đóng góp.
Hình dung một lượt ollama pull chạy suốt đêm, hay một coding agent được để chạy trên một repo, dùng pin trong một căn phòng yên tĩnh. Một wake lock không được canh chừng sẽ giữ Mac thức cho đến khi pin cạn sạch và công việc chết theo, thường là ở vài phút cuối cùng mà không hề có cảnh báo. Bộ điều tiết theo dõi mức pin tụt xuống, và ở mức 20% nó buông việc giữ thức để Mac có thể ngủ bình thường trong khi pin vẫn còn cao hơn hẳn sàn sinh tồn 4%. Dù sao thì bạn vẫn mất phiên chạy đó nếu không có ai khởi động lại nó, nhưng sáng ra bạn nhận được một viên pin còn khỏe thay vì một chiếc máy chết pin.
Cùng logic đó áp dụng cho nhiệt độ. Để một chiếc laptop chạy fine-tune LLM trên một chiếc gối sofa hay bên trong một chiếc đế kê bịt kín khe thoát nhiệt phía dưới, thân máy sẽ nóng lên nhanh hơn mức bình thường. Bộ điều tiết không chờ đến khi cơ chế thermal throttling của chính macOS cuối cùng can thiệp — nó giải phóng việc giữ thức ngay khi chip vượt qua mức critical, và nếu bạn không có mặt và tình trạng critical vẫn tiếp diễn, nó đẩy hẳn Mac vào giấc ngủ thay vì để việc đặt máy sai chỗ tiếp tục "nấu" máy suốt nhiều giờ.
Các thiết lập multi-agent càng làm vấn đề này rõ nét hơn, chứ không nhẹ đi. Khởi động vài agent hay một pipeline dài trước khi rời đi cả ngày, và giờ một phiên giữ-thức không người theo dõi đang bao trùm hàng giờ công việc mà bạn không thể kiểm tra. Đó chính xác là tình huống mà một công cụ chỉ biết "giữ thức" là rủi ro nhất, và cũng là nơi một công cụ biết thêm cả "dừng lại khi không an toàn" chứng minh được giá trị của mình.
Những gì bộ điều tiết không thể làm thay bạn
Phải thành thật về những giới hạn. Bộ điều tiết đọc các tín hiệu mà phần cứng thực sự cung cấp — phần trăm pin, trạng thái nhiệt, mạng, thời gian không hoạt động — và hành động dựa trên các ngưỡng bạn đặt ra. Nó không thể "cảm nhận" được căn phòng. Chạy một công việc dài trên giường, trên gối sofa, hay bên trong một chiếc túi đóng kín, và bạn đã vô tình chặn đường thoát khí mà hệ thống tản nhiệt cần. Không có thiết lập phần mềm nào cứu được một chiếc máy không thể thở.
Việc lưu thông không khí và vị trí đặt máy vẫn là trách nhiệm của bạn, không phải của app. Chạy các workload dài trên một bề mặt cứng, phẳng. Giữ cho Mac được thông thoáng — khe thoát nhiệt không bị che, không bịt dưới chăn hay đế kê laptop có thành bịt kín. Cắm điện liên tục cho những phiên chạy lớn để pin không còn là một biến số trong phương trình. Đây là những lớp bảo vệ an toàn đặt trên nền của các thói quen tốt, chứ không phải thứ thay thế cho chúng.
Hãy nghĩ về bộ điều tiết như một cặp mắt thứ hai cẩn thận, theo dõi các con số mà Mac của bạn vốn đã tạo ra, chứ không phải là một tấm giấy phép để bạn ngừng suy nghĩ về vị trí đặt máy trong thực tế. Nó có thể giúp giảm rủi ro trong phạm vi mà phần cứng và hoàn cảnh cho phép. Phần còn lại là trách nhiệm của bạn — hãy dùng nó một cách cẩn trọng, và đó là phiên bản thành thật nhất về những gì nó thực sự làm.
LidRun đứng ở đâu bên cạnh caffeinate, pmset, và Amphetamine
Đây không phải những câu trả lời cạnh tranh cho cùng một câu hỏi — đó là những công cụ được xây cho những tình huống khác nhau, và đáng để nói thẳng khi nào công cụ nào thực sự là lựa chọn tốt hơn. caffeinate là công cụ đúng khi bạn đang ngồi trước bàn phím canh một câu lệnh chạy; nó có thể viết script, gắn gọn gàng vào một process bằng -w, và không cần cài đặt gì thêm. pmset -a disablesleep 1 là cách thực sự duy nhất để giữ Mac sống qua lúc gập nắp mà không cần màn hình ngoài, và chế độ Closed-Lid của chính LidRun là một lớp bọc an toàn đặt trên đúng câu lệnh đó — nó ghép mỗi lần bật 1 với một lần tắt 0 tương ứng khi dừng, khi thoát app, và khi mở lại, để thiết lập đó không thể bị bỏ rơi theo cách mà một script trần trụi có thể để lại.
Amphetamine, KeepingYouAwake, Lungo, và Caffeine đều thực sự tốt cho kiểu công việc đa dụng "giữ Mac thức trong X" — trigger rule, lịch trình, công tắc bật một chạm. Nếu một công việc chỉ chạy hai mươi phút trong khi bạn đang ngồi đó, bất kỳ công cụ nào trong số này cũng là lựa chọn ổn, nhẹ nhàng hơn LidRun, và chẳng có lý do gì để dùng công cụ nặng hơn mức công việc cần.
Khác biệt của LidRun không nằm ở cơ chế wake-lock — bên dưới vẫn là cùng một power assertion IOKit PreventUserIdleSystemSleep mà caffeinate dùng. Khác biệt nằm ở lớp logic giải phóng đặt bên trên nó: một tập hợp các ngưỡng về pin, nhiệt độ, nguồn điện, và thời gian không hoạt động, quyết định khi nào việc giữ Mac thức không còn đáng nữa, chạy liên tục suốt thời gian công việc đang diễn ra, mà không cần ai phải có mặt để đưa ra quyết định đó. Với một tác vụ nhanh, việc ưu tiên an toàn hơn tiện lợi là thừa thãi. Nhưng với một phiên chạy AI không người theo dõi mà bạn đang phó thác để nó sống sót qua đêm, đó chính là toàn bộ vấ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
Đó là lớp kiểm soát mọi quyết định giữ-thức dựa trên mức pin, trạng thái nhiệt, nguồn điện, và thời gian một phiên chạy đã không có ai theo dõi, rồi để Mac đi ngủ thay vì tiếp tục giữ nó thức một khi một trong các yếu tố đó vượt ngưỡng. Nó không bao giờ thêm lý do để giữ máy thức — nó chỉ giải phóng việc giữ thức hoặc ép máy ngủ.
Keep-awake mặc định tự dừng ở mức pin 20%, và bạn có thể chỉnh mức này trong khoảng từ 15% đến 50% trong Settings. Bên dưới đó là một sàn sinh tồn riêng ở mức 4%, buộc máy phải ngủ thật sự bất kể bạn đặt mức tự dừng là bao nhiêu — mức này không thể chỉnh thấp hơn 4%, vì macOS cần một chút khoảng trống để hoàn tất việc ngủ trước khi pin cạn hoàn toàn.
Không có một con số duy nhất — nó tùy vào từng lớp bảo vệ. Việc ép ngủ vì nhiệt chỉ leo thang sau 5 phút không có thao tác bàn phím hoặc chuột (hoặc nắp máy đang gập lại). Lớp bảo vệ mất-mạng-và-không-có-workload chờ 15 phút khi chạy bằng pin, không có mạng và không có công việc nào được xác nhận đang chạy. Lớp bảo vệ không-người-theo-dõi-khi-dùng-pin nói chung chờ 20 phút không hoạt động mà không có công việc nào được xác nhận. Cả ba lớp này chỉ kích hoạt khi LidRun đã xác nhận chắc chắn không có gì đang chạy — một process chưa rõ hoặc không nhận diện được sẽ không bao giờ khiến máy giải phóng sớm.
Không. Nó giúp giảm rủi ro bằng cách giải phóng việc giữ thức ngay khi nhiệt độ chip hoặc mức throttle CPU vượt ngưỡng nghiêm trọng, nhưng nó không thể khắc phục việc khe thoát nhiệt bị bịt kín hay một chiếc Mac bị vùi trong đồ nội thất mềm. Việc lưu thông không khí và vị trí đặt máy vẫn là trách nhiệm của bạn — hãy giữ cho Mac luôn thông thoáng.
Về mặt cơ chế thì không hề khác — LidRun giữ cùng một power assertion IOKit mà caffeinate -i sử dụng, và chế độ Closed-Lid chạy cùng câu lệnh pmset -a disablesleep bên dưới. Khác biệt nằm ở những gì xảy ra sau đó: caffeinate và một công tắc pmset trần trụi giữ khóa cho đến khi bạn tự tay dừng chúng, không hề biết gì về mức pin hay nhiệt độ chip của bạn. Bộ điều tiết thì theo dõi các tín hiệu đó suốt toàn bộ thời gian và tự giải phóng việc giữ thức khi việc tiếp tục không còn an toàn nữa.
Có. Các lần tự dừng vì pin, các sự kiện nhiệt-nghiêm-trọng, và các quyết định dựa trên workload đã xác nhận đều được ghi lại trong Activity Log kèm dấu thời gian, nên khi bạn quay lại với một chiếc Mac đã ngủ sớm, bạn có thể thấy chính xác ngưỡng nào đã kết thúc phiên chạy.
Có. Bộ điều tiết an toàn và tính năng tự dừng khi pin yếu là một phần của keep-awake cơ bản miễn phí, không giới hạn. Chúng không bao giờ bị khóa sau Pro.