Tinycast:一个用 SwiftUI 原生写、还能跑 Raycast 扩展的 macOS 启动器

工具
macOS
Raycast
SwiftUI
启动器
开源
2026/9/28
·

阅读时间: 大约 9 分钟

Tinycast:一个用 SwiftUI 原生写、还能跑 Raycast 扩展的 macOS 启动器

Tinycast 命令面板:搜索框、收藏与应用列表(官方截图)

macOS 启动器这个品类,过去几年基本被 Alfred 和 Raycast 两家占据。前者老牌但偏付费买断,后者功能强却越来越把能力往订阅和云端搬,体积与性能也被老用户反复吐槽。2026 年出现的 Tinycast 走的是另一条路:由独立开发者 abue-ammar 用 SwiftUI + AppKit 原生编写、零第三方依赖、不用 Electron、不做遥测,内存占用目标压在 100 MB 以内,并且最关键的一点是——能直接运行现有的 Raycast 扩展,并用原生 SwiftUI 渲染。本文基于其 GitHub 官方 README,对这一项目做一次拆解。

一、出发点:Raycast 很强,但”够轻、免费、本地”是另一种需求

Raycast 的成功在于把”命令面板”从开发者工具做成了 macOS 上的通用效率入口:应用启动、剪贴板历史、窗口管理、Snippets、计算器、插件生态一应俱全。但随着它商业化推进,同步、AI、团队功能等被放进订阅,插件运行时也越来越重,一批用户开始寻找”回到本地、回到轻量”的替代品。

Tinycast 抓住的正是这个缺口。它的一句话定位写在 README 顶部:“一个热键,调出你整天都在用的一切,内存占用低于 100 MB”。作者明确表态:免费,并且会一直免费;项目以 AGPL-3.0 开源,靠 Polar.sh 上的一次性打赏维持维护(作者说明自己所在国家无法使用 GitHub Sponsors)。

二、技术栈:原生 SwiftUI,拒绝 Electron 与遥测

Tinycast 在工程上有几个明确的取舍:

  • SwiftUI + AppKit 原生:UI 用 SwiftUI 写,必要处回落到 AppKit,全程不引入 Electron/WebView 套壳;
  • 零第三方依赖:README 强调 zero third-party dependencies,这也是它敢把内存压到 100 MB 量级的前提——没有 Chromium、没有 Node 运行时;
  • 无遥测:不做任何数据上报;作者特别说明 Snippets 的关键字匹配是本地完成,“按键不会被存储、也不会被发往任何地方”;
  • 复用系统能力做索引:文件搜索直接走 macOS 自家的 Spotlight,而不是另建索引——既省内存,也避免了重复索引带来的磁盘与 CPU 开销。

值得注意的是它的权限模型:只在用到”向其他应用粘贴/展开文本”时才申请 Accessibility 权限,Snippets 功能默认关闭,首次触发时再引导授权,而不是安装时一口气索取全部权限。

三、功能面:对标 Raycast,但刻意”收敛”

Tinycast 的功能清单相当长,基本覆盖了一个高频启动器的日常需求:

类别具体能力
启动与搜索应用模糊搜索、收藏置顶、查看运行中应用、批量退出;文件/文件夹搜索(走 Spotlight)
快捷键全局呼出热键、按应用绑定热键(聚焦/隐藏切换)
效率工具剪贴板历史(文本+图片,可搜索后粘回)、内联计算器(数学/单位/实时汇率/加密货币换算)、词典(读系统词典)、Emoji 选择器
自动化Apple Shortcuts 调用、Snippets(Markdown 模板,支持动态占位符、参数、嵌套引用、关键字展开)、自定义 Shell 命令
窗口与系统34 个 Rectangle 风格窗口操作(半区/四分之一/三分之一、尺寸微调、跨屏移动、全屏、Spaces);锁屏/睡眠/重启/清倒废纸篓/切换外观/蓝牙/静音等系统动作
日历与笔记空面板与菜单栏显示下一个会议、一键入会;浮动编辑器里的无限 Markdown 笔记,可从面板搜索
AI自带 Key 或已登录 AI 账号的 Quick AI / AI Chat 窗口,默认关闭
生态兼容直接运行已有的 Raycast 扩展,原生 SwiftUI 渲染;支持从 Raycast 导入配置

这里面最有战略意义的是”跑 Raycast 扩展”和”从 Raycast 导入”这两条。Raycast 真正的护城河不是它的面板 UI,而是积累多年的扩展生态。Tinycast 不去重新造一个插件市场,而是直接兼容已有扩展,并提供一键导入配置——这意味着 Raycast 老用户的迁移成本被压到很低。

四、安装与现状

  • 要求:macOS 26 及以上,Swift 6.0 工程;
  • 安装:先 brew tap abue-ammar/tinycast,Apple 硅用 brew install --cask tinycast,Intel 用 tinycast-universal;beta 通道为 tinycast@beta;
  • 也可从 Releases 下载 DMG,但应用是自签名的,需要手动 xattr -dr com.apple.quarantine 去除隔离属性;
  • 截至调研时,仓库已有约 700 次提交,开放约 32 个 Issue、5 个 PR,版本在 v0.10.x 区间。

五、客观分析:优势与局限

优势:

  1. 工程方向正确:原生 SwiftUI + 零依赖 + 复用 Spotlight,是 macOS 上做轻量启动器最合理的路线,内存与启动速度天然占优;
  2. 兼容 Raycast 生态:不是从零攒插件,而是直接复用已有扩展与配置,迁移摩擦小;
  3. 隐私姿态明确:无遥测、AI 默认关闭、权限按需申请,对反感云端订阅的用户有吸引力;
  4. 完全免费:AGPL-3.0 开源,不做功能阉割订阅。

局限与存疑:

  1. 版本仍在 0.x,且系统门槛高:要求 macOS 26+,把大量仍在旧版系统的用户挡在门外;
  2. Raycast 扩展兼容性是”目标”而非”全量保证”:README 只说能跑已有扩展,但哪些扩展、覆盖到什么程度、JS 扩展 API 实现了多大子集,官方并未给出兼容清单,实际体验需要自己验证;
  3. 单人维护:作者明确要求”写代码前先开 Issue 并获批”,且功能集刻意保持封闭——“别的启动器有这个”不算加功能的理由。这保证了轻量,但也意味着功能扩张会很慢;
  4. 自签名 + 第三方 tap:普通用户需要先 brew trust 第三方 tap,下载 DMG 还要手动去隔离属性,对非技术用户有一定门槛;
  5. AGPL-3.0:对个人使用无影响,但如果有人想把它改造成商业产品,协议传染性是个约束。

六、谁该关注

  • 已经在用 Raycast、但反感订阅/云端、想要一个”够用、本地、安静”的替代者的 macOS 用户;
  • 对内存敏感(老款 MacBook、长时间不关机)的开发者;
  • 愿意折腾 Homebrew tap、能接受 0.x 软件快速迭代的早期使用者。

如果你的工作流重度依赖 Raycast 的团队同步、AI 云端功能或特定冷门扩展,现阶段仍建议双轨试用——Tinycast 更像是一个”回归本地”的有力挑战者,而不是今天就能完全替换 Raycast 的成熟方案。

参考来源