Bagaimana AI Agent Mengubah Manajemen Daya Laptop

Henry AGI
5 menit bacaJun 2026
Bagaimana AI Agent Mengubah Manajemen Daya Laptop

AI agent mengubah manajemen daya laptop dengan mematahkan satu sinyal yang selalu dipakai macOS untuk menentukan kapan harus tidur: input pengguna. Coding agent yang membaca file, mengedit kode, dan menjalankan test selama dua atau tiga jam tidak menghasilkan satu pun ketukan keyboard atau gerakan mouse, sehingga macOS menganggap semua itu sebagai waktu idle — lalu menidurkan mesin di tengah pekerjaan, mematikan agent dan meninggalkan diff yang setengah diterapkan. Kegagalan seperti ini nyaris tidak pernah terjadi lima tahun lalu, karena hampir tidak ada yang berjalan tanpa pengawasan selama berjam-jam berturut-turut. Berikut alasan kenapa ini terjadi, apa yang sebenarnya dilakukan oleh perbaikan gratis, dan di titik mana perbaikan itu kehabisan tenaga.

Kenapa Idle Sleep Masuk Akal — Sampai AI Agent Mematahkan Asumsi Itu

Manajemen daya laptop dibangun untuk ritme manusia. Tidak ada input keyboard selama beberapa menit: layar meredup. Sedikit lebih lama: tidur. Idle timer dari Apple masuk akal karena tugas mesin adalah menunggu Anda, dan menunggu itu menghabiskan baterai. Assertion yang dipegang sebuah app agar Mac tetap terjaga terikat pada proses (process-bound) — begitu app itu keluar atau crash, macOS otomatis melepaskannya. Ini pilihan desain yang disengaja, dan justru itulah yang membuat model ini aman dibangun seperti ini selama tiga puluh tahun.

Model ini bertahan selama satu dekade unduhan latar belakang, kompilasi panjang, dan encoding video, karena tugas-tugas itu selalu selesai dengan cepat atau memegang power assertion untuk memberi sinyal ke OS selama berjalan. Video renderer memegang media assertion; xcodebuild selesai dalam hitungan menit lalu keluar. Mesin selalu punya sinyal untuk dipakai, dan sinyal itu selalu membersihkan dirinya sendiri.

Tidak ada bagian dari desain itu yang mengantisipasi beban kerja yang berjalan berjam-jam tanpa input pengguna sama sekali dan tanpa batas penyelesaian yang alami. Skenario itu sederhananya belum ada saat model daya ini dirancang.

Kenapa Mac Anda Tidur di Tengah Sesi Agent

AI coding agent — Claude Code, Cursor's background agent, Aider, GitHub Copilot Workspace — bekerja dengan merangkai puluhan langkah: membaca file, merencanakan perubahan, menulis kode, menjalankan test, menafsirkan hasilnya, lalu mengulang. Satu tugas refactoring saja bisa berjalan dua sampai tiga jam tanpa ada orang di depan keyboard.

LidRun
Diagram comparing macOS idle-sleep countdown for a human session versus an AI agent session, showing the agent's work is invisible to the idle timer
macOS hanya mendeteksi aktivitas keyboard, mouse, dan display — AI agent tidak menghasilkan satu pun dari itu, sehingga idle timer habis di tengah pekerjaan.

macOS tidak melihat semua itu sebagai aktivitas. Tidak ada event keyboard, tidak ada gerakan mouse, tidak ada frame layar yang dirender. Idle timer menghitung mundur sampai nol, layar tidur, dan sistem menyusul tak lama kemudian — menghentikan sesi terminal di tengah pekerjaan.

Kalau Anda tidak yakin apakah ini benar-benar terjadi, jangan percaya Activity Monitor setelah kejadian — prosesnya sudah lenyap begitu saja dari daftar. Bukti yang lebih jelas ada di Terminal: pmset -g log | grep -i sleep menampilkan event sleep dan wake yang sebenarnya lengkap dengan timestamp, jadi Anda bisa mencocokkan jeda di log agent Anda sendiri dengan sleep sistem yang tercatat macOS pada momen yang sama.

