Files
OpenStats/README.zh-CN.md
T
gentpan dc5c987b96 菜单栏风格、面板浅色与深色主题,修复面板打不开
- 菜单栏八种风格整体套用、可按指标单独指定,网速三种样式,悬停显示完整读数,字号缩小并统一
- 面板浅色、深色实色主题与一键切换,液态玻璃改为可选
- 修复关闭液态玻璃后面板内容尺寸翻倍导致看起来打不开,首次打开时高度偏小
- Developer ID 自动签名,辅助工具按自身签名团队校验调用方,新增发布脚本
- 更新日志、README、截图同步
2026-09-13 04:09:02 +05:00

16 KiB
Raw Blame History

OpenStats

OpenStats

Mac 的状态,抬眼就看见——CPU、GPU、内存、网络与温度常驻菜单栏,还能调风扇、防休眠、一键清理。

Release Downloads Stars Last commit Commit activity CI macOS License

OpenStats 是一款 macOS 菜单栏应用,实时显示 Mac 正在做什么:各核心 CPU 负载、GPU、内存压力、 网速、磁盘、电池、温度和风扇,并且可以直接处理:给风扇提速、合盖后继续运行、清理缓存。 所有数据都在你自己的 Mac 上读取。无需注册账号,没有统计上报,完全不联网。

下载 · 官网 · 更新日志 · 架构说明

English · 简体中文


安装

OpenStats 还没有发布正式版本。第一个版本会在 Releases 提供 .dmg,使用 Developer ID 证书签名并经过 Apple 公证,之后提供 Homebrew cask。 在此之前请从源码构建,见构建与运行。

需要 macOS 14(Sonoma)或更高版本;macOS 26 起面板使用液态玻璃。在 Apple Silicon 上开发和测试。 界面为简体中文。

最近更新

尚未发布正式版本 · 开发中 29 项改动尚未发布 · 完整更新日志

2026-09-13 · 未发布 · 新增 18 · 样式 5 · 修复 6

新增

  • 菜单栏显示 CPU、GPU、内存、网速、CPU 温度和风扇转速。
  • 菜单栏风格:双行文字、单行文字、图标、圆环、饼图、柱状历史、电量条、状态圆点八种,整体选择一种统一套用,也可以给个别指标单独指定。设置里每种风格都有用示例数据画出的预览和说明,柱状历史注明是最近 10 次采样的变化。
  • 网速有双行圆点、双行箭头、单行三种样式,绿色上传、蓝色下载,带完整单位。
  • 鼠标悬停在菜单栏图标上显示完整读数。
  • 下拉面板分为概览、进程、散热、防休眠、清理五页。概览页顶部是健康评分和芯片、内存、系统版本、运行时长、机型徽章,下面是 CPU 柱状历史、GPU 折线、内存面积图、磁盘、网络双线、风扇三列卡片,以及核心负载、电池环形图、高占用进程和快捷开关。
  • CPU 按超级核、性能核、能效核分组显示各核心负载;内存口径与活动监视器一致,并显示内存压力;网速读取 64 位计数器,大流量下不会回绕。
  • 温度与风扇:启动时枚举一次 SMC 键并按前缀归类,不按芯片型号硬编码,显示 CPU、GPU、内存、电池和掌托温度。
  • 按界面需要分级采样:面板收起时只采集菜单栏用到的指标,锁屏、屏幕休眠和系统睡眠时暂停。
  • 风扇调速:自动、降温、强冷、自定义四种模式。自定义模式下 CPU 达到安全温度会自动交还系统控制,应用退出或断开连接时风扇恢复自动。
  • 防休眠:屏幕保持常亮、仅系统不休眠、合盖后继续运行,可设定持续时间;使用电池且电量低于下限时自动关闭合盖运行。
  • 辅助工具:通过 SMAppService 注册,只提供设置风扇转速、切换合盖不睡眠、刷新 DNS、释放内存几个固定操作;运行时读取自己的签名团队,只接受同一团队签名的 OpenStats 调用;异常退出后下次开机自动恢复风扇与睡眠设置。
  • 清理:扫描应用缓存、日志与崩溃报告、Chrome / Edge / Brave / Arc / Firefox / Safari 缓存、Xcode 编译缓存、模拟器缓存、npm 缓存、Xcode 归档、未完成的下载、安装包和废纸篓。按类别显示大小,可展开查看具体项目;清理前二次确认,操作写入 ~/Library/Logs/OpenStats/cleanup.log。
  • 清理的安全边界:只清理白名单目录,钥匙串、密码管理器、VPN、Cookie、历史记录一律不碰;正在运行的应用和浏览器自动跳过,执行前逐项重新校验。
  • 系统维护:一键刷新 DNS 缓存、释放内存,已安装辅助工具时直接执行,否则请求一次管理员授权。
  • 进程页按 CPU 或内存排序,辅助进程归并显示为所属应用。
  • 设置窗口:外观、登录时启动、刷新频率、温度单位、菜单栏显示项与样式、风扇安全温度、合盖运行电量下限、辅助工具安装与卸载。
  • 面板提供浅色、深色两套实色主题,顶部的太阳 / 月亮按钮一键切换,也可以跟随系统;液态玻璃背景改为可选(macOS 26 起)。
  • 截图命令 OpenStats --snapshot <目录>:用本机实时数据渲染面板、设置和菜单栏的浅色与深色截图。

