iAmCorey/birth

GitHub: iAmCorey/birth

Birth 是一款开源 macOS 启动项管理器,将分散在四层系统机制中的后台项、daemon 和登录项统一呈现,支持查看签名身份、运行状态并一键启用、禁用或安全移除。

Stars: 247 | Forks: 11

# Birth **English** | [简体中文](README_CN.md) [![CI](https://img.shields.io/github/actions/workflow/status/iAmCorey/birth/ci.yml?style=flat-square&label=CI)](https://github.com/iAmCorey/birth/actions/workflows/ci.yml) [![License](https://img.shields.io/github/license/iAmCorey/birth?style=flat-square)](LICENSE) [![Release](https://img.shields.io/github/v/release/iAmCorey/birth?style=flat-square)](https://github.com/iAmCorey/birth/releases/latest) [![Platform](https://img.shields.io/badge/platform-macOS%2014%2B-007AFF?style=flat-square)](https://github.com/iAmCorey/birth/releases/latest) [![Downloads](https://img.shields.io/github/downloads/iAmCorey/birth/total?style=flat-square)](https://github.com/iAmCorey/birth/releases) [![Stars](https://img.shields.io/github/stars/iAmCorey/birth?style=flat-square)](https://github.com/iAmCorey/birth/stargazers) **一目了然地管理 Mac 的启动项。** Birth 是一款免费、开源的 macOS 启动项管理工具。它将你系统中的所有后台项、daemon 和登录项集中到一个窗口中,告诉你*是谁把它放在那里的*(代码签名身份)以及它现在是否正在运行——并且只需单击即可禁用或删除其中任何一项。 ![Birth 主窗口:“登录 App”页面,分为“登录时打开”和“其他方式启动”两组,每个项目都显示其开发者签名身份](https://static.pigsec.cn/wp-content/uploads/repos/cas/ec/ec31883b4ac059a9926f212bd4ba05aec4b4790044a66ed5b07bc48133fdd503.webp) ## 为什么需要 macOS 将启动项分散在至少四种机制中: | 来源 | 包含内容 | 在系统设置中显示? | |---|---|---| | `~/Library/LaunchAgents` | 当前用户的后台项 | 仅显示为模糊的“后台项” | | `/Library/LaunchAgents` | 所有用户的后台项 | 同上 | | `/Library/LaunchDaemons` | Root daemon | 同上 | | BTM 登录项 | “登录时打开”的 App | 是,但没有路径和详细信息 | “系统设置”不会告诉你 plist 存放在哪里、它指向哪个可执行文件,或者是谁签名的——而第三方的更新程序、辅助进程和卸载残留物正是利用了这种不透明性而肆意滋生。Birth 撕开了这层面纱。 ## 功能 ### 登录 App(日常使用) - **零权限查看**“登录时打开”列表——打开 App 即可使用,没有任何提示 - 添加 / 移除登录 App(仅在首次修改时需要一次性的自动化权限);你也可以直接**将 App 拖入窗口** - 每个 App 都会显示其**开发者签名身份**,以及它在安装时悄悄附带的进程(带有“+N 项”徽章,一键即可查看) - **最近移除**:被移除的 App 会保留在专属的侧边栏页面,一键即可重新启用 ### 高级(审计) - 一个视图展示四个层级:用户 agent / 全局 agent / daemon / 登录项——默认仅显示第三方项,一键即可显示全部 - **根据证书链锚点验证签名身份**:Apple / App Store / 认证开发者 / 不受信任的证书 / Ad-hoc / 未签名 / 无效 - **伪装检测**:如果项目声明了 `com.apple.*` 但其签名却与之不符,会获得红色的“伪装”徽章——这是恶意软件最常用的持久化伪装手段 - 实时运行状态 (PID) 及一键启用/禁用(用户级项目无需密码;daemon 则通过标准的 macOS 管理员提示进行操作) - **搜索与定位**:按名称、开发者或路径搜索;输入 PID 即可立刻获得“哪个启动项生成了此进程”的答案 - **筛选与排序**:按运行状态(运行中 / 已加载 / 未加载)和启用状态进行筛选;点击五个列标题中的任意一个进行排序——排序的列和方向会被记住,类似 Finder 的风格 - **安全移除**:首先停止任务,将其 plist 移至废纸篓,并在 `~/Library/Application Support/Birth/Backups` 中保留备份 - 属性列表查看器(将二进制 plist 渲染为可读的 XML) ## 权限:仅在需要时索取,且只问一次 | 操作 | 权限 | 时机 | |---|---|---| | 查看登录 App 列表 | 无 | — | | 浏览用户 agent / 全局 agent / daemon | 无 | — | | 启用/禁用用户和全局 agent | 无 | — | | 添加 / 移除登录 App | 自动化 (System Events) | 首次修改时提示一次 | | 查看登录项类别 | 完全磁盘访问权限 | 在系统设置中检查一次 | | 启用/禁用 daemon;移除全局项目 | 管理员密码 | 每次操作(macOS 安全模型) | 缺少权限时会平滑降级处理:App 内提供一次性设置指导,从“系统设置”返回时会自动刷新,此后不再打扰你。 ## 安装 要求 macOS 14 (Sonoma) 或更高版本。主要在 macOS 26 上进行开发和测试;如果在早期版本中遇到问题,请提交 [issue](https://github.com/iAmCorey/birth/issues)。 ### 选项 1:DMG 从 [Releases](https://github.com/iAmCorey/birth/releases) 下载最新的 `Birth-x.x.x.dmg`,并将 Birth 拖入“应用程序”。 Birth 是个人的开源项目,未经过 Apple 的公证。在**首次启动**时,macOS 会警告无法验证开发者:前往“系统设置” → “隐私与安全性”,点击页面底部的**“仍然打开”**——仅需一次。 ### 选项 2:从源码构建 ``` git clone https://github.com/iAmCorey/birth.git cd birth ./scripts/make-app.sh open dist/Birth.app ``` (计划推出 Homebrew cask。) ## 开发说明 ``` swift test # unit tests ./scripts/release-check.sh # release gate: tests → package → self-contained smoke launch → health checks ./scripts/make-dmg.sh # distribution DMG ``` - SwiftUI + Swift Package Manager——没有 Xcode 项目文件,零第三方依赖 - 三个 target:`BirthCore`(扫描/控制/签名,无 UI)、`BirthUI`(整个 App,可测试)、`Birth`(仅三行代码的主程序) - 每次发布前必须通过 `release-check.sh`——只要有一个红灯亮起就无法发布 ## 注意事项与限制 - **签名徽章显示的是身份,而非完整性**:Birth 验证证书链锚点(“谁签名的”);它不会对整个 bundle 的内容进行哈希校验——那是 Gatekeeper 的职责。 - **登录项类别是只读的**:macOS 没有提供用于切换这些项的第三方 API,因此 Birth 让你一键跳转到“系统设置”来进行操作。 - Birth 目前使用 Ad-hoc 签名,且每次构建时都会更改。**升级后,必须在“系统设置”中重新授予完全磁盘访问权限和自动化权限**(关闭 Birth 再重新打开)。在单一版本内,授权会保持有效。 ## 卸载 将 Birth.app 移至废纸篓。要进行更深度的清理(可选): ``` defaults delete dev.birth.Birth # preferences rm -rf ~/Library/Application\ Support/Birth # removal backups ``` 不要忘记在“系统设置” → “隐私与安全性”中移除 Birth 的权限。 ## 反馈 Bug 和想法 → [GitHub Issues](https://github.com/iAmCorey/birth/issues)。 ## Star 历史 [![Star History Chart](https://api.star-history.com/chart?repos=iAmCorey/birth&type=date&legend=top-left&sealed_token=hIIjaB8VdxTXapQfdFESc9Lj0qVmiw8GcYReRfu82miGgvHJurKJxrmcz4kK5Xx3015mDNMlofNWyNeyWnYsNaOyHBodWt2cDNzZVAH2Oc6nrkg_RFTkcA)](https://www.star-history.com/?type=date&repos=iAmCorey%2Fbirth) ## 许可证 [MIT](LICENSE)
标签:启动项管理, 桌面应用, 系统工具, 系统运维