Kenapa caffeinate saja tidak cukup untuk alur kerja AI dengan lid tertutup

Tidak — caffeinate hanya memblokir idle sleep, sementara lid yang tertutup memicu jenis sleep yang sama sekali berbeda, sehingga agen AI atau proses model yang berjalan tanpa pengawasan bisa mati begitu Anda menutup lid dan pergi. Berikut penjelasan kenapa celah ini ada, perintah gratis yang menutupnya, risiko yang dibawa perintah itu, dan apa yang perlu ditambahkan agar alur kerja lid tertutup lebih aman.
Apa yang sebenarnya diblokir caffeinate
caffeinate adalah tool kecil yang andal, sudah tersedia bawaan di macOS di /usr/bin/caffeinate. Jalankan caffeinate -i dan ia membuat assertion yang mencegah idle system sleep; -d menjaga layar tetap menyala; -s menahan system sleep, tapi hanya selama Mac terhubung ke AC power; -m mencegah disk masuk idle-sleep. Bungkus sebuah perintah dengannya — caffeinate -i make — dan jika Anda tidak menentukan flag, caffeinate otomatis memakai -i, menahan assertion itu persis selama proses tersebut berjalan.
Di balik layar, itu adalah panggilan ke IOPMAssertionCreateWithName yang meminta jenis assertion seperti PreventUserIdleSystemSleep — primitive low-level yang sama dengan yang menjadi dasar mode Keep Awake milik LidRun sendiri saat lid terbuka. Ini bukan kritik terhadap caffeinate; ini adalah tool yang tepat, dibangun dengan benar, untuk hal yang menjadi targetnya.
Untuk build yang panjang, unduhan besar, test suite, atau proses Codex atau Claude Code semalaman dengan lid terbuka, satu baris perintah itu sudah benar-benar cukup. Tidak ada alasan untuk memakai sesuatu yang lebih berat.
Kata yang perlu diperhatikan adalah idle. caffeinate memblokir sleep yang terjadi saat Anda meninggalkan laptop yang lidnya terbuka dan macOS memutuskan Anda sedang tidak memakainya. Itu satu jenis sleep tertentu — bukan semuanya.
Kenapa lid tertutup adalah masalah yang berbeda
Menutup lid tidak memicu idle sleep — melainkan clamshell sleep, perilaku macOS yang terpisah dan lebih rendah levelnya. Kecuali ada monitor eksternal, AC power, serta keyboard atau mouse yang secara aktif menjalankan mode desktop dengan layar tertutup yang sesungguhnya, macOS akan men-suspend mesin dalam hitungan detik setelah lid ditutup — ada assertion atau tidak.


Tidak ada assertion berbasis IOPMAssertionCreateWithName yang menjangkau jalur itu — bukan milik caffeinate, dan bukan pula aplikasi lain yang dibangun di atas primitive yang sama. Bahkan -s, flag terkuat caffeinate, secara eksplisit dibatasi dalam man page-nya sendiri sebagai "valid only when system is running on AC power" (hanya berlaku saat sistem berjalan dengan AC power), dan tetap tidak menyebut apa pun soal lid.
Jadi, skenario yang makin sering terjadi — menjalankan agen atau proses fine-tune, menutup laptop, lalu pindah ke ruangan lain — membuat proses itu ter-suspend begitu lid ditutup. caffeinate tetap setia menahan assertion-nya; tapi lid tetap menang, karena idle sleep dan clamshell sleep menjawab dua pertanyaan yang berbeda.
Panduan terkaitClosed-lid mode di macOS, tanpa kextSolusi gratis: pmset disablesleep
Satu-satunya cara yang terdokumentasi dan publik untuk mengubah perilaku saat lid ditutup ketika memakai baterai, tanpa monitor eksternal, adalah pengaturan pmset disablesleep. Perintahnya: sudo pmset -a disablesleep 1 membuat lid bisa ditutup tanpa membuat Mac sleep, dan sudo pmset -a disablesleep 0 mengembalikan perilaku sleep saat lid ditutup ke kondisi normal.


