jcranokc/app-monitor

GitHub: jcranokc/app-monitor

App Monitor 是一款本地优先的 macOS 实用工具,通过原生 SwiftUI 仪表板集中展示应用使用、存储、清理、更新与卸载信息,帮助用户全面管理和维护系统中的应用。

Stars: 45 | Forks: 1

# App 监控 App Monitor 是一款本地优先的 macOS 实用工具,可通过一个原生的 SwiftUI 仪表板来了解应用程序的使用情况、存储、清理机会、更新状态和卸载影响。 该应用程序构建为 Swift Package 可执行文件,具有轻量级的 SQLite 支持核心。它作为标准的 macOS 应用程序运行,并可选择在菜单栏中显示。 ## 截图 ![App Monitor 概览仪表板](https://static.pigsec.cn/wp-content/uploads/repos/cas/75/75981daf87b594007307315354ece31a487860792a462c6dc45752f9a01eeb15.png) | 使用趋势 | 活动时间线 | | --- | --- | | ![使用趋势仪表板](https://static.pigsec.cn/wp-content/uploads/repos/cas/72/7222757f6fc31b4989351b5d57be912751b895c29236ec148585ec7a666d89ee.png) | ![活动时间线仪表板](https://static.pigsec.cn/wp-content/uploads/repos/cas/df/dfda03354533fbd5b920f9708856d47ca67e8ab64c35b789d5ac29eb34cc8a99.png) | | 警告 | 更新 | | --- | --- | | ![警告仪表板](https://static.pigsec.cn/wp-content/uploads/repos/cas/9a/9a951f789ad7e4f3b00488cccb7674109fd6cec26f2157dd89a5c10edf71e593.png) | ![更新仪表板](https://static.pigsec.cn/wp-content/uploads/repos/cas/71/71cfd90f0ea789d1539a7f6df41ba62e54f3c27007f075168e70a8f2ac7a739a.png) | | 隔离审查 | 历史记录 | | --- | --- | | ![清理建议仪表板](https://static.pigsec.cn/wp-content/uploads/repos/cas/01/010cdff88430471b314167451cfb09191998388f96a3cd777c826681da4cd651.png) | ![历史记录仪表板](https://static.pigsec.cn/wp-content/uploads/repos/cas/06/061ab82dbe018c8a5c1a72e1bbd3b18dbcc823a757b970a6d564ca7d97b48179.png) | ## 功能 - 跨通用 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, 使用分析, 存储清理