LidRun vs caffeinate: công cụ giữ Mac thức nào hợp với workflow của bạn?

Trả lời ngắn gọn: nếu chỉ chạy một tác vụ mà bạn ngồi canh trực tiếp, caffeinate vẫn là lựa chọn đúng — nó có sẵn trong macOS và không tốn một xu. Câu chuyện LidRun vs caffeinate thực ra nằm ở chuyện gì xảy ra khi không ai canh chừng: caffeinate không có ngưỡng pin an toàn, không theo dõi nhiệt độ, và không thể ngăn Mac ngủ khi gập nắp trừ khi bạn đã cắm sẵn màn hình ngoài. Dưới đây là so sánh thẳng thắn giữa hai công cụ, bao gồm cả việc CLI riêng của LidRun đứng ở đâu cạnh caffeinate, mỗi lựa chọn thực sự tốn bao nhiêu, và pmset disablesleep làm được điều mà caffeinate không làm được.
Những gì caffeinate làm tốt
caffeinate có sẵn trong macOS, không cần cài đặt, và chạy được chỉ với một lệnh Terminal duy nhất. Bạn có thể giữ hệ thống không ngủ (caffeinate -i), giữ màn hình không tắt (caffeinate -d), giữ ổ đĩa không ngủ (caffeinate -m), hoặc đặt thời gian giới hạn (caffeinate -t 3600 giữ trong một giờ). Bọc quanh một lệnh cụ thể thì trạng thái không ngủ sẽ kéo dài đúng bằng thời gian lệnh đó chạy: caffeinate -i make build.
Kiểu dùng cuối cùng này — bọc quanh một lệnh đã biết trước — thực sự rất hay. Bạn có một assertion giữ máy thức chỉ gói gọn trong đúng một tác vụ, không cần nghĩ tới giao diện hay tiến trình chạy nền nào cả, và cái giá phải trả chỉ là gõ lệnh. Với một lần build hay sync mà bạn có thể mô tả gọn trong một dòng lệnh, khó có gì đánh bại được nó.
Nếu bạn muốn thứ gì đó nhanh gọn, chạy thẳng trong terminal, không cần cấu hình, thì caffeinate là lựa chọn đúng — chẳng có lý do gì phải cài thêm gì cho việc đó. LidRun cũng có một CLI wrapper tương đương của riêng mình, đáng để biết dù bạn chẳng bao giờ đụng tới bản thân app; nói thêm ở phần dưới.
Nơi caffeinate chạm giới hạn
caffeinate không có khái niệm phần trăm pin. Nếu bạn dùng caffeinate cho một tác vụ dài trong lúc chạy pin rồi rời đi, Mac sẽ tiếp tục chạy cho tới khi tác vụ xong hoặc pin cạn — cái nào tới trước thì tới. Với tác vụ ngắn thì không sao. Nhưng với một phiên chạy qua đêm, việc pin cạn sạch là khả năng có thật mà caffeinate hoàn toàn không theo dõi.
Nó cũng không theo dõi nhiệt độ. Một lần compile nặng hay chạy model cục bộ khiến chip bận và nóng liên tục; caffeinate không có tín hiệu nào cho việc này và cũng không có cách nào phản ứng lại — nó cứ giữ assertion không ngủ bất kể phần cứng đang ra sao.
Khoảng trống lớn hơn là chuyện gì xảy ra khi bạn gập nắp máy mà không cắm màn hình ngoài. caffeinate -i tạo ra một idle-sleep assertion chuẩn kiểu IOKit — còn việc gập nắp lại kích hoạt một kiểu ngủ clamshell riêng, ở tầng thấp hơn, mà idle-sleep assertion không chạm tới được, dù bạn truyền cờ nào đi nữa. caffeinate không hề bị lỗi ở đây; nó chỉ đang trả lời một câu hỏi khác với câu hỏi mà tình huống gập nắp đặt ra.
Cần gạt miễn phí thực sự chạm tới được clamshell sleep là sudo pmset -a disablesleep 1 (và sudo pmset -a disablesleep 0 để tắt lại). Nó có tác dụng, và đó chính là cơ chế nền mà chế độ Closed-Lid của LidRun cũng dùng. Nhưng tự tay chạy lệnh này thì bạn phải gánh hai rủi ro thật sự: đây là cài đặt toàn hệ thống, không giới hạn trong tác vụ của bạn, nên nó ảnh hưởng tới mọi app và mọi lần gập nắp sau này cho tới khi bạn bật lại — và nếu bạn quên, hoặc phiên Terminal đặt lệnh đó đóng đột ngột, Mac sẽ không còn tự ngủ bình thường khi gập nắp nữa cho tới khi có ai đó reset lại.
CLI riêng của LidRun, đặt cạnh caffeinate
LidRun có kèm công cụ dòng lệnh lidrun, và cờ bọc lệnh lidrun -- về mặt kiến trúc là cùng một ý tưởng với caffeinate -i: giữ một idle-sleep assertion, chạy lệnh phía sau, rồi giải phóng khi lệnh đó kết thúc. lidrun -- python train.py --epochs 100 hoạt động y hệt caffeinate -i python train.py --epochs 100.
Cần nói thẳng: tự thân wrapper này miễn phí, không cần mở app LidRun, không cần license — nhưng nó cũng không thêm được gì mà caffeinate còn thiếu. Đó vẫn là cùng một idle-sleep assertion, nên phạm vi cũng y hệt: không có ngưỡng pin an toàn, không theo dõi nhiệt độ, bản thân wrapper không tích hợp sẵn những thứ đó. Chuyển từ caffeinate -i sang lidrun -- cho một lệnh đơn lẻ chỉ mang lại sự quen thuộc, chứ không mang lại thêm an toàn.
Cái thực sự khác biệt nằm ở phần còn lại của CLI. lidrun status, lidrun autowatch on, lidrun watch, và lidrun timer 3600 giao tiếp với app LidRun đang chạy qua một socket cục bộ — đó mới là nơi ngưỡng pin an toàn, theo dõi nhiệt độ, và Auto Mode thực sự tồn tại. Vậy nên khác biệt thực tế không nằm ở lệnh bọc — mà ở chỗ lidrun cho bạn một công cụ duy nhất cho cả hai việc: "giữ máy thức cho đúng một lệnh này" và "để app theo dõi toàn bộ và áp dụng các ngưỡng an toàn", thay vì phải chuyển qua lại giữa caffeinate và một app riêng.
Mỗi lựa chọn thực sự tốn bao nhiêu
caffeinate không tốn gì cả — nó là một phần của macOS, không cần tài khoản, không cần cài đặt, không cần quyết định gì hết.
Các chế độ Keep Awake, Timer, và Charging-only run của LidRun cũng miễn phí vĩnh viễn, không giới hạn thời gian dùng thử, không giới hạn số phiên. Auto Mode (tự động nhận diện workload), Run & Watch a Command, chế độ Closed-Lid, toàn bộ các mức cài đặt an toàn pin/nhiệt độ theo bậc, Activity Log, và Smart Rules là các tính năng trả phí — mua một lần, không phải gói thuê bao, bắt đầu từ $9 cho một Mac và tăng lên $59 cho gói team 10 chỗ. Chế độ Closed-Lid cũng cho bạn một số lượt chạy thử miễn phí trước khi yêu cầu license.
Chi phí thật sự lộ ra ở khâu cài đặt. caffeinate không cần gì cả. LidRun được cài từ một file DMG đã ký và notarize, và wrapper CLI lidrun là một bước riêng, chỉ một cú nhấp sau đó — hoặc cài vào ~/.local/bin/lidrun không cần nhập mật khẩu, hoặc /usr/local/bin/lidrun với một lần xác nhận quyền admin nếu bạn muốn nó dùng được toàn hệ thống. Đó là thời gian cài đặt thật sự mà caffeinate không đòi hỏi, và đổi lại bạn có một app chạy nền, chứ không chỉ một lệnh.
App chạy nền đó cũng chính là cái giá thật sự cho lớp an toàn thêm vào: caffeinate là một tiến trình chỉ tồn tại trong lúc nó giữ assertion, xong là biến mất — không để lại dấu vết gì sau khi lệnh của bạn chạy xong. LidRun thì chạy như một app trên menu bar suốt thời gian, vì bộ điều khiển pin/nhiệt độ và bộ theo dõi tiến trình của Auto Mode (mặc định kiểm tra các tác vụ đang chạy mỗi 10 giây) đều cần có gì đó sống để tiếp tục theo dõi sau khi một lệnh đã kết thúc từ lâu. Nếu bạn muốn không để lại dấu vết thường trực nào và không cần theo dõi liên tục thứ gì, đó là một điểm cộng thật sự cho caffeinate.
Nếu bạn chỉ muốn một công tắc trên menu bar mà không cần bất kỳ logic điều khiển nào ở trên, các app như Amphetamine, KeepingYouAwake, Lungo, và Caffeine cũng phủ được mảng đó — xem bài so sánh riêng để biết chúng đối đầu với LidRun cụ thể ra sao.
Lớp an toàn của LidRun nằm ở đâu
Ngưỡng pin an toàn thực chất là hai cơ chế riêng biệt, không phải một con số duy nhất. Một mức auto-stop có thể điều chỉnh (mặc định 20%, chỉnh được trong khoảng 15% đến 50%) sẽ giải phóng trạng thái giữ thức khi bạn vượt qua ngưỡng đó. Bên dưới đó còn có một ngưỡng force-sleep khẩn cấp riêng ở mức 4%, không thể chỉnh thấp hơn, và chạy bất kể các cài đặt khác của bạn ra sao — đây là biện pháp tự ngủ cuối cùng, nhằm xảy ra trước khi Mac phải tắt cứng thay vì ngủ đàng hoàng.
Theo dõi nhiệt độ kết hợp nhiệt độ thực và phần trăm throttle của SoC ở những nơi đọc được, cùng tín hiệu trạng thái nhiệt thô của Apple làm phương án dự phòng. Nó cảnh báo khi máy nóng lên, và ở chế độ Closed-Lid, nó tự động thoát khỏi clamshell khi tới mức nghiêm trọng để Mac có thể throttle và ngủ bình thường thay vì bị ghim thức bên trong một chiếc case đóng kín.
Bản thân chế độ Closed-Lid cũng chạm tới đúng cần gạt pmset -a disablesleep mà caffeinate không chạm tới được — khác biệt nằm ở chỗ ai chịu trách nhiệm bật nó tắt lại. LidRun luôn ghép giá trị 1 với một giá trị 0 tương ứng khi dừng, khi thoát app, và cả khi khởi động lần sau nếu nó bị bỏ quên đang bật do app bị crash — nên bạn không phải là người phải nhớ việc đó.
Auto Mode tự bật và tự tắt dựa trên việc Claude Code, Cursor, Docker, Ollama, hay các công cụ tương tự có đang thực sự chạy và làm việc hay không, thay vì bắt bạn phải biết trước chính xác lệnh nào như kiểu bọc lệnh của caffeinate. Thiết kế nền tảng khá đơn giản: khi agent hay bản build của bạn thực sự đang chạy, giữ máy thức; ngay khi nó xong việc, hoặc một ngưỡng an toàn bị vượt qua, giải phóng trạng thái giữ thức và để Mac ngủ.
Dùng cả hai, hay chọn một
Ranh giới thẳng thắn là: caffeinate (hoặc lidrun --, về bản chất là y hệt) dành cho các tác vụ nhanh, cụ thể, chạy thẳng trong terminal mà bạn đang canh trực tiếp. Các chế độ ở cấp app của LidRun dành cho các phiên chạy dài, không ai giám sát, gập nắp máy, hoặc chạy workload AI/dev — những lúc mà ngưỡng pin an toàn và theo dõi nhiệt độ thực sự có ý nghĩa.
Hai cách này không loại trừ nhau. Nếu bạn đã quen bọc một lần build cụ thể bằng caffeinate -i hay lidrun --, bạn vẫn có thể cần thêm một workflow gập nắp cho công việc AI/dev cho phiên Claude Code chạy qua đêm, tiếp tục hoạt động sau khi bạn đã đi ngủ.
Câu hỏi quyết định là: phiên chạy dài bao lâu, bạn có đang canh nó không, và nắp máy có mở hay không. Ngắn, có người canh, nắp mở: caffeinate thắng về chi phí và không cần cài đặt gì. Dài, không ai giám sát, hoặc gập nắp mà không có màn hình ngoài: ngưỡng pin an toàn, theo dõi nhiệt độ, và chế độ Closed-Lid nghiêng cán cân về phía LidRun — và CLI riêng của nó nghĩa là bạn không phải từ bỏ terminal để có được điều đó.
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ó. caffeinate là một công cụ hệ thống của macOS, tạo ra một power assertion chuẩn kiểu IOKit. Rủi ro chính là chạy nó vô thời hạn khi dùng pin mà không có ngưỡng an toàn nào — bản thân caffeinate không theo dõi phần trăm pin, nên một tác vụ dài không ai giám sát có thể khiến Mac cạn sạch pin.
Khi tác vụ ngắn, bạn biết trước lệnh cần chạy, bạn đang canh phiên chạy đó, và việc hao pin không phải là vấn đề. Kiểu bọc lệnh (caffeinate -i, theo sau là lệnh) rất hợp cho một lần build hay sync cụ thể.
Có. Cờ bọc lệnh lidrun -- bọc quanh một lệnh đúng theo cách caffeinate -i làm — giữ một idle-sleep assertion, chạy lệnh, rồi giải phóng khi lệnh kết thúc. Nó miễn phí, không cần mở app LidRun hay cần license; tự thân nó có phạm vi y hệt caffeinate, không tích hợp sẵn ngưỡng pin an toàn hay theo dõi nhiệt độ. Các lệnh cần daemon như lidrun status, lidrun autowatch, và lidrun timer giao tiếp với app đang chạy, và đó là cách bạn chạm tới Auto Mode cùng lớp an toàn ngay từ terminal.
Các chế độ cốt lõi — Keep Awake, Timer, và Charging-only run — miễn phí vĩnh viễn, không giới hạn thời gian dùng thử, không giới hạn số phiên. Auto Mode, Run & Watch a Command, chế độ Closed-Lid, và toàn bộ các mức cài đặt an toàn theo bậc là tính năng trả phí, mua một lần (không phải gói thuê bao), bắt đầu từ $9 cho một Mac. Chế độ Closed-Lid cũng đi kèm một số lượt chạy thử miễn phí trước khi yêu cầu license.
Khi phiên chạy dài và không ai giám sát, khi bạn cần gập nắp máy mà không có màn hình ngoài, hoặc khi bạn muốn tự động nhận diện workload, có ngưỡng pin an toàn, theo dõi nhiệt độ, hay Activity Log — những thứ mà caffeinate hoàn toàn không theo dõi.
Với hầu hết nhu cầu giữ máy thức, có thể, nhờ ngưỡng pin an toàn, theo dõi nhiệt độ, và chế độ Closed-Lid mà caffeinate không có. Kiểu bọc lệnh một dòng của caffeinate vẫn tiện cho một tác vụ nhanh, cụ thể, và giờ lidrun -- cũng phủ được đúng trường hợp đó nếu bạn muốn gói gọn trong một công cụ duy nhất.