Perintah ini akan meminta password admin Anda saat dijalankan secara manual (flag -a membuatnya berlaku di seluruh sistem), dan langsung berlaku seketika — tidak perlu restart.
Itulah mekanisme sebenarnya yang diaktifkan oleh mode Closed-Lid milik LidRun di balik layar, dan menjalankannya sendiri untuk satu proses semalaman tidak memakan biaya apa pun dan memang berhasil. Jika ini cuma sesekali, itu seringkali sudah benar-benar cukup.
Risiko melakukannya secara manual — dan kenapa aplikasi keep-awake lain menabrak tembok yang sama
Masalahnya ada pada apa yang tidak dilakukan pmset disablesleep dengan sendirinya: ini pengaturan global dan persisten. Tidak terbatas pada sesi terminal Anda atau proses yang untuknya Anda mengaktifkannya — nilainya tetap 1 sampai Anda secara eksplisit mengembalikannya ke 0 atau me-restart Mac. Lupa menjalankan perintah kedua, atau jendela terminal maupun aplikasi tempat Anda menjalankannya crash sebelum sempat dikembalikan, dan Mac akan menolak sleep meski lid tertutup — bahkan saat diam di dalam tas — sampai Anda menyadarinya dan memperbaikinya secara manual.


Dan dengan lid tertutup, Mac yang masih menyala tidak bisa membuang panas seperti saat lid terbuka. Menjalankan sesi di dalam ransel yang tertutup rapat adalah kasus yang patut diwaspadai, terlepas dari tool mana yang mengaktifkan disablesleep — aturan yang jujur adalah menjaga Mac yang sedang berjalan tetap punya ventilasi, bukan tertutup rapat.
Ini juga bukan celah yang bisa ditutup dengan pengganti caffeinate yang lebih rapi. Amphetamine, KeepingYouAwake, Lungo, dan Caffeine semuanya adalah tool menu-bar yang solid dan dibangun dengan baik, dengan kelebihan nyata — UI yang lebih rapi, timer sesi, aturan yang dipicu aplikasi tertentu — tapi semuanya bekerja lewat primitive assertion idle-sleep IOKit yang sama dengan caffeinate. Tidak satu pun dari mereka mengesampingkan clamshell sleep juga: lid tertutup saat memakai baterai tetap membuat Mac sleep di bawah Amphetamine atau KeepingYouAwake, persis seperti di bawah caffeinate -i biasa. Itu bukan berarti aplikasi-aplikasi tersebut kekurangan fitur — mengesampingkan sleep saat lid ditutup butuh eskalasi pmset disablesleep (atau setup clamshell dengan monitor eksternal), bukan sekadar wrapper assertion yang lebih rapi.
Apa yang sebenarnya dibutuhkan alur kerja AI dengan lid tertutup yang lebih aman
Mengaktifkan disablesleep secara manual bisa membawa satu proses melewati semalaman, tapi "tetap menyala apa pun yang terjadi" adalah target yang salah untuk sesuatu yang berjalan dengan lid tertutup, memakai baterai, dan mungkin tanpa pengawasan. Yang benar-benar dibutuhkan di atas pengaturan itu adalah pembersihan yang andal dan batas yang menghormati baterai serta panas.


