farukkamcici/mectrics
GitHub: farukkamcici/mectrics
mectrics 是一款零遥测、低占用的原生 macOS 菜单栏系统监控器,以迷你图和警报规则实时呈现 CPU、内存、GPU 等关键指标,并提供 CLI 自动化接口。
Stars: 30 | Forks: 3
## 它是什么
**mectrics** 是一款原生的 macOS 菜单栏系统监视器。您启用的每个模块都会绘制一个
可读的数值 —— 并配有一个实时迷你图,其趋势能真正为您提供有效信息 —— 而在其他情况下会保持低调,不碍事。单击即可打开一个详细的弹出窗口,查看背后的具体数据。
可选的 **Compact Health** 项目将整台机器浓缩为一个单一的指示器,只有在某些方面需要关注时才会发出提示。
它的构建围绕三个承诺:
| | |
|---|---|
| 🔒 **架构级隐私保护** | 零遥测。无分析、无标识符、无崩溃报告。该应用唯一能发起的网络请求是您手动触发的更新检查 —— 默认关闭自动检查。 |
| 🪶 **对机器负载极低** | 在使用电池时降低采样频率,并在低电量模式和热压力下主动退让。发布版本在 60 MB 的内存预算下空闲时仅占用约 **24 MB** —— 这即 `phys_footprint`,与“活动监视器”内存列中显示的数字相同 —— 且每秒大约仅唤醒一次。 |
| 📐 **菜单栏中保持稳定** | 各项会预留固定宽度,因此数值发生变化时,不会有任何内容横向移位。 |
不可用的硬件会自动隐藏 —— 无风扇的 MacBook Air 上不会显示风扇模块,Mac mini 上没有电池模块。**缺失读数会显示为破折号,绝不伪造为 `0`。**
| 模块 | 可放入菜单栏的内容 | 迷你图 |
|---|---|---|
| **CPU** | 使用率 %、每核心进度条、温度 | ✅ |
| **内存** | 使用率 %、已用内存、温度 | ✅ |
| **GPU** | 利用率 %、温度 | ✅ |
| **电池** | 带充电指示器的电量、图标、健康度、循环次数 | — |
| **网络** | 堆叠的 ↓/↑ 活动、仅下载、仅上传 | — |
| **磁盘** | 使用率 %、环形图、已用、可用 | — |
| **风扇** | 最快风扇的 RPM | — |
为三个趋势确实具有参考价值的指标绘制了迷你图。其余指标仅显示数值,因为关于磁盘填充度的图表纯粹是装饰。
一个模块可以提供**多个独立项目** —— 电池可以同时显示其图标*和*健康度。您可以通过点击菜单栏构建器中的实时预览芯片来选择组件,因此您是根据实际可见的内容进行选择的。每个弹出窗口都提供数值背后的详细信息:CPU 的每核心负载和消耗最多资源的进程、内存的交换空间和内存压力、当 Mac 上报时 CPU、内存和 GPU 的硬件温度、磁盘的读写吞吐量等等。
## 数字之外
- **Compact Health** —— 一个总结整台机器状态的状态项,仅在出现异常时才显示,包括 macOS 自身报告的两种情况。
- **警报规则** —— 持续性通知,带有实时预览和测试发送功能,让您在规则于凌晨 3 点触发前就能了解其执行效果。规则可以监视您选择的数值,或 macOS 报告的状态:您的 Mac 为冷却而主动降低 CPU 和 GPU 的速度,以及内核自身的内存压力。传感器温度过高与机器实际上已被降速并非同一回事,而且内存在没有任何异常的情况下也可能几乎被占满。
- **Attention Log** —— 一个本地、可导出的记录,包含触发的事件及时间。
- **Energy Guard** —— 在低电量模式和热压力下自动降级的采样机制。
- **菜单栏构建器** —— 带有预设的可视化布局编辑器,您可以通过点击其实时预览来切换组件,而不是在列表中盲目猜测。
- **Widgets** —— 用于通知中心的小型/中型/大型 WidgetKit 概览。
- **诊断** —— 仅限本地的系统摘要,您可以将其复制或导出为纯文本。
- **Headless CLI** —— 用于警报事件和单次健康检查的只读自动化接口,适用于菜单栏不可见的 Mac。
- **三步式引导**、强调色主题以及登录时启动。
## 安装
要求 **macOS 15 (Sequoia)** 或更高版本。
从[最新发布版本](https://github.com/farukkamcici/mectrics/releases/latest)下载 [**Mectrics.dmg**](https://github.com/farukkamcici/mectrics/releases/latest/download/Mectrics.dmg),打开它,然后将 Mectrics 拖入“应用程序”。该应用已使用 Developer ID 签名并经 Apple 公证,因此可以直接打开,无需经过 Gatekeeper 的拦截。
Mectrics 没有 Dock 图标和窗口 —— 启动后,请在菜单栏中找到它。只有在您主动要求时才会在 **Settings → General → Check for Updates…** 下检查更新。
界面提供英语、土耳其语、俄语、西班牙语、法语和巴西葡萄牙语版本。请选择 **Settings → General → Language**,然后在出现提示时重新启动 Mectrics。
### Headless 自动化
该应用包包含一个只读的 `mectrics` CLI,适用于菜单栏不可见的 Mac。应用本身仍是配置警报规则的地方。CLI 会读取这些规则,并将其公开给脚本和代理(agent),而不会更改任何设置。
只需选择一次 **Settings → Alerts → Install CLI…**,即可在每个终端中使用 `mectrics`。这将在 `/usr/local/bin/mectrics` 创建一个符号链接;它不会下载另一个可执行文件,也不会安装后台服务。macOS 可能会要求管理员权限。
无需解析输出即可检查已启用的规则:
```
mectrics check
```
当所有当前读数都在其限制范围内时,`check` 以 `0` 退出;当至少跨越一个限制时,以 `1` 退出;当未配置规则或由于读数不可用而无法确定结果时,以 `2` 退出。如果需要详细信息,请添加 `--json`:
```
mectrics check --json
```
获取每个可用模块的单次快照:
```
mectrics snapshot --json
```
快照包含每个模块的主要数值、单位、时间戳和详细字段;不受支持的硬件会被列为不可用,而不是报告为零。使用以下命令以换行符分隔的 JSON 格式流式传输实际的警报激活和恢复事件:
```
mectrics alerts watch --json
```
`watch` 不会打印初始快照。它会安静地等待,直到规则激活或恢复,然后将该事件作为一行 JSON 写入终端。当需要立即获取当前状态时,请使用 `check --json`。
已知被跨越的限制优先于不可用的读数。`check` 是立即执行的,因此跨越限制意味着相应的持续规则现在将进入其待处理状态;`alerts watch` 仍然是获取实际激活和恢复事件的来源。
JSON 输出会发送到标准输出。启动信息和错误会发送到标准错误,因此管道能保持机器可读。CLI 仅对请求操作所需的指标进行采样,并且不发起任何网络请求。它不包含应用的实时仪表板、设置、小部件或历史记录。
### 卸载
将 Mectrics 拖入废纸篓会移除该应用,但不会移除其设置 —— macOS 会保留每个应用的这些数据,这就是为什么重新安装后会直接恢复您之前的布局,而不是再次显示引导界面。要进行彻底移除,请选择 **Settings → General → Uninstall…**。Mectrics 将取消注册其登录项,退出应用,然后移除该应用程序、其设置、警报规则、Attention Log、缓存以及可选的 `/usr/local/bin/mectrics` 链接。如果存在该链接,macOS 可能会要求管理员权限。
移除后,macOS 可能会保留该小部件受保护的缓存快照;一旦扩展消失,它就会回收该容器。如果 Mectrics 无法打开,请改用手动卸载脚本:
```
curl -fsSL -o /tmp/mectrics-uninstall.sh https://raw.githubusercontent.com/farukkamcici/mectrics/main/scripts/uninstall.sh
zsh /tmp/mectrics-uninstall.sh
```
它会列出将要删除的内容,并在进行任何操作之前征求您的同意。
### 从源码构建
```
git clone https://github.com/farukkamcici/mectrics.git
cd mectrics
brew install xcodegen
xcodegen generate
open Mectrics.xcodeproj # then ⌘R
```
完整的设置说明(包括代码签名)位于 [`CONTRIBUTING.md`](CONTRIBUTING.md) 中。
## 隐私
零遥测 —— 不是“匿名化”,也不是“可选择退出”。没有任何使用数据、硬件信息、指标历史记录或警报配置会离开您的设备。每个数字均来自本地的只读系统接口。
该应用唯一能发起的网络请求是更新检查,且只有当您选择 **Check for Updates…** 时才会执行。请在 [`PRIVACY.md`](PRIVACY.md) 中阅读完整声明。
## 非目标
明确一个项目不会做什么,正是让它小到足以令人信赖的关键。Mectrics 只会读取运行它的机器并报告其发现。以下所有内容均不在范围内,如果有人提交要求其中任何一项的 issue,将被关闭并附上此链接,而不进行争论。
- **任何类型的遥测**,包括匿名、聚合或自愿加入的遥测。绝对不会开发包含此类功能的版本。
- **账户、云同步或配套服务。** 这里不需要服务器,因此这里也不会衍生出服务器。
- **这台机器之外的任何事物。** 远程主机、SaaS 配额、API 使用量、容器集群:这些都是值得监控的合理事物,但都不是此应用的职责。
- **对发现的结果采取行动。** Mectrics 不会结束进程、清除缓存或更改系统设置。它向您展示数据,并将您引导至负责该操作的工具,这就是为什么其弹出窗口会打开“活动监视器”和“系统设置”,而不是重新实现它们。
- **基准测试或压力测试。** 读取负载与制造负载截然不同。
- **其他平台。** 仅限 macOS。没有 iOS 配套应用,没有 Linux 移植。
- **窗口。** 菜单栏就是界面。这里没有 Dock 图标和主窗口,这是设计决定,而不是缺失的功能。
欢迎 Fork 并反对这里的每一句话。这就是 MIT 许可证的意义所在。
## 安全
发现漏洞?请私下报告 —— 参见 [`SECURITY.md`](SECURITY.md)。
## 致谢
树立标杆的先例:[Stats](https://github.com/exelban/stats) 证明了开源监视器也能做到卓越;以及 iStat Menus,它代表了人们所期望的深度。使用 [Sparkle](https://github.com/sparkle-project/Sparkle) 进行更新,使用 [XcodeGen](https://github.com/yonaskolb/XcodeGen) 生成可审查的项目文件。
## 许可证
[MIT](LICENSE) © Faruk Kamçıcı
⬇︎ 下载 Mectrics 1.4.0
macOS 15+ · 已签名并经过公证 · 3.8 MB
## 模块
macOS 15+ · 已签名并经过公证 · 3.8 MB
CPU — a bar per core, and the top processes behind the disclosure |
Disk — capacity split three ways, plus live throughput |
Compact Health — the whole machine in one item, quiet until it is not
Menu bar builder — click a live chip to add or remove it |
Alert rules — with the current reading next to each threshold |
标签:Swift, 性能监控, 文档结构分析, 桌面应用, 状态栏工具