Ini bukan bug macOS. Idle sleep adalah perilaku yang benar untuk mesin yang memang benar-benar idle. Masalah strukturalnya adalah OS tidak punya konsep bawaan tentang proses yang melakukan pekerjaan kognitif atas nama pengguna — pekerjaan yang justru ingin diselesaikan oleh pengguna.

Panduan terkaitApa Itu Lapisan Runtime yang Aman untuk Mac?

Perbaikan Gratis: caffeinate, pmset, dan App Wake-Lock di Menu Bar

Hal pertama yang layak dicoba tidak berbayar dan sudah tersedia bawaan di macOS. caffeinate -i memegang jenis power assertion yang sama dengan yang dipegang LidRun untuk kasus lid terbuka — system idle-sleep assertion — dan pola paling bersih adalah menyerahkan langsung perintah agent ke dalamnya: caffeinate -i your-agent-command. Assertion itu lalu terikat ke proses tersebut dan otomatis dilepas begitu agent selesai, alih-alih terus berjalan sampai Anda ingat untuk mematikannya.

LidRun
Diagram showing why a normal wake-lock assertion cannot stop clamshell sleep, and the two free ways around it: an external display or pmset disablesleep
Menutup lid memicu jalur sleep yang berbeda dari idle sleep — caffeinate saja tidak menjangkaunya.

Kalau Anda lebih suka tidak menyentuh Terminal, ide yang sama tersedia satu klik lewat app di menu bar. Amphetamine, KeepingYouAwake, Lungo, dan app Caffeine yang namanya memang pas, semuanya memegang jenis assertion yang sama dengan caffeinate, hanya saja lewat toggle GUI dan timer, bukan command line. Untuk kasus yang memang jadi tujuan mereka dibuat — Mac tercolok listrik, lid terbuka, ada orang di dekatnya yang akan sadar kalau ada yang tidak beres — semua app itu menjalankan tugasnya dengan baik.

Tidak satu pun dari ini — termasuk caffeinate — bisa membuat MacBook tetap berjalan dengan lid tertutup, kecuali ada monitor eksternal yang terhubung. Menutup lid memicu jalur clamshell sleep yang terpisah dan lebih rendah level-nya, yang tidak bisa dihentikan oleh idle-sleep assertion; ini mekanisme yang berbeda dari yang dipakai bersama oleh caffeinate dan LidRun untuk kasus lid terbuka. Kalau Anda punya setup meja kerja, perbaikan gratisnya benar-benar gratis: colokkan monitor eksternal (dan keyboard atau mouse, jika Mac belum mendeteksi salah satunya), tutup lid, dan macOS akan memperlakukannya sebagai desktop — tanpa perlu tool tambahan. Tanpa monitor, satu-satunya cara publik yang tersedia adalah sudo pmset -a disablesleep 1, yang meminta password admin dan punya jebakan nyata yang dibahas berikutnya.

Di Mana Perbaikan Gratis Kehabisan Tenaga: Baterai, Panas, dan Setelan pmset yang Macet

caffeinate dan app wake-lock di menu bar tidak punya batas bawah baterai. Tinggalkan MacBook yang memegang wake assertion pada baterai 40% dengan loop agent yang berat, dan sangat mungkin Anda kembali menemukan baterai habis, sesi yang hilang, dan diff yang setengah diterapkan — tool itu melakukan persis seperti yang dijanjikan, hanya saja tidak punya cara untuk berhenti sebelum dayanya habis. Seberapa cepat ini benar-benar terjadi sangat bervariasi: agent yang sebagian besar menunggu respons API nyaris tidak membebani CPU, sementara yang menjalankan model lokal bisa membuat setiap core sibuk selama berjam-jam. Ketidakpastian itulah yang membuat batas persentase baterai bekerja lebih baik di sini dibanding timer tetap — Anda tidak tahu di muka berapa lama empat jam "kerja AI" itu akan benar-benar menghabiskan daya.