样式

  • 菜单栏字号缩小并统一:两行布局为 7pt 标签加 10pt 数值,单行布局 11pt,网速两行 9pt;每种风格内部只用一套字号,指标之间留出更宽的间距。
  • 柱状历史去掉满高的灰色底槽,只保留一条淡基线,负载起伏更清楚。
  • 面板加宽为三列布局,高度按内容自动计算,常见屏幕上不需要滚动。
  • 更换应用图标,面板左上角和关于页使用同一图标。
  • 首次启动默认在菜单栏显示 CPU、内存与网速。

修复

  • 深色菜单栏上 CPU、RAM 小标签颜色过深,几乎看不清。
  • 面板打开后高度会再调整一次、内容轻微回弹,看起来在抖动;面板打开时点击菜单栏图标关闭,会立刻又被打开。
  • 风扇被其他程序设为手动模式时,误显示为由 OpenStats 控制。
  • 风扇转速、PID 等数字出现千分位分隔符,例如 1,350 RPM。
  • 关闭液态玻璃后点击菜单栏图标,面板看起来打不开:面板内容被放大成两倍,窗口里只显示空白的一角。
  • 面板第一次打开时高度偏小:打开瞬间温度、风扇、进程等数据还没采集,现在启动时先完整采集一次。

活跃度

近 26 周每天的提交数

星标历史

界面一览

概览(深色) 概览(浅色)

数据显示在哪里

菜单栏

  • 八种风格整体选择、统一套用:双行文字、单行文字、图标、圆环、饼图、柱状历史、电量条、状态圆点; 也可以给个别指标单独指定。设置里每种风格都有示例预览,并说明图形代表什么。
  • 网速可选双行圆点、双行箭头或单行:绿色上传、蓝色下载,始终带单位(KB/s、MB/s、GB/s)。
  • 字号小而统一:两行布局 7pt 标签加 10pt 数值,单行 11pt,网速 9pt;数值等宽,刷新时菜单栏不抖动。 鼠标悬停显示完整读数。

菜单栏

面板——点击菜单栏图标打开。

  • 概览:健康评分,芯片、内存、系统版本、运行时长、机型徽章;CPU 柱状历史、GPU 折线、内存、 磁盘、网络、风扇三列卡片;按超级核、性能核、能效核分组的核心负载;电池环形图;高占用进程和快捷开关。
  • 进程:按 CPU 或内存排序,辅助进程归并到所属应用。
  • 散热:CPU、GPU、内存、电池、掌托温度,以及风扇。
  • 防休眠:屏幕保持常亮、仅系统不休眠、合盖后继续运行,可定时或不限时。
  • 清理:扫描、预览、清理,见清理。

面板高度按内容自动计算,常见屏幕上不需要滚动;按 Esc 关闭。提供浅色、深色两套主题, 可在面板顶部一键切换或跟随系统;液态玻璃背景可选。

散热 防休眠

风扇与睡眠

风扇模式 行为
自动 交还 macOS 温控
降温 固定在最低到最高转速之间的 60%
强冷 最高转速
自定义 用滑块在风扇转速范围内自由设定

自定义模式下,CPU 一旦达到安全温度(默认 95°C)就交还系统控制。退出 OpenStats 或应用崩溃时, 风扇恢复自动。合盖运行在使用电池且电量低于你设定的下限时自动关闭。

这两项需要系统权限,由一个通过 SMAppService 注册的小型辅助工具完成,首次使用时在 “系统设置 › 通用 › 登录项”中批准一次。辅助工具只提供固定的几个操作:设置风扇目标转速、恢复自动、 切换 pmset disablesleep、刷新 DNS 缓存、释放内存,不执行任意命令。它会校验调用方的代码签名, 应用断开连接时恢复风扇与睡眠设置;异常退出后,下次开机也会恢复。

