Smart Rules: Mac güç ve soğutma yönetimi için koşullu otomasyon

Smart Rules, LidRun'ın Mac güç otomasyonu için koşullu katmanıdır: bir koşul belirlersiniz — çalışan bir işlem, belirli bir yüzdenin altına düşen batarya, sıcak kalmaya devam eden gövde, bir zaman aralığı — ve bu koşul sağlandığı anda LidRun, siz hiçbir düğmeye dokunmadan Mac'i uyanık tutar, uyumasına izin verir, soğutma profilini değiştirir ya da uyarı gönderir. Bu, bir termostatın anahtarın yerini almasıyla aynı değişim: hedef durumu bir kez tarif edersiniz, kontrol etmeyi hatırlamak yerine uygulama sizin için sürekli kontrol eder. Aşağıda bir kuralın tam olarak neyi izleyebildiğini, neler yapmasına izin verildiğini, insanların bunu şu anda caffeinate ve pmset ile nasıl elle bir araya getirdiğini ve bu DIY yolun Mac'i istenenden daha uzun süre uyanık — ya da uykuda — bıraktığı noktaları bulacaksınız.
Tek bir uyanık-tut anahtarı neden yetmiyor
Manuel bir anahtarın tam olarak iki durumu vardır, oysa bir iş gününün çözülmesi gereken ikiden fazla problemi var. 40 dakikalık bir build boyunca tamamen uyanık kalması gereken aynı Mac, bir saat sonra hiçbir şey çalışmıyorken ve batarya yüzde 18'i gösteriyorken uyumakta serbest olmalı.
Yoğun dönemleri kapsamak için uyanık-tutmayı açık bırakırsanız, boşta geçen dönemlerde de Mac'i uyanık tutmuş olursunuz — boşa giden batarya ve sıcak bir masada boşuna dönen bir fan. İşler arasında kapatırsanız yine bir anahtarı bekleme işine geri dönersiniz, uzun bir işin başladığı anı yakalamaya çalışırsınız. Bir kural, tam da bu eksik orta noktayı dolduruyor: koşulu bir kez yazarsınız, LidRun sürekli kontrol eder ve eylem yalnızca koşul gerçekten doğru olduğunda tetiklenir.
Bunu otomatikleştirmenin ücretsiz, yerleşik yolu — ve nerede tıkanıyor
Çoğu insan önce özel bir uygulamaya yönelmiyor, tek seferlik bir iş için buna zaten gerek yok. macOS'ta iki gerçek araç geliyor. caffeinate -i some-command, some-command çalıştığı sürece boşta uykuyu engelliyor, iş bitince kendiliğinden devre dışı kalıyor — tek bir ön plan işi için gerçekten doğru araç bu. caffeinate -s aynı şeyi yapıyor ama yalnızca Mac AC gücündeyken, ki bu da çoğu build script'inin zaten istediği şey. Özellikle kapak için sudo pmset disablesleep 1, LidRun'ın kendi Closed-Lid modunun çevirdiği anahtarla aynı — macOS'a clamshell-uyku tetikleyicisini tamamen yok saymasını söylüyor, sudo pmset disablesleep 0 ise onu geri alıyor. macOS'ta terminale hiç dokunmadan "kapak kapalıyken açık tut" için ücretsiz bir yol daha var: güce takın, harici bir ekran bağlayın, kablolu ya da kablosuz bir klavye veya fare bağlayın; Apple'ın kendi clamshell modu, hiçbir üçüncü taraf yazılım olmadan Mac'i kapak kapalıyken tam güçte çalıştırır. Bir kurala daha yakın bir şey istiyorsanız, Shortcuts uygulaması bir batarya seviyesi ya da günün saati otomasyonundan "Run Shell Script" eylemini tetikleyebilir, yani batarya yüzde 20'nin altına düştüğünde sizin için caffeinate ya da pmset çağıran bir script çalıştırabilirsiniz.
Bunların hiçbiri yanlış değil, tek bir iş için dürüst olmak gerekirse gayet yeterli. Sorun, birden fazla koşulu üst üste bindirmeye başladığınızda ya da döngüyü kapatmayı unuttuğunuzda ortaya çıkıyor. Arka planda bir terminalde çalışır bırakılan bir caffeinate -i &, işinizin bittiğini bilmez — siz onu öldürmeyi hatırlayana kadar ya da hâlâ tam güçte çalışan Mac'i bir çantanın içinde kapağını kapatana kadar Mac'i uyanık tutar. pmset disablesleep 1'i unutmak daha kötü: süresi dolmaz, bataryanızı izlemez, gövdenin sıcak çalıştığını bilmez — eşleşen bir 0 gerçekten çalıştırılana kadar bu boot'ta ve bir sonrakinde devre dışı kalmış şekilde kalır. Bu yerleşik araçların hiçbiri CPU sıcaklığını okumaz (macOS bunu üçüncü taraf bir okuyucu olmadan bir shell script'e açmaz), yani bunların üzerine kurulu bir script, makine gerçekten ısındığında geri çekilmenin bir yolunu bulamaz ve neyin ne zaman tetiklendiğine dair de hiçbir kaydı olmaz.
Bir Smart Rule'un tepki verebileceği koşullar
Bir kural bir ya da daha fazla koşulla başlar ve LidRun bunların hepsinin aynı anda sağlanmasını ister — tek bir kural içinde OR mantığı yoktur; "ya bu ya da şu" gerekiyorsa aynı eylemlere sahip iki ayrı kural oluşturmanız gerekir. Bir koşul, bir işlem veya uygulama adını bir kalıpla eşleştirebilir (böylece bir kural Claude Code, Codex, Cursor, Ollama, Docker, bir Xcode build'i ya da bir python script'i üzerinden tetiklenir — çalışan bir işlem veya uygulama adıyla tam ya da önek olarak, büyük/küçük harf duyarsız şekilde eşleşir), belirli bir yüzdenin altına ya da üstüne düşen batarya, belirli bir süre boyunca belirli bir derecenin üzerinde kalan sıcaklık, batarya ile AC güç arasındaki fark, kapağın kapalı olması, N saniyedir eşleşen hiçbir iş yükünün çalışmamış olması ya da bir zaman aralığı olabilir.
Motor her 5 saniyede bir yeniden kontrol eder. Süreye dayalı koşullar — "X derecenin üzerinde Y saniye", "N saniyedir iş yükü yok" — yalnızca o kuraldaki tüm koşullar aynı anda sağlanırken zaman sayar. Bunlardan biri bile, kısa bir an için olsa dahi düşerse (AC bir saniyeliğine çekilir, bir iş yükü adımlar arasında bir an sönerse), bekleme sayacı sıfırlanır ve geri sayım baştan başlar. Bu kasıtlı bir tasarım: bir kural bir anlık titremeye değil, sürdürülen bir duruma tepki vermeli.
"N saniyedir eşleşen iş yükü yok" koşulu, o kurala yazdığınız belirli kalıba değil, Settings'te ayarladığınız aynı Auto-Watch kalıp listesine göre kontrol yapar — özel bir işten sonra otomatik serbest bırakma için kullanıyorsanız bilmekte fayda var: o işin işlem adını da Auto-Watch kalıplarınıza eklemeniz gerekir, yoksa kuralın izleyecek hiçbir şeyi kalmaz.
Sıcaklık, LidRun'ın doğrudan okuduğu SMC sensör anahtarlarından gelir. Her Mac'te aynı anahtar bulunmadığından, LidRun bir aday listesi dener ve geçerli en yüksek okumayı alır; yani bir kuralın karşılaştırdığı değer, makinenin gerçekten görebildiği en sıcak parçasıdır, bir tahmin değil. Belirli bir Mac'te bu karşılaştırma için okunabilir bir sensör yoksa, koşul basitçe hiçbir zaman doğru değerlendirilmez — kural hata vermek yerine pasif kalır.
Bir kuralın yapmasına izin verilenler
Eylemler LidRun'ın kendi kontrolleri etrafında dönüyor ve bu sınır kasıtlı: Mac'i uyanık tutmak, uyanık tutmayı durdurmak, donanımın izin verdiği ölçüde bir soğutma ön ayarına geçmek (Quiet, Balanced, AI Workload ya da Emergency Max), bildirim göndermek (telefonunuza isteğe bağlı push ile), Mac'i uyutmak, Closed-Lid modunu başlatmak ya da durdurmak, veya bir not kaydetmek. macOS'un bir uygulamaya izin vermediği şeyleri yapıyormuş gibi davranmıyor.
Fan yazma-kontrolü, Apple Silicon'da firmware ve SIP tarafından büyük ölçüde kısıtlanmıştır, bu yüzden bir soğutma eylemi manuel bir fan eğrisi dayatmak yerine donanımın açığa çıkardığıyla sınırlı kalır; fan kontrolü Mac'inizde ya da lisans katmanınızda mevcut değilse, kuralın soğutma adımı basitçe atlanır, diğer eylemleri — uyanık tut, bildir, uyut — yine de tetiklenir. Soğutma eylemleri ayrıca yalnızca yükseltir, asla düşürmez: fanları elle Max'e ayarladıysanız, bir kuralın "Balanced'a geç" adımı onları geri çekmez. Yalnızca bir acil-termal kural, zaten ayarlanmış olan neyse onu hesaba katmadan Max'i zorlar, ve rutin bir kuralın kasıtlı bir seçimi sessizce geri almasını engelleyen de tam olarak budur.
Bir kuralı açtıktan sonra hiçbir eylem onay istemez — Sleep-the-Mac ve Closed-Lid modu dahil, ki Smart Rules içindeki uygulama metninin sizi bu ikisini bilinçli olarak etkinleştirmeniz konusunda uyarmasının nedeni tam olarak bu. Bir kuralın yaptığı görünürdür ama henüz bir kural olarak etiketlenmiyor: "uyanık tut" ya da "Mac'i uyut" tetiklendiğinde, manuel bir eylemin üreteceğiyle aynı Activity Log kaydı oluşur (örneğin "Keep Awake started") — kayıt, hangi kuralın tetiklediğini söylemez. Yeni bir kuralı ince ayar yapıyor ve gerçekten tetiklendiğini doğrulamak istiyorsanız, Console.app'teki com.lidrun.app alt sistemi, RuleEngine kategorisi, kuralın adını her çalıştığında kaydeder — eşik değerlerini test ederken bakılacak daha kesin yer burası.
Smart Rules'un kendisi, kendi ana anahtarına sahip bir Pro özelliği ve Pro lisansta bile varsayılan olarak kapalı gelir. Ücretsiz katmandaki Auto Mode zaten algılanan işin etrafında uyanık-tutmayı başlatıp serbest bırakıyor; Smart Rules ise bunun üzerine gelen koşullu katman — gerçek bir risk olduğunda ekstra soğutma, uyarılar ya da kontrollü bir uyutma.
Yerleşik bir ön ayar ile bugün özelleştirebildikleriniz arasındaki fark
LidRun, AI kodlama ajanları, yerel AI, geliştirme & build ve güvenlik kategorilerinde 15 yerleşik kuralla gelir. Her birini açıp kapatabilirsiniz ama silemezsiniz; bunlardan beşi varsayılan olarak kapalı gelir — LM Studio, Python, Node/npm, Xcode build ve ffmpeg — çünkü "python" ya da "node" gibi geniş bir yorumlayıcı kalıbı, kutudan çıktığı haliyle herkes için açık bırakılamayacak kadar çok alakasız işlemle eşleşir.
Uygulama içi kural oluşturucunun bugün daha sınırlı olduğu yer şurası: Smart Rules penceresinden özel bir kural eklemek şu anda bir işlem adı kalıbı yazmak anlamına geliyor, bu da tek bir sabit kural şekli üretiyor — o işlem çalıştığında Mac'i uyanık tutar ve AI Workload soğutmasına geçer. Yukarıda ele alınan batarya-yüzdesi, sıcaklık-ve-süre, kapak ve zaman-aralığı koşullarının hepsi etkinleştirebileceğiniz yerleşik ön ayarlar olarak mevcut, ama görsel oluşturucu henüz bunlar için kendi eşik değerinizi yazmanıza izin vermiyor. Bugün özel bir batarya ya da sıcaklık kuralı istiyorsanız, bunu elde etmenin yolu yerleşik ön ayarlar; kuralların kendisi ise Application Support içinde düz bir JSON dosyasında yaşıyor, doğrudan içine bakmaktan çekinmiyorsanız.
Bir geliştiricinin gerçekten kuracağı kurallar
Çalışırken uyanık kal, iş bitince geri çekil: Claude Code, Codex, Cursor ve Ollama ön ayarlarının her biri, ilgili işlem çalışmaya başladığı anda Mac'i uyanık tutar ve AI Workload soğutmasına geçer; iş devam ederken kuralın her tik'te yeniden tetiklenmemesi için 5 dakikalık bir bekleme süresi vardır. Docker aynı muameleyi görür ama AI Workload yerine Balanced soğutmayla. Bunlardan herhangi birini yerleşik "10 dakikadır AI iş yükü yok → uyanık-tutmayı durdur" kuralıyla eşleştirirseniz, gece boyu süren bir model indirmesi ya da ajan çalıştırması, gerçekten boşta kaldığında Mac'i kendiliğinden serbest bırakır — gecenin geri kalanında uyanık-tutmayı açık bırakmak yerine.
İki güvenlik ön ayarı varsayılan olarak açıktır ve kurulum gerektirmez: batarya gücündeyken yüzde 10'un altına düşen batarya, düşük batarya bildirimi gönderir; batarya gücündeyken yüzde 5'in altına düşen batarya, Mac'i doğrudan uyutur. İkisi de bir iş yükü kuralının ne yaptığından bağımsız çalışır ve ikisi de her kuralın altında zaten batarya ve termal duruma göre uyanık-tutmayı sınırlayan uygulama-genelindeki güvenlik denetleyicisinin üzerinde durur.
İki sıcaklık ön ayarı, süre şartını pratikte gösteriyor: 90°C'nin üzerinde 5 dakika sürdürülürse Emergency Max soğutmasına geçer ve "Mac running hot" bildirimi gönderir; 95°C'nin üzerinde 2 dakika sürdürülürse doğrudan Mac'i uyutmaya geçer. İkisi de okumanın o kadar süre boyunca kesintisiz yüksek kalmasını gerektirir, böylece bir build sırasındaki normal, kısa bir sıçrama ikisini de tetiklemez. Hava akışı ve Mac'i nereye koyduğunuz hâlâ size kalmış — bir kural bir sayıya tepki verir, kapalı bir çantayı düzeltemez.
Yerleşik kalıpların dışındaki her şey için — vllm, Blender, garip bir ikili adına sahip bir eğitim script'i — o adı "Add a custom rule"a yazmak size tek adımda uyanık-tutma artı AI Workload soğutması kazandırır. O işin de bir batarya tabanına ya da bir zaman aralığına uymasını istiyorsanız, bugün tek bir kuraldan her şeyi yapmasını beklemek yerine, ilgili yerleşik güvenlik ön ayarlarını da yanında etkinleştirin.
LidRun, işinizi kapak kapalıyken, pil ve sıcaklık koruması yerleşik biçimde çalışır tutar.
LidRun zaten sizde mi? Kurulum rehberini okuyun →
LidRun'u yeni mi tanıdınız? Fiyatlara bakın →
Sık sorulanlar
Eşleşen bir işlem veya uygulamanın çalışıyor olması, belirli bir yüzdenin altına ya da üstüne düşen batarya, belirli bir süre boyunca belirli bir derecenin üzerinde kalan sıcaklık, batarya ile AC güç arasındaki fark, kapağın kapalı olması, N saniyedir eşleşen iş yükü olmaması ve bir zaman aralığı. Bir kuralın tüm koşullarının aynı anda sağlanması gerekir — tek bir kural içinde OR mantığı yoktur; "ya bu ya da şu" için iki kural kullanın.
Hayır. Eylemler LidRun'ın kendi araçlarıdır — uyanık tut, uyanık-tutmayı durdur, donanımın izin verdiği ölçüde bir soğutma ön ayarına geç, bildir, uyut ya da Closed-Lid modunu aç/kapat. Fan yazma-kontrolü Apple Silicon'da firmware ve SIP tarafından büyük ölçüde kısıtlanmıştır, bu yüzden bir soğutma eylemi bu sınırlar içinde çalışır; fan kontrolü mevcut değilse bu adım atlanır, kuralın diğer eylemleri yine de çalışır. Soğutma eylemleri yalnızca yükseltir, elle Max'e ayarlanmış bir değeri asla sessizce geri çekmez.
Evet — yerleşik ön ayarlar batarya gücündeyken yüzde 5'in altında Mac'i uyutur ve yüzde 10'un altında bildirim gönderir; ikisi de bir iş yükü kuralının ne yaptığından bağımsızdır. LidRun'ın güvenlik denetleyicisi zaten her kuralın altında batarya ve termal duruma göre uyanık-tutmayı sınırlıyor, yani bu tek güvence değil.
"N saniyedir eşleşen iş yükü yok" koşulunu kullanın. Tetiklenmeden önce Auto-Watch kalıp listenizin (Settings'te) o kadar süre boyunca hiçbir şey çalışmadığını göstermesini bekler, böylece adımlar arasındaki kısa bir duraklama onu erken tetiklemez. O belirli kurala yazılan bir kalıbı değil, genel Auto-Watch listenizi izler — o işin işlem adını da Auto-Watch'a eklemeniz gerekir, yoksa koşulun izleyecek hiçbir şeyi kalmaz.
Kural oluşturucudan henüz değil. Bugün özel bir kural yazmak bir işlem-kalıbı kuralı oluşturur — o işlem çalıştığında Mac'i uyanık tutar ve AI Workload soğutmasına geçer. Batarya, sıcaklık, kapak ve zaman-aralığı koşulları şu anda tek tek açıp kapatabileceğiniz yerleşik ön ayarlardan geliyor.
Motor her 5 saniyede bir kontrol yapar, ama çalışan işlemleri listelemeyi — asıl maliyetli kısım — yalnızca etkin en az bir kural gerçekten işlem bilgisine ihtiyaç duyduğunda yapar. Yalnızca batarya, termal, güç kaynağı, kapak ya da zaman-aralığı kuralları açıksa, kontrol neredeyse bedava bir no-op olarak kalır.