LidRun
Chart showing CPU throttle dropping to about 24 percent inside a bag versus 80 percent-plus under normal lid-open load, with the OS thermal signal lagging behind
Sinyal thermal bawaan OS bisa saja menunjukkan 'Fair' padahal chip sudah throttle berat — diukur pada Intel MacBook di dalam tas.

Panas adalah risiko yang lebih halus, dan ini bisa diukur, bukan sekadar perasaan. macOS sendiri hanya memberi sinyal yang kasar — ProcessInfo.thermalState, empat tingkatan: Nominal, Fair, Serious, Critical — dan sinyal itu bisa tertinggal dari kenyataan. Dalam satu pengujian internal pada MacBook Intel (i7-1068NG7), beban kerja normal dengan lid terbuka bertahan di sekitar 95°C dengan throttle CPU tetap di atas 80%; ketika disegel di dalam tas dengan beban yang sama, throttle sebenarnya turun sampai sekitar 24% sementara thermalState masih membaca "Fair" — chip sudah mulai melindungi dirinya sendiri jauh sebelum sinyal level-OS menyusul. Kesenjangan itulah yang membuat wake lock yang hanya memeriksa thermalState, atau tidak memeriksa apa pun sama sekali, tidak punya pengaman nyata di ruang tertutup: lid yang hampir menutup, permukaan lembut yang menutupi ventilasi, atau di dalam tas.

Solusi clamshell punya mode kegagalannya sendiri. pmset -a disablesleep 1 adalah setelan global dan persisten yang tidak terhubung ke proses spesifik mana pun. Kalau apa pun yang mengaktifkannya crash — sebuah script, sesi Terminal, sebuah app — setelan itu tetap di 1 dan Mac tidak akan lid-sleep lagi sampai ada sesuatu yang secara eksplisit mengembalikannya ke 0 (sudo pmset -a disablesleep 0) atau Anda reboot. Ini jebakan nyata yang sudah terdokumentasi, bukan sekadar hipotesis: setelan itu sederhananya tidak tahu bahwa proses yang memintanya sudah lenyap.

Alur Kerja yang Lebih Aman untuk Sesi AI Agent yang Panjang

Untuk sesi singkat di siang hari saat Anda di depan meja dan tercolok listrik, caffeinate atau app menu bar sudah benar-benar cukup — tidak perlu tool tambahan, dan memang jujur untuk mengatakan itu.

Untuk sesi semalaman, sesi dengan baterai saja, atau sesi lid tertutup, Anda butuh tiga hal yang tidak digabungkan oleh tool gratis: batas bawah baterai agar sesi berhenti sebelum mesin mati, bukan sesudahnya; kesadaran terhadap tekanan termal yang sebenarnya, bukan cuma sinyal kasar dari OS; dan — kalau lid tertutup — cara untuk pulih otomatis kalau apa pun yang memegang disablesleep crash, alih-alih membiarkan Mac tersangkut. Kombinasi itulah yang kurang lebih menjadi tujuan lapisan runtime yang aman untuk kerja AI di Mac: bukan wake lock yang lebih kuat, tapi satu yang mengawasi kondisi-kondisi yang bisa membuat sesi terus berjalan menjadi tidak aman, lalu mundur secara halus alih-alih terus berjalan tanpa arah.

Kalau Anda lebih suka tidak mengurus daya lokal sama sekali, ada alternatif yang sah: jalankan agent di mesin remote — cloud VM, GitHub Codespace, atau Mac mini yang selalu menyala dan Anda akses lewat SSH — lalu biarkan laptop Anda tidur seperti biasa selagi pekerjaan berjalan di tempat lain. Trade-off-nya nyata: Anda kehilangan kenyamanan bekerja langsung di local checkout, dan Anda membayar compute yang mungkin sebenarnya tidak perlu. Untuk banyak alur kerja lokal dengan repo di tempat, menjaga laptop itu sendiri tetap terjaga dan aman masih jadi jalan yang lebih sederhana.

Di Mana LidRun Berperan