清理

  • 扫描范围:应用缓存、日志与崩溃报告、浏览器缓存(Chrome、Edge、Brave、Arc、Firefox、Safari)、 Xcode 编译缓存、模拟器缓存、npm 缓存、Xcode 归档、未完成的下载、安装包和废纸篓。
  • 先预览:按类别显示大小,每条规则可展开查看具体项目,清理前再确认一次。缓存与日志直接删除, 空间立即释放;下载目录的内容移到废纸篓。也可以一键改为全部先移到废纸篓。
  • 安全:只处理白名单目录。钥匙串、密码管理器、VPN、Cookie、历史记录一律不碰。正在运行的应用的缓存 会跳过,浏览器需要先退出,删除前每一项都会再校验一次。所有操作记录在 ~/Library/Logs/OpenStats/cleanup.log。
  • 系统维护:刷新 DNS 缓存、释放内存。已安装辅助工具时直接执行,否则请求一次管理员授权。

清理

你的数据

OpenStats 不发起任何网络连接。指标来自本机的内核接口(host_processor_info、host_statistics64、 sysctl)、IOKit 与 SMC。偏好设置保存在应用自己的 user defaults 中,不含个人信息。没有任何统计与上报。

构建与运行

需要 macOS 14+、Xcode 26 或更高版本(液态玻璃需要 macOS 26 SDK;仅有 CommandLineTools 时缺少 SwiftUI 宏插件)以及 XcodeGen。

brew install xcodegen
make run                  # 生成工程,编译 Debug 并启动
make install              # 编译 Release,安装到 /Applications 并启动
make test                 # 单元测试:指标采集、SMC 编解码、清理安全边界
make open                 # 生成工程并用 Xcode 打开

菜单栏应用没什么可截图的窗口,可以用本机实时数据渲染各个界面:

build/DerivedData/Build/Products/Debug/OpenStats.app/Contents/MacOS/OpenStats --snapshot ./snapshots

玻璃与半透明效果只在屏幕上存在。需要测量面板打开时的资源占用,用 --show-panel 启动,面板会自动展开并固定。

修改 CHANGELOG.md 后运行 python3 Scripts/sync_changelog.py,更新上方的“最近更新”和活跃度图。

分发

只走 Developer ID,不上 App Store——沙盒不允许访问 SMC、读取其他应用的缓存、安装特权辅助工具, 而这正是大部分功能。

你拥有的 别人打开时看到的
什么都没有 ad-hoc 签名,只能在你自己的 Mac 上运行。别人会看到 “OpenStats 已损坏”。
Developer ID 证书 启用 Hardened Runtime。别人会看到 “Apple 无法检查其是否包含恶意软件”。
证书 + 公证 Gatekeeper 放行,只有常规的 “从互联网下载” 提示。

make build 与 make install 会自动使用钥匙串里的第一个 Developer ID Application 证书签名,没有证书时退回 ad-hoc。 辅助工具在运行时读取自己的签名团队,只接受同一团队签名的调用方。

make release                          # 签名、公证、装订,生成 DMG 与 Homebrew cask
NOTARY_PROFILE=OpenStats make release # 使用其他 notarytool 钥匙串凭据
SKIP_NOTARIZE=1 make release          # 生成未公证的 DMG,仅供本机测试

Scripts/release.sh 会拒绝生成 Gatekeeper 仍会拒绝的 DMG。

架构

  • Packages/OpenStatsKit/Sources/SMC——SMC 读写、风扇控制、温度传感器发现。
  • Packages/OpenStatsKit/Sources/Metrics——CPU、内存、网络、GPU、磁盘、电池、进程、传感器的采集器, 以及只采集屏幕上需要的指标的 MetricsHub。
  • Packages/OpenStatsKit/Sources/Cleaner——清理规则、安全守卫、扫描与执行。
  • Packages/OpenStatsKit/Sources/HelperShared——XPC 协议与系统维护命令。
  • Packages/OpenStatsKit/Sources/OpenStatsUI——设计 token、面板、设置窗口、菜单栏绘制。
  • Helper/——特权辅助工具及其 launchd 配置;App/——应用入口。

更多内容见 ARCHITECTURE.md。应用的每一项改动都按日期记录在 CHANGELOG.md。

致谢

OpenStats 基于以下开源项目,谢谢。

项目 作者 许可证 OpenStats 借鉴了什么
Stats Serhiy Mytrovtsiy MIT SMC 访问、Apple Silicon 风扇解锁流程、菜单栏迷你样式的字号参数
Mole tw93 GPL-3.0 哪些目录值得清理、哪些绝对不能碰;清理模块为独立的 Swift 实现,不含 Mole 代码
QuotaBar GiantAccel, LLC MIT 本 README 的版式、更新日志同步与活跃度图脚本

详见 ThirdPartyNotices.md。

OpenStats 是独立的第三方应用,与 Apple 及文中提到的其他公司没有隶属、认可或赞助关系。相关名称与标志归各自所有者所有。

许可证

MIT,见 LICENSE。