自动充放电循环
电量升到区间上限就切断适配器,让电池真实放电;降到下限再恢复供电重新充电,如此往复。
每切断一次适配器让电池放电、再充回来,都在消耗电池的循环次数、加速老化。BatteryKiller 不做任何电池保养,也不是省电工具。用之前请确认你不在乎这台机器的电池。
从区间循环、一键切换电源到菜单栏常驻,把电池的充放电节奏交回你手里。
电量升到区间上限就切断适配器,让电池真实放电;降到下限再恢复供电重新充电,如此往复。
一个按钮在「电池供电」与「直流电源供电」之间切换,按下即终止正在运行的循环。
拖动两个滑块设定放电下限与停充上限,靠近 5 / 10 / 20 / 30 与 80 / 90 / 100 时自动吸附;循环运行中区间会锁定。
大号电量百分比,加上供电状态(正在充电 / 已插电未充电 / 使用电池供电)与当前循环阶段说明。
图标随供电方式切换配色,菜单里可直接开关循环、切换电源、唤出窗口。关掉窗口不影响运行。
界面跟随系统语言,也可手动切换。循环期间申请电源断言防止机器睡过去,退出应用前自动恢复墙上供电。
装好之后就只剩拖两个滑块、开一个开关。
从 GitHub Releases 取 dmg 或 zip,拖进「应用程序」。项目未签名公证,首次打开需要右键 → 打开。
第一次点「自动循环」时输入一次管理员密码,把特权助手装进系统目录,此后不再询问。
拖动滑块选好下限与上限,打开「自动循环」开关,剩下的交给它自己往复。
一个窗口放完全部状态与操作,没有多余层级。
大号电量显示当前供电来源,下方一键切换电源,双滑块设定放电下限与停充上限,底部实时说明当前阶段。
中文环境显示中文,其余显示英文;也可以在窗口页脚或菜单栏菜单里手动切换,选择会被记住。
没有公开 API 可用,所以走的是 SMC 固件加一个最小权限助手这条路。
macOS 没有公开的「断开充电器」接口,真正的开关在 AppleSMC 固件里:写入 CHIE = 0x00 接通适配器,CHIE = 0x08 切断适配器,机器转为电池供电。
非 root 进程能读 SMC,但所有写入都会被内核拒绝。助手 bkhelper 由 launchd 以 root 常驻,对外只有 VERSION / STATUS / ON / OFF 四条指令。
SMC 固件存在「谎报成功」的情况,所以每次写入之后都会立刻读回比对,确认状态真的切换了才算数。
注意:CHIE 只表示电源通路的意愿,并不代表充电器是否物理接入;后者要看 AC-W 或 IOKit 的电源接口信息。应用基于 SMC 私有键实现,系统固件更新后行为可能变化,风险自负。
给明确知道自己在干什么的人:这台机器的电池你不在乎。
关于安装、权限与适用机型的常见疑问。
支持 Apple Silicon(arm64)且系统为 macOS 13 及以上的 Mac,Intel Mac 不在支持范围。此外只有在 SMC 的 CHIE 键存在且可写的机型上才能工作,其他机型启动后会直接提示「本机不支持软件控制电源适配器」——这个判断只读 SMC 元信息,不需要 root,所以不会白弹一次授权框。
项目没有 Apple 开发者签名,也没有做公证,Release 里的包是 ad-hoc 签名,所以 Gatekeeper 会拦一下。首次打开请右键 → 打开,或者先在终端执行 xattr -rd com.apple.quarantine /Applications/BatteryKiller.app 解除隔离属性。这是本项目的现状而非下载出错,每次升级新版本后都需要再做一次。
因为写入 SMC 必须以 root 身份进行,而图形界面进程始终以登录用户身份运行。应用会把特权助手 bkhelper 安装到 /Library/PrivilegedHelperTools 并交给 launchd 常驻,所以只需要授权这一次,之后不再弹框。
会,这就是它的用途。每切断一次适配器让电池放电、再充回来,都在消耗循环次数并加速老化,应用本身不做任何电池保养。如果你要的是延长电池寿命,这个工具不适合你。另外它基于 SMC 私有键实现,系统固件更新后行为可能变化,风险自负。
退出应用前会自动恢复墙上供电,不会把机器留在断电状态。另外循环运行期间会申请电源断言,避免机器空闲睡眠导致循环卡住。
不会。应用只在本机读取电池状态并读写 SMC,不联网、不收集任何信息,源码在 GitHub 上完全公开。