jcranokc/app-monitor
GitHub: jcranokc/app-monitor
App Monitor 是一款本地优先的 macOS 实用工具,通过原生 SwiftUI 仪表板集中展示应用使用、存储、清理、更新与卸载信息,帮助用户全面管理和维护系统中的应用。
Stars: 45 | Forks: 1
# App 监控
App Monitor 是一款本地优先的 macOS 实用工具,可通过一个原生的 SwiftUI 仪表板来了解应用程序的使用情况、存储、清理机会、更新状态和卸载影响。
该应用程序构建为 Swift Package 可执行文件,具有轻量级的 SQLite 支持核心。它作为标准的 macOS 应用程序运行,并可选择在菜单栏中显示。
## 截图

| 使用趋势 | 活动时间线 |
| --- | --- |
|  |  |
| 警告 | 更新 |
| --- | --- |
|  |  |
| 隔离审查 | 历史记录 |
| --- | --- |
|  |  |
## 功能
- 跨通用 macOS 应用程序位置的应用清单,可选进行更广泛的 bundle 发现。
- 前台应用程序使用情况跟踪,支持空闲/会话暂停处理。
- 使用分析,包括总计、每日趋势、热门应用、热力图和时间线会话。
- 导入 Spotlight 使用情况数据,获取历史最后使用日期、使用次数和使用天数。
- 存储扫描,涵盖 app bundle 及相关的 Application Support、cache、container、preference、log、WebKit、cookie 和诊断路径。
- 隔离审查,支持精确路径预览、排队批准、恢复和操作历史记录流程。
- 大文件审查和警告展示。
- 应用健康检查,包括代码签名、Gatekeeper、过期 bundle、崩溃和权限敏感路径。
- 更新检查,支持 Mac App Store 应用、Homebrew casks/formulae、Apple 软件更新,以及带有 Sparkle feeds 的直接下载应用。
- 引导式卸载规划,将选定的应用程序和支持文件移至废纸篓。
- 支持 CSV 导出,包括应用表格、每日使用情况、时间线会话、摘要、趋势区间、热门应用和热力图。
## 功能对比
App Monitor 旨在介于使用跟踪器、清理工具、更新检查器和卸载助手之间:
- 与单纯的使用跟踪器相比,它在保留本地前台使用历史记录的同时,还结合了应用存储和健康上下文。
- 与清理应用相比,它默认进行审查和隔离,而不是永久删除。
- 与卸载工具相比,它在将选定项目移至废纸篓之前,会显示卸载计划和受影响的路径。
- 与更新检查器相比,它将 Mac App Store、Homebrew、Apple 软件更新和 Sparkle/直接下载信号整合在一个本地视图中。
此类软件市场非常拥挤,因此 App Monitor 的定位在于其功能的综合:使用历史记录解释了某个应用是否依然重要,存储扫描展示了它占用了哪些内容,警告标记了值得审查的风险,更新展示了维护状态,而隔离优先的清理确保了更改的可撤销性。它并不试图取代专用的包管理器、恶意软件扫描程序或深度磁盘可视化工具。其目标是提供一个原生的、本地优先的仪表板,使与应用相关的使用情况、存储、警告、清理候选项、更新和卸载影响更容易集中检查。
## 系统要求
- macOS 14 或更高版本。
- Xcode 命令行工具,或支持 Swift 5.9 的 Xcode。
- 可选:Homebrew 和 `mas`,用于检查 Homebrew 和 Mac App Store 的更新。
## 安装 Beta 版
使用以下命令安装当前的 Homebrew beta 版本:
```
brew install --cask jcranokc/tap/app-monitor@beta
```
或者先添加 tap,然后再安装:
```
brew tap jcranokc/tap
brew install --cask app-monitor@beta
```
该 tap 位于 [jcranokc/homebrew-tap](https://github.com/jcranokc/homebrew-tap)。
## 构建与运行
运行测试套件:
```
swift test
```
构建可运行的 `.app` bundle:
```
./scripts/build_app.sh debug
```
打开打包的应用程序:
```
open "build/App Monitor.app"
```
运行此仓库使用的完整本地检查:
```
./scripts/ci
```
在开发过程中,您也可以直接运行 Swift package 可执行文件:
```
swift run AppMonitor
```
macOS 应用程序的某些行为,包括 bundle identity、图标资源、菜单栏行为、登录项行为和权限提示,最好通过 `scripts/build_app.sh` 生成的打包应用程序来体验。
## 打包与发布
App Monitor 的打包应用程序包含一个由 GitHub 托管的 appcast URL。发布的软件包包含一个 zip 文件、一个定制的拖拽至“应用程序”文件夹的 DMG 文件、SHA-256 校验和,以及一个用于发现更新的 `appcast.xml` 文件。
要进行本地打包:
```
./scripts/package_release.sh 1.1.0 2
```
要生成 Homebrew beta cask,请发布带有版本号的 beta GitHub release,并为 tap 生成 cask 文件:
```
APP_MONITOR_TAG="v1.1.0-beta.2" ./scripts/package_release.sh 1.1.0 2
./scripts/generate_homebrew_beta_cask.sh 1.1.0 2
```
未签名/临时签名的本地软件包适用于开发。公开分发应使用 Developer ID 签名和 Apple 公证,以便 Gatekeeper 能够验证应用程序。有关确切的命令、签名选项和本地验证步骤,请参阅 [RELEASING.md](RELEASING.md)。
## 隐私
App Monitor 设计为在本地运行。它将应用清单、使用情况、存储扫描、清理、卸载、更新和设置数据记录在 `~/Library/Application Support/App Monitor/` 下的本地 SQLite 数据库中。
它不包含遥测、账户或托管后端。可选的更新检查可能会联系第三方更新源,或运行本地更新工具(如 Homebrew、`mas`、Apple `softwareupdate` 或应用程序提供的 Sparkle feeds)。详情请参阅 [PRIVACY.md](PRIVACY.md)。
## 安全提示
App Monitor 可以检查与应用相关的本地存储,并可以将选定的文件移至隔离区或废纸篓。清理候选项会显示为隔离审查:预览确切路径,仅将您批准的项目排入队列,将其移至 App Monitor 隔离区,并在被隔离项目仍然可用时从“历史记录”中恢复。在应用清理和卸载计划之前请仔细审查,特别是对于可能包含用户数据的 container、preference、Application Support 数据和 group container。
安装更新可能需要管理员授权,或涉及本项目之外的第三方包管理器行为。
## 项目结构
- `Sources/AppMonitor`:SwiftUI 应用程序、仪表板、菜单栏 UI 和应用程序生命周期连接。
- `Sources/AppMonitorCore`:清单、使用情况跟踪、存储扫描、清理、更新、卸载、分析、导出和 SQLite 逻辑。
- `Tests/AppMonitorCoreTests`:专注的核心行为测试。
- `scripts/build_app.sh`:构建并签名本地 `.app` bundle。
- `scripts/ci`:运行测试并验证 app bundle 的创建。
## 许可证
App Monitor 基于 MIT 许可证发布。请参阅 [LICENSE](LICENSE)。
标签:macOS应用, SQLite, SwiftUI, 使用分析, 存储清理