Mac Performance Optimizer 会分析 macOS 系统当前状态并给出可执行的优化建议。
适用场景:
- 用户要求“检查性能”“优化我的 Mac”“为什么我的 Mac 很慢”;
- 用户想审计正在运行的进程、内存或 CPU 占用;
- 用户要求做系统健康检查或资源分析;
- 用户反馈电池耗电快、只能撑几个小时,或询问是什么在耗电(见下方“电池模式”)。
运行方式: 运行分析脚本(路径相对于技能安装位置):
bash "$(dirname "$(readlink -f "$0" 2>/dev/null || echo "$HOME/.claude/skills/mac-optimizer")")/mac-optimize.sh"
如果技能是通过 npx skills add 安装的:
bash "$HOME/.claude/skills/mac-optimizer/mac-optimize.sh"
如何分析输出: 运行脚本后,分析输出并按影响等级(HIGH / MEDIUM / LOW)给出建议。
需要评估的关键指标:
- 内存压力:检查物理内存与已用量、交换空间使用、压缩内存大小。交换使用超过 RAM 的 50% 表示压力较大;空闲内存低于 500MB 属危急;压缩内存超过 RAM 的 50% 表示系统吃紧。
- 浏览器膨胀:统计浏览器进程数量及其占用的 RAM 百分比。50 个 Chrome/Brave 进程表示标签页过多;同时运行多个 Chromium 系浏览器属于重复占用内存;建议使用标签页挂起扩展或关闭标签页。
- Claude Code 会话:每个会话都占用内存。3 个空闲会话即建议关闭不用的会话。
- 容器运行时:Docker/OrbStack 虚拟机消耗大量 RAM,不活跃使用时可建议停止。
- 启动守护进程与代理:来自不需要应用的背景服务。标记不常用应用的守护进程(TeamViewer、Zoom、未使用的更新器),标记功能重复项(例如两个 NTFS 驱动)。
- 长时间运行的进程:累计 CPU 时间很高的进程,可能意味着内存泄漏或失控进程;若运行时间过长可建议重启。
- 磁盘空间:可用空间低于 20GB 时标记。
- 系统运行时间:超过 7 天时建议重启,以回收交换空间并重置压缩内存。
回复格式:
- 摘要表:关键指标及状态标识;
- 占用排行:按资源占用从高到低列出;
- 建议:按 HIGH / MEDIUM / LOW 影响分组;
- 快速见效项:用户可直接复制粘贴执行的命令。
示例快速见效命令(保留原文):
Quit an app not in use
osascript -e 'quit app "AppName"'
Purge inactive memory (temporary relief)
sudo purge
Enable low power mode on battery
sudo pmset -b lowpowermode 1
Disable a launch daemon (modern macOS — do NOT use launchctl unload)
sudo launchctl bootout system /Library/LaunchDaemons/com.example.plist
Prevent it from loading on next boot
sudo launchctl disable system/com.example.service
List and kill heavy processes
kill -TERM <PID>
电池模式: 当用户抱怨的是电池续航而非卡顿时应使用该模式。分两步:先采集,再分派给一个小型智能体团队。
- 采集
bash "$HOME/.claude/skills/mac-optimizer/mac-battery.sh"
无需 sudo。脚本会报告电池健康(容量 vs 设计容量、循环次数、实时放电瓦数、预计续航)、电池 pmset 配置、按功耗影响排序的进程、浏览器渲染进程大户、聊天与同步类应用、已知陷阱(打开活动监视器、caffeinate、大量 Claude Code 会话、tmux 面板数量、长时间运行)、睡眠断言,以及 24 小时唤醒次数。
- 分派给智能体团队 在一条消息中同时启动全部四个,使它们并行运行。使用 Agent 工具,subagent_type: general-purpose。对每个智能体,读取本技能目录下的 agents/<name>.md,从 frontmatter 中取 model:,并使用 markdown 正文作为提示词。把脚本的相关部分传入提示词,这样智能体无需重新采集。
Agent 与模型对应关系: battery-health-analyst:haiku,理由是对 7 个数字做算术和固定阈值判断,无需人为判断。 sleep-wake-auditor:haiku,理由是统计日志行数并把原因映射到已知 pmset 标志。 power-hog-hunter:sonnet,理由是需要识别未知进程并判断其使用是否合理。 background-services-auditor:sonnet,理由是需要了解第三方代理和应用是做什么的。
如果脚本已显示电池健康且暗唤醒少于 10 次,则不要启动两个 haiku 智能体。综合结论由主模型自行完成,不要委托出去。
如果已安装的智能体存在于 ~/.claude/agents/(见 README),改用 subagent_type: <name> 并跳过复制提示词这一步。
- 智能体做不到的事:
- 把浏览器渲染进程 PID 映射到具体标签页;用户需打开浏览器任务管理器。
- 测量每进程的瓦数,或 GPU 与显示器功耗;这需要 sudo powermetrics。给用户提供命令并主动提出解读其输出。
- 运行任何 sudo 命令;打印出来,让用户自行运行。
- 综合: 把四份报告合并成一个答案:
- 结论行:硬件因素与软件因素各自在续航缺口中的占比,来自健康分析师。
- 瓦数表:当前功耗、预计续航,以及前 5 个耗电大户及其预期可回收的电量。
- 按“每单位投入可回收的瓦数”排序的行动项。退出应用优于改 pmset 设置,改 pmset 设置优于清理启动代理。
- 当健康度低于 80% 时,把“更换电池”作为独立条目,不要埋没它。
阈值:功耗低于 10 W 属正常,10–20 W 属中等,超过 20 W 表示软件正在耗电。容量低于 80% 或显示“Service Recommended”意味着更换电池是当前单个最大的改善手段。
重要:launchctl unload 已废弃并在现代 macOS 上会失败,务必改用 launchctl bootout / launchctl disable。这些命令需要 sudo,应告诉用户在自己的终端中直接运行。
在建议 kill 之前始终警告用户;对 GUI 应用优先使用 osascript -e 'quit app'。