Mac系统原生不支持按电池温度阈值触发桌面警告弹窗,因macOS未向用户层暴露电池温度传感器读数,也未提供对应自动化机制;所有相关监控均由AppleSmartBatteryManager在底层封闭处理,仅用于热节流与保护性休眠。

Mac系统原生不支持按电池温度阈值触发桌面警告弹窗,因为macOS未向用户层暴露电池温度传感器读数,也未提供基于该数值的自动化提醒机制。
为什么系统设置里找不到这个选项
macOS将电池温度监控完全封装在电源管理子系统(AppleSmartBatteryManager)中,仅用于触发底层热节流与保护性休眠,不开放API给「通知中心」「快捷指令」或「自动化」等用户可配置模块。你在「系统设置→电池」中看到的所有选项,均不包含温度阈值设定项——【这不是隐藏功能,而是根本不存在】。
绕过限制的可行路径
必须借助第三方工具读取SMBIOS或I/O注册表中的原始温度值,并用脚本+通知服务组合实现弹窗逻辑。
方法一:用Stats + 自定义Shell脚本联动
1. 安装Stats(开源免费,支持Intel/Apple Silicon)并启用「Battery」模块,它能读取B0Tc、B1Tc等电池区域温度寄存器值;
2. 新建脚本文件temp_alert.sh,内容为:
#!/bin/bash
temp=$(/usr/local/bin/stats battery | grep "Temperature" | awk '{print $2}' | sed 's/°C//')
if (( $(echo "$temp > 45" | bc -l) )); then
osascript -e 'display notification "电池温度已达'"$temp"'℃!请暂停高负载任务" with title "高温警告"'
fi
3. 用launchd每30秒执行一次该脚本——需创建plist文件放入~/Library/LaunchAgents/并执行launchctl load;
注意:Stats读取的电池温度是估算值,非物理传感器直连,误差约±3℃;若显示为空,说明当前机型未公开该寄存器(如M3 MacBook Air已屏蔽B0Tc)。
方法二:用SSDOR的温度告警逻辑移植(仅限Mac mini台式机)
SSDOR虽专为NVMe硬盘设计,但其底层使用IOKit读取AppleSmartBattery的IORegistryEntry数据。你可复制其源码中battery_temp_monitor.m里的kIOBatteryTemperatureKey解析逻辑,编译成轻量CLI工具,再套用同上脚本结构;【此操作需Xcode命令行工具与基础C编译知识,编译失败将导致脚本无法运行】。
更可靠的操作替代方案
第一步:打开「系统设置→电池→选项」→ 关闭「优化电池充电」;
第二步:在终端执行sudo pmset -a tcpb 1 → 启用电池峰值性能模式(强制维持更高供电电压,减少因温升导致的动态降频);
第三步:安装Fanny → 将菜单栏温度小组件拖至顶部状态栏 → 目视盯住CPU温度曲线,当连续3秒高于75℃时手动触发「屏幕保护程序」(Control+Shift+Eject),强制黑屏降温;
这一步无需脚本,不依赖温度读数精度,且能立即中断GPU/CPU持续满载状态。

















