Giữ Ollama chạy liên tục trên MacBook

Muốn Ollama chạy liên tục trên MacBook cho một lượt sinh dài hoặc một batch xử lý qua đêm, bạn phải vượt qua hai kiểu sleep khác nhau — idle sleep, và nếu gập nắp máy, clamshell sleep — trong khi các công cụ miễn phí của macOS chỉ giải quyết chắc chắn được kiểu đầu tiên. LidRun giải quyết cả hai: nó có thể tự động phát hiện Ollama, giữ Mac thức trong lúc Ollama đang thực sự làm việc, rồi để máy ngủ lại khi tác vụ kết thúc hoặc khi chạm ngưỡng pin/nhiệt. Dưới đây là cách các tùy chọn miễn phí hoạt động, chúng thiếu sót ở đâu với một lượt chạy dài không người trông, và LidRun khớp với Ollama cụ thể như thế nào.
Vì sao Ollama khựng lại khi Mac ngủ
Ollama chạy như một tiến trình nền bình thường — ollama serve cộng với bất kỳ model nào đang được load. Nó không có ngoại lệ đặc biệt nào với cơ chế sleep của macOS. Khi Mac ngủ, tiến trình đó bị treo cùng với mọi thứ khác, và một lượt sinh dài hay một lượt tải model sẽ dừng lại đúng ngay chỗ nó đang ở.
macOS thực ra có hai cơ chế kích hoạt sleep tách biệt, đáng phân biệt rõ ở đây. Idle sleep kích hoạt sau một khoảng thời gian không có hoạt động bàn phím, chuột, hay màn hình, và bất kỳ app nào đang giữ một power assertion kiểu "chặn idle sleep" — caffeinate, Keep Awake của LidRun — đều có thể chặn nó. Sleep khi gập nắp (clamshell) là một cơ chế khác, ở tầng thấp hơn: gập nắp máy mà không cắm màn hình ngoài sẽ đưa Mac vào sleep bất kể đang giữ assertion idle-sleep nào. Sự khác biệt này là phần mà hầu hết lời khuyên kiểu "cứ chạy caffeinate là xong" bỏ qua, và đó là lý do vì sao một cách chặn idle-sleep chỉ giải quyết được nửa chặng đường để thực sự chạy Ollama với nắp gập.
Cách làm miễn phí: caffeinate, pmset, và chế độ clamshell riêng của Apple
Với một phiên làm việc mở nắp, cách sửa có sẵn là caffeinate. Chạy caffeinate -i ollama serve thì assertion sẽ tồn tại đúng bằng thời gian lệnh đó chạy; caffeinate -w <pid> làm điều tương tự cho một tiến trình bạn đã khởi động riêng, ví dụ một daemon ollama serve đang chạy sẵn. Nó miễn phí, viết script được, và đi kèm sẵn trong macOS — không cần cài thêm gì.
LidRun có phiên bản tương đương miễn phí của riêng mình, ít hơn một bước: lidrun -- ollama serve bọc lấy lệnh, chỉ giữ assertion idle-sleep trong lúc chính tiến trình đó còn sống, và nhả nó ra ngay khi Ollama thoát. Không cần license, không cần giao diện app, không cần tài khoản — đây là một lệnh CLI độc lập, hoạt động bất kể app LidRun có đang chạy hay không.
Nếu bạn muốn gập nắp mà không cần dùng bất kỳ công cụ nào ở trên, Apple có sẵn câu trả lời gốc, không cần công cụ bên thứ ba nào cả: cắm sạc cho Mac, cắm màn hình ngoài, và dùng bàn phím hoặc chuột ngoài. Với thiết lập đó, Mac chạy gập nắp vô thời hạn — đây là chế độ closed-clamshell chính chủ của Apple, không phải thứ mà LidRun hay bất kỳ app keep-awake nào phải giả lập.
Không có màn hình ngoài, đòn bẩy duy nhất chặn được sleep khi gập nắp là sudo pmset -a disablesleep 1 chạy trong Terminal — một mẹo miễn phí thực sự, và chính là cài đặt macOS mà Closed-Lid Mode của LidRun tự động hóa ở phía dưới.
Các công cụ trên menu bar như Amphetamine, KeepingYouAwake, Lungo, và Caffeine bản gốc đều dựa trên cùng một API assertion idle-sleep công khai như caffeinate. Chúng chỉn chu, phân phối qua App Store, và làm tốt đúng việc chúng được sinh ra để làm — bật/tắt một chạm, hẹn giờ chặn sleep, kích hoạt theo từng app. Nhưng chúng chia sẻ chung giới hạn gập-nắp của caffeinate: không cái nào chạm được tới disablesleep, nên gập nắp mà không có màn hình ngoài vẫn khiến Mac ngủ dù một trong số chúng đang bật.
Cách làm miễn phí vỡ trận ở đâu với một lượt chạy không người trông
caffeinate, lidrun --, và mọi app keep-awake trên menu bar đều giữ Mac thức theo kiểu cấu trúc thuần túy — chúng không biết Ollama đang làm gì, chỉ biết có thứ gì đó yêu cầu giữ máy thức. Chạy một lượt tải model trong hai mươi phút với caffeinate -w <pid> thì ổn. Nhưng để caffeinate -i chạy tay cho một batch qua đêm tám tiếng rồi quên tắt, nó vẫn vô tư giữ Mac thức rất lâu sau khi lượt chạy đã xong — ngốn pin trong khi không ai để ý, chẳng có gì canh chừng cả.
pmset -a disablesleep 1 bật tay mang rủi ro sắc hơn nhiều. Đây là một cài đặt macOS toàn cục, tồn tại lâu dài — không giới hạn trong phạm vi Ollama, không giới hạn trong phiên Terminal của bạn. Gập nắp, quên chạy sudo pmset -a disablesleep 0 sau đó, hoặc để script quản lý nó chết đi, thì Mac sẽ không tự ngủ cho tới khi bạn tự tay tắt lại hoặc khởi động lại máy. Đó là một chiếc Mac có thể nằm gập nắp, thức hoàn toàn, không ai kiểm tra pin hay nhiệt đang tích tụ sau các khe tản nhiệt bị bịt kín.
Không tùy chọn miễn phí nào kiểm soát theo mức pin hay trạng thái nhiệt cả — chúng là một công tắc, không phải một bộ điều tiết. Đó chính là lỗ hổng thực sự với một lượt chạy Ollama qua đêm không người trông: một model thường trú giữ bộ nhớ và GPU bận rộn hàng giờ liền, và không ai ở đó để nhận ra nếu pin đang tụt nhanh hay khung máy đang nóng lên.
LidRun giữ Ollama chạy mà không mang rủi ro tương tự như thế nào
Danh sách theo dõi mặc định của Auto Mode đã sẵn có "ollama" cùng với llama-server, vllm, và lm-studio — bật nó lên từ menu bar và LidRun sẽ bắt đầu giữ Mac thức ngay khi thấy Ollama đang chạy, không cần tự gõ thêm pattern nào. Mặc định, việc phát hiện lấy mẫu CPU mỗi 10 giây; một tiến trình được tính là đang hoạt động khi vượt ngưỡng CPU 20%, và một khoảng giữ-idle 60 giây — được tinh chỉnh riêng cho những khoảng nghỉ như lúc Ollama đang chờ giữa các token — giữ assertion xuyên suốt những lần tạm dừng ngắn thay vì khiến Mac liên tục ngủ-thức.