Aturan LidRun sederhana: agent sedang berjalan, tetap terjaga; agent selesai atau kondisinya tidak aman, lepaskan dan biarkan Mac tidur. Mekanismenya adalah process watcher (Auto-Watch) yang melakukan polling setiap sepuluh detik terhadap proses-proses yang Anda minta untuk dilacak, dan hanya memegang wake assertion selama setidaknya satu di antaranya benar-benar memakai CPU di atas ambang batas (20% secara default) — dengan masa tenggang 60 detik supaya proses yang sesaat idle karena menunggu respons model atau disk I/O tidak membuat assertion menyala-mati berulang kali. Begitu tidak ada lagi proses yang dilacak masih berjalan, assertion melepas dirinya sendiri. Itulah separuh janji "agent selesai", dan bukan timer tetap atau sesuatu yang harus Anda ingat untuk dimatikan sendiri.

LidRun
Battery percentage bar showing LidRun's adjustable auto-stop threshold and hard 4 percent floor compared to a blind wake lock with no floor
Dua guardrail baterai yang bekerja bersama: ambang yang Anda atur sendiri, dan hard floor di bawahnya yang tidak bisa diubah.

Di sisi baterai, ambang batas auto-stop yang Anda atur — 20% secara default, bisa disesuaikan antara 15% sampai 50% — melepaskan assertion sehingga macOS bisa idle-sleep seperti biasa, alih-alih terus menguras baterai. Di bawah itu ada batas bawah yang tidak bisa diubah, sekitar 4%: bahkan kalau auto-stop diatur agresif rendah, LidRun tetap meminta Mac untuk tidur mendekati baterai kosong, alih-alih membiarkan sesi berjalan sampai mati total. Di sisi termal, LidRun membaca suhu SMC yang sebenarnya dan persentase throttle CPU, berdampingan dengan sinyal level-OS, lalu mundur pada sekitar 98°C atau throttle di 50% ke bawah (serious) dan 100°C atau throttle di 30% ke bawah (critical) — lebih dekat ke kondisi hardware yang sebenarnya dibanding thermalState saja.

Closed-Lid mode memakai tuas pmset -a disablesleep yang sama seperti dijelaskan di atas, diterapkan lewat privileged helper yang disetujui sekali saja, jadi bukan prompt password admin setiap kali. Mode "Sleep when done"-nya otomatis menidurkan Mac setelah 10, 20, atau 30 menit tanpa ada proses yang dilacak masih berjalan, dan sebuah crash-guard heartbeat mendeteksi nilai disablesleep yang tersangkut di 1 akibat sesi sebelumnya yang crash, lalu me-reset-nya secara otomatis pada peluncuran app berikutnya — mode kegagalan spesifik yang dijelaskan di atas, ditutup secara otomatis alih-alih dibiarkan sampai Anda menemukannya sendiri. Safety Governor tetap berlaku di bawah semua ini: ia bisa menghentikan atau meminta Mac tidur ketika baterai atau panas menjadi tidak aman, baik lid terbuka maupun tertutup.

Keep Awake, auto-stop baterai, dan process watching gratis tanpa batas waktu — LidRun tidak mengunci fitur dasar di balik trial. Closed-Lid mode, fitur yang lebih berat dan lebih berisiko, memberi Anda sejumlah sesi gratis terbatas untuk dicoba sebelum meminta Anda membuka Pro. Kalau sesi AI agent semalaman dan lid tertutup jadi bagian rutin dari alur kerja Anda, bukan sekadar sesekali, menjaga AI agent tetap berjalan saat Anda tidur layak dibaca selanjutnya.

Coba ini ketimbang melawan tidur saat layar tertutup

LidRun menjaga pekerjaan Anda tetap jalan saat layar tertutup, dengan perlindungan baterai dan suhu bawaan.

Unduh untuk macOS

Sudah punya LidRun? Baca panduan setup-nya →

Baru kenal LidRun? Lihat harga →

Sering ditanyakan

Apakah AI coding agent butuh setelan khusus di Mac?