Soal pembersihan: LidRun memasangkan pengaktifan disablesleep dengan menonaktifkannya kembali di setiap stop, quit, dan penghentian normal, dan — setelah Anda menyetujui helper istimewanya — melakukan itu tanpa perlu password admin setiap kali. Jika aplikasi dimatikan paksa sebelum sempat membersihkan, sebuah file heartbeat kecil mencatat bahwa Closed-Lid sedang aktif; saat LidRun berikutnya dijalankan, ia memeriksa status sisa itu dan mengembalikan disablesleep ke 0. Reset ini terjadi pada peluncuran berikutnya, bukan seketika saat crash terjadi — hal ini penting diketahui, bukan diasumsikan begitu saja.
Soal baterai: keep-awake otomatis berhenti di bawah ambang batas yang Anda tentukan, defaultnya 20% dan bisa disesuaikan antara 15% sampai 50%. Di bawahnya ada batas darurat force-sleep terpisah — default 4%, bisa disesuaikan antara 4% sampai 8% — yang berjalan terlepas dari pengaturan auto-stop, karena macOS butuh sedikit ruang agar benar-benar bisa menyelesaikan proses sleep sebelum baterai benar-benar habis.
Soal panas: saat sinyal thermal kasar bawaan macOS melaporkan chip sudah sangat panas, LidRun secara default mematikan mode Closed-Lid dan memberi tahu alasannya — Mac terlalu panas, buka lid atau perbaiki sirkulasi udara — alih-alih membiarkan Mac yang tertutup rapat terus memanas. Ini adalah langkah mundur sebagai pengaman, bukan klaim bahwa Mac yang tertutup tidak bisa overheat; aturan dasarnya tetap menjaga Mac yang sedang berjalan agar punya ventilasi.
Ada juga mode charging-only dan timer untuk proses yang Anda ingin assertion-nya hanya ada selama terhubung ke charger, atau berakhir dengan sendirinya setelah jangka waktu tertentu, alih-alih mengandalkan Anda untuk ingat menghentikannya. Digabungkan, begitulah bentuk janjinya: selama agen berjalan, tetap menyala; saat agen selesai, atau proses jadi tidak aman, lepaskan dan biarkan Mac sleep. Bukan wake lock buta yang bersikeras melawan baterai dan sensor thermal — keamanan menang di atas kenyamanan saat keduanya berbenturan.
Memakai caffeinate (atau Amphetamine) bersama LidRun
Ini tetap bukan soal caffeinate lawan LidRun. caffeinate unggul untuk tugas yang menjadi tujuannya dibangun, dan banyak alur kerja yang tidak pernah membutuhkan lebih dari satu baris perintahnya — sama halnya dengan Amphetamine, KeepingYouAwake, atau Lungo untuk keep-awake saat lid terbuka dengan UI menu-bar yang lebih rapi.
Jika Anda membiarkan lid tetap terbuka, caffeinate -i (atau aplikasi mana pun di antara itu yang sudah Anda sukai) sering kali menjadi jawaban paling sederhana. Jika Anda menutup lid untuk proses AI dan dev yang panjang dan ingin ada batas pengaman baterai dan thermal di sekitarnya, itulah celah spesifik yang diisi LidRun.
Banyak orang memakai keduanya sekaligus: caffeinate untuk tugas cepat yang dibatasi pada satu perintah di terminal, LidRun untuk proses tanpa pengawasan dengan lid tertutup, di mana lupa mengembalikan pengaturan sistem yang bersifat global benar-benar berisiko.
LidRun menjaga pekerjaan Anda tetap jalan saat layar tertutup, dengan perlindungan baterai dan suhu bawaan.
Sudah punya LidRun? Baca panduan setup-nya →
Baru kenal LidRun? Lihat harga →
Sering ditanyakan
Tidak dengan sendirinya. caffeinate memblokir idle system sleep; menutup lid justru memicu clamshell sleep, yang tidak bisa disentuh oleh assertion idle-sleep mana pun — termasuk milik caffeinate. Anda butuh jalur pmset disablesleep (atau monitor eksternal yang secara aktif menjalankan mode clamshell desktop yang sesungguhnya) untuk itu.
Sama sekali tidak. Ini tool bawaan yang andal dan pilihan tepat untuk banyak kebutuhan keep-awake saat lid terbuka. Yang jadi persoalan di sini adalah cakupannya, bukan kualitasnya: caffeinate memang tidak pernah dirancang untuk menangani lid tertutup, dan man page-nya sendiri menyebutkan hal itu — bahkan flag terkuatnya, -s, hanya berlaku saat memakai AC power dan tidak pernah menyebut soal lid.
Ini perintah nyata yang terdokumentasi: atur ke 1 sebelum menutup lid, kembalikan ke 0 setelah selesai. Perintah ini berhasil, dan untuk satu proses semalaman, menjalankannya secara manual tidak masalah. Risikonya adalah sifatnya yang global dan persisten — tetap aktif sampai Anda secara eksplisit mematikannya atau me-restart Mac, jadi lupa membersihkannya, atau crash sebelum sempat dikembalikan, membuat Mac tidak bisa sleep meski lid tertutup sampai Anda menyadarinya dan memperbaikinya.
Tidak lebih jauh dari caffeinate. Semuanya adalah tool keep-awake menu-bar yang bagus, dibangun di atas primitive assertion idle-sleep yang sama, dan tidak satu pun mengesampingkan clamshell sleep saat memakai baterai. Lid yang tertutup tetap membuat Mac sleep di bawah aplikasi mana pun dari mereka, kecuali pmset disablesleep, atau setup clamshell dengan monitor eksternal, juga ikut berperan.
Toggle yang andal dikembalikan ke posisi mati, termasuk setelah crash; batas baterai agar proses panjang tanpa pengawasan tidak menguras baterai sampai kosong; langkah mundur thermal agar Mac yang tertutup rapat tidak terus memanas; dan idealnya opsi charging-only atau timer agar Anda tidak mengandalkan ingatan untuk menghentikannya.
Bisa. Keduanya bisa berdampingan dengan baik — caffeinate untuk tugas cepat yang dibungkus perintah saat lid terbuka; LidRun untuk proses lid tertutup tanpa pengawasan, di mana pembersihan disablesleep serta batas pengaman baterai dan thermal benar-benar penting.