Closed-Lid Mode là phần thay thế cho việc tự bật tay pmset -a disablesleep 1. Vẫn là cùng một đòn bẩy macOS bên dưới, nhưng LidRun ghép mỗi lần bật với một lần tắt tự động khi bạn dừng nó, thoát app, hoặc khởi động lại sau một lần crash — nó không thể bị kẹt ở trạng thái tắt-sleep toàn cục theo kiểu một lệnh Terminal bị bỏ quên.
Giới hạn pin và nhiệt nằm bên dưới cả hai cơ chế trên. Mặc định, LidRun ngừng giữ Mac thức ở mức pin 20%, luôn thoát khỏi một phiên không người trông nếu Mac chạm trạng thái nhiệt nguy cấp, và force-sleep ở ngưỡng pin sàn 4% bất kể thế nào — một lượt inference dài không được phép kết thúc bằng một lần tắt máy đột ngột. Activity log ghi lại chính xác lý do một phiên kết thúc (chạm ngưỡng pin sàn, chạm giới hạn nhiệt, tác vụ hoàn tất), nên một lượt chạy qua đêm bị khựng lại không còn là một bí ẩn vào sáng hôm sau. Quy tắc nằm bên dưới tất cả đơn giản thôi: Ollama đang chạy → giữ máy thức; Ollama xong, hoặc có gì đó không an toàn → nhả ra và để Mac ngủ.
Free và Pro, nói thẳng
Keep Awake, Timer, và Charging-only chạy không giới hạn, miễn phí vĩnh viễn, không cần dùng thử. Bật Keep Awake bằng tay trước khi khởi chạy Ollama, để nắp mở, tắt nó khi xong việc — chỉ riêng vậy đã đủ cho phần lớn nhu cầu dùng hàng ngày, và lệnh CLI miễn phí lidrun -- ollama serve cũng làm được điều tương tự.
Thứ thuộc về Pro là phần tự động hóa: khả năng tự phát hiện của Auto Mode, để bạn không phải nhớ tự bật/tắt Keep Awake, và Closed-Lid Mode, thứ duy nhất cho phép bạn chạy với nắp gập ngay từ đầu. Closed-Lid Mode có một số lượt dùng thử miễn phí giới hạn trước khi yêu cầu bạn nâng cấp, để bạn có thể thử một lượt chạy qua đêm gập nắp trước khi trả tiền.
Bản thân các ngưỡng an toàn — mức tự dừng 20%, bảo vệ nhiệt luôn bật, ngưỡng pin sàn force-sleep 4% — giống nhau ở mọi gói và không thể tắt đi. Chỉ việc chỉnh chính xác các con số đó mới là tính năng Pro; các giá trị mặc định an toàn vẫn bảo vệ cả người dùng free.
Chạy qua đêm và khi nào thì đáng làm
Công cụ này thực sự đáng dùng cho những việc dài hơi: tải một model lớn, chạy một loạt lượt sinh, hoặc một model server bạn muốn để chạy trong lúc bạn rời máy. Nếu bạn chỉ đang chat tương tác với một model nhỏ, bạn không cần bất kỳ thứ gì trong số này — hoạt động gõ phím bình thường đã tự giữ Mac thức rồi, và một prompt nhanh xong xuôi từ lâu trước khi idle sleep kịp kích hoạt.
Qua đêm là lúc lỗ hổng đó quan trọng nhất. Bốn đến tám giờ inference cục bộ trong khi bạn ngủ là hoàn toàn không có ai trông coi — không ai nhận ra nhiệt độ đang tăng hay pin đang tụt. Đó chính xác là lý do có thermal watch và battery floor: dừng lượt chạy trước khi chạm giới hạn, thay vì để phần cứng chạy không giám sát suốt đêm chỉ với một cờ disablesleep bật tay.
Một thiết lập thực tế
Bật Closed-Lid Mode trước tiên (menu bar → Closed-Lid Mode). Lần đầu tiên, macOS sẽ yêu cầu bạn phê duyệt privileged helper của LidRun một lần — sau đó thì không cần nhập mật khẩu nữa. Rồi bật Auto Mode (menu bar → Auto Mode) để nó tự nhận diện Ollama, hoặc đơn giản là bật Keep Awake bằng tay nếu bạn muốn bỏ qua phần tự động hóa Pro và tự quản lý lấy.