Tidak selalu. Untuk sesi singkat saat Anda di depan meja dan tercolok listrik, caffeinate -i your-agent-command atau app keep-awake di menu bar sudah menangani masalah utamanya — timer idle-sleep — dan tidak perlu yang lain. Untuk sesi yang lebih panjang, sesi semalaman, atau kerja dengan baterai saja, Anda juga butuh batas bawah baterai dan kesadaran termal, karena baik caffeinate maupun app wake-lock GUI sama-sama tidak punya keduanya secara bawaan.

Kenapa Mac tidur saat AI agent sedang berjalan?

macOS mengukur waktu idle berdasarkan input pengguna — event keyboard, gerakan mouse, dan aktivitas layar. AI agent tidak menghasilkan satu pun dari itu; ia berjalan di latar belakang tanpa menyentuh perangkat input apa pun. Begitu idle timer mencapai ambang batasnya, sistem tidur dan menghentikan sesi terminal agent atau menangguhkan prosesnya sepenuhnya.

Apakah caffeinate cukup untuk kerja AI agent semalaman?

Untuk mesin yang tercolok listrik di lingkungan yang stabil, caffeinate biasanya bekerja dengan baik. Ini jadi berisiko saat memakai baterai, karena ia memegang wake assertion tanpa batas bawah baterai — baterai 40% dan loop agent yang berjam-jam bisa berakhir di 0% dengan sesi yang hilang. caffeinate juga tidak berbuat apa-apa untuk lid tertutup tanpa monitor eksternal atau pmset -a disablesleep; menutup lid memicu jalur sleep berbeda yang tidak bisa dihentikan oleh assertion yang sama. Tool yang auto-stop pada ambang baterai rendah dan memperlakukan lid tertutup sebagai kasus terpisah mengurangi kedua risiko itu tanpa mengharuskan Anda mengawasi terus sesi yang berjalan.

Apa bedanya menjalankan AI agent dengan menjalankan build yang panjang?

Build yang panjang berjalan selama beberapa menit, keluar dengan bersih, dan banyak build tool memegang power assertion selama kompilasi. AI agent bersifat open-ended: mereka mengulang, memanggil API eksternal, menulis dan menguji kode, dan bisa berjalan berjam-jam tanpa waktu penyelesaian yang pasti. Kombinasi durasi panjang dan waktu selesai yang tidak bisa diprediksi inilah yang membuat manajemen daya jadi perhatian nyata — build yang selesai lebih cepat tidak merugikan Anda sama sekali; agent yang mati di tengah malam merugikan Anda satu sesi penuh.

Bagaimana cara mengetahui apakah Mac saya benar-benar tidur selama sesi agent?

Activity Monitor tidak akan membantu setelah kejadian — proses yang mati ya sudah lenyap begitu saja. Sinyal paling jelas ada di Terminal: jalankan pmset -g log | grep -i sleep untuk melihat event sleep dan wake yang sebenarnya lengkap dengan timestamp, lalu bandingkan dengan timestamp terakhir di log atau output agent Anda sendiri. Jeda yang cocok dengan event sleep yang tercatat mengonfirmasi hal itu.

Bisakah saya menjalankan AI agent dengan lid tertutup?

Bisa, tapi tidak cukup dengan caffeinate saja. Menutup lid memicu clamshell sleep, mekanisme terpisah yang tidak bisa dihentikan oleh idle-sleep assertion biasa. Dua opsi gratisnya adalah menghubungkan monitor eksternal (macOS lalu memperlakukan MacBook yang tertutup sebagai desktop, tanpa perlu tool tambahan) atau menjalankan sudo pmset -a disablesleep 1, yang membutuhkan password admin dan tetap aktif sampai ada sesuatu yang secara eksplisit mematikannya. Lapisan runtime yang aman dengan mode closed-lid khusus — lengkap dengan reset otomatis kalau setelan itu tersangkut akibat crash, ditambah pengaman baterai dan termal yang sama — menghilangkan kebutuhan untuk terus mengawasi opsi kedua itu.

Penasaran apakah LidRun cocok untuk Anda?

Biarkan ChatGPT, Claude, atau Perplexity yang mencari tahu — klik di bawah dan lihat pendapat AI tentang LidRun.