Danh sách pattern theo dõi, khoảng thời gian poll, và idle holdoff nằm trong Settings → Automation; giới hạn pin và nhiệt nằm trong Settings → Safety. Bạn không cần đụng vào bên nào riêng cho Ollama cả — các giá trị mặc định đã bao quát sẵn rồi.
Cắm sạc trước khi chạy qua đêm. Một model thường trú tiêu thụ điện đều đặn, và Charging-only là lựa chọn mặc định an toàn hơn ở đây: chạy bằng pin, tám giờ inference có thể chạm mức tự dừng 20% hoặc ngưỡng pin sàn force-sleep 4% và kết thúc lượt chạy sớm. Khi cắm sạc, chỉ có thermal watch quyết định lúc nào cần tạm dừng.
Đặt Mac trên một mặt phẳng cứng, thoáng khí, dù gập nắp hay không — gập nắp sẽ bịt các khe tản nhiệt thường dùng, nên inference kéo dài cần có chỗ cho nhiệt thoát ra. Và đặt một session timer khớp với thời lượng chạy, để một model server bạn lỡ quên không giữ Mac thức suốt đêm một cách vô ích. Toàn bộ thiết lập chỉ có vậy: hai công tắc, một sợi sạc, và các ngưỡng an toàn tự canh chừng thay bạ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ó — danh sách theo dõi mặc định của Auto Mode đã bao gồm ollama, llama-server, vllm, và lm-studio, nên chỉ cần bật lên là đủ; bạn không cần tự thêm pattern nào. Auto Mode là tính năng Pro.
caffeinate — và lệnh CLI miễn phí lidrun -- ollama serve của riêng LidRun — chặn idle sleep, đủ dùng nếu nắp máy vẫn mở. Không cái nào trong hai thứ đó chặn được sleep khi gập nắp; việc đó cần Closed-Lid Mode, chế độ clamshell dùng màn hình ngoài của Apple, hoặc bật tay pmset -a disablesleep 1 — một cơ chế macOS hoàn toàn khác.
Không. Keep Awake, Timer, và Charging-only miễn phí vĩnh viễn khi nắp máy mở — bật Keep Awake bằng tay trước khi chạy và tắt sau khi xong. Khả năng tự phát hiện của Auto Mode và Closed-Lid Mode (chạy với nắp gập) thuộc Pro, kèm theo một số lượt Closed-Lid miễn phí để dùng thử trước.
LidRun theo dõi trạng thái nhiệt và thoát khỏi một phiên không người trông nếu Mac chạm trạng thái nhiệt nguy cấp — đó là một lần dừng vì an toàn, không phải làm mát chủ động, và nó không quản lý RAM. Áp lực bộ nhớ từ model cục bộ phụ thuộc vào bản thân model và cấu hình phần cứng Mac của bạn, không phải thứ một công cụ keep-awake có thể sửa được.
Có — bật Closed-Lid Mode cùng với Auto Mode (hoặc Keep Awake bằng tay), giữ Mac cắm sạc, và nó sẽ duy trì hoạt động miễn là điều kiện pin và nhiệt vẫn nằm trong giới hạn bạn đặt ra. Closed-Lid Mode chính là thứ thực sự chặn được sleep khi gập nắp mà macOS lẽ ra sẽ kích hoạt.
Khi Auto Mode không còn thấy Ollama hoạt động nữa, LidRun nhả assertion keep-awake để Mac quay lại ngủ bình thường — nó không giữ Mac thức vô thời hạn chỉ vì từng thấy Ollama chạy một lần.
Có, khi cắm sạc với Auto Mode và Closed-Lid Mode đều bật — LidRun giữ phiên chạy hàng giờ liền miễn là ngưỡng pin và nhiệt vẫn trong phạm vi cho phép. Với một lượt chạy qua đêm không người trông, chỉ chạy khi cắm sạc là lựa chọn an toàn hơn, vì lần dừng vì nhiệt tồn tại đúng là để kết thúc lượt chạy trước khi chạm giới hạn, thay vì để nó chạy suốt đêm không ai giám sát.
Vẫn hoạt động, nhưng nó toàn cục, tồn tại lâu dài và không có lưới an toàn nào cả — quên đặt lại về 0 thì Mac sẽ hoàn toàn không tự ngủ, bất kể pin hay nhiệt độ ra sao, cho tới khi bạn tắt lại hoặc khởi động lại máy. Closed-Lid Mode dùng cùng một cài đặt đó nhưng luôn ghép mỗi lần bật với một lần tắt khi tác vụ dừng, app thoát, hoặc sau khi khởi động lại vì crash.