Tinycast vs Raycast 横评:兼容 114/147 个命令之外,差距还剩什么?
Tinycast vs Raycast 横评兼容 114/147 个命令之外差距还剩什么【免费下载链接】tinycastTinycast — a tiny, fully native macOS launcher, hotkeys, and clipboard history.项目地址: https://gitcode.com/GitHub_Trending/ti/tinycast完全原生运行 Raycast 扩展——这是 Tinycast 在 README 里最醒目、也最容易引起质疑的一句宣传。一个体积不足百 MB、零第三方依赖、连 Electron 都不用的启动器凭什么直接执行 Raycast 的扩展2026 年 9 月的一篇社区实测给出了量化答案37 个已装扩展中 32 个可完整渲染147 个 view 命令中 114 个正常运行。数字之外这篇文章要回答三个问题兼容是怎么做到的、硬指标内存/权限/遥测上两者差多少、以及那些没兼容上的东西里有哪些才是 Raycast 真正的护城河。兼容面横评114/147 与 32/37 是怎么测出来的先看数字的出处。仓库文档 docs/features/extensions.md 明确记载了测量口径以开发机上真实 Raycast 中安装的 37 个扩展为基准32 个扩展、114/147 个 view 命令可启动并渲染。换算下来是 86.5% 的扩展、77.6% 的命令。更重要的是这个测量可以随时复现——Scripts/raycast-runtime/test.mjs dir在 Node 的vm上下文里驱动运行时、打印渲染树Scripts/run-tests.sh ext-test则跑真实的 Swift 引擎JavaScriptCore两条路径都直接读取真实扩展的预构建 bundle。兼容不是跑通几个 demo而是一整套取舍。Raycast 扩展的命令本质上是单个预构建 CommonJS 文件esbuild 把依赖内联只把react、react/jsx-runtime、raycast/api和 Node 内建模块保持 external。Tinycast 恰好补上这四个缺口Tinycast/Resources/RaycastRuntime.generated.js约 200 KBminified包含 React 19 react-reconciler raycast/apishim Node/Web polyfill由 Scripts/raycast-runtime 下的源码构建并提交入库。运行时跑在系统自带的 JavaScriptCore 上Swift 侧拿到的是 JSON 渲染树UI 全部用原生 SwiftUI/AppKit 画出来——没有浏览器、没有 Node、没有进程内嵌的另一套 JS 引擎。组件与 API 覆盖面在文档里有完整的清单List/Grid/Detail/Form/ActionPanel全家族及其子组件Clipboard、LocalStorage、Cache、environment、getPreferenceValues、showToast、confirmAlert、open、trash、getSelectedText、launchCommand等 API连废弃别名ActionPanel.Item、CopyToClipboardAction都保留——因为存量 bundle 还在用。Node 侧则是一份相当厚实的 shimpath、fs含fs/promises、流式读写、os、child_process、crypto哈希/HMAC/PBKDF2/AES、zlib、http/https、stream、url、querystring、assert、timers等真实实现加上net/tls/http2这类仅引用可加载、调用即抛错的惰性 stub。几个细节尤其见工程功力dgram的 UDP socket 不碰网络只是把 mDNS 查询解码后转给系统getaddrinfo解析.local名字Home Assistant 默认地址homeassistant.local因此可用ws库的握手走http.requestshim 返回一条由原生URLSessionWebSocketTask重加 RFC 6455 帧的 socketWebAssembly 的compile/instantiate通过 JavaScriptCore 的同步构造器实现让 sql.js、Zotero 这类扩展能跑起来。兼容边界的诚实程度是这次横评里比覆盖率更值得记录的一点。docs/features/extensions.md 中unsupported的实现是直接Promise.reject(new Error(… not supported in Tinycast extensions yet))见 Scripts/raycast-runtime/src/api/system.js——所有缺口都明确报错绝不静默降级。比如getFrontmostBrowserTab、net/tls的实际调用、fs.watch、process.chdir、process.exit都抛带有明确说明的异常。这意味着用户拿到的是一个可诊断、可验证的兼容边界能用就是能用不能用会告诉你为什么。内存、权限、遥测硬指标对比如果说兼容面是Tinycast 想要追上 Raycast硬指标就是它刻意拉开差距的地方。内存。README 的第一句话就是 under 100 MB of RAMCONTRIBUTING.md 把 RAM under 100 MB, always 列为对每个 PR 的硬约束并且补充了没有功能值得突破这个预算。社区实测给出的数字是常驻内存约 72.6 MB。这背后是一整套设计决策Swift 6 AppKit/SwiftUI、零第三方依赖、无 Electron。运行时机制文档里甚至写明了唯一的一次性成本a running command holds a JavaScript engine in memory until you leave it, which is the one standing cost this app has——即运行扩展命令期间的那一个 JSContext是这款应用唯一的常驻负担。即便在扩展这条最重的链路上也保留了同一时刻最多两个命令并发的不变量面板与后台no-view刷新共享一个运行时前台启动优先抢占后台刷新菜单命令走独立的串行通道。权限。Raycast 为了文件搜索、剪贴板等能力会索取一长串权限Tinycast 的策略是少要、晚要、按需要。文件搜索完全基于系统 Spotlight 索引查询通过MDQuery走 Spotlight 元数据只读kMDItemPath不建私有索引、不记录历史、不扫描磁盘——docs/features/file-search.md 的不变量原话是 Tinycast asks for no file permission隐藏路径和应用 bundle 内容在结构上被过滤不需要全盘访问权限。辅助功能Accessibility只在需要粘贴文本或展开片段时请求这是唯一必备的权限。扩展功能本身是默认关闭的开关——关闭时不扫描目录、不发布启动器行、不存在 JSContext开启前要二次确认因为启用即同意运行第三方代码。AI 同样是off out of the box关闭状态下不创建历史数据库、不启动任何辅助进程。备份文件还有一层安全设计授予能力的开关如片段监听、运行 Shell 命令永远不会随备份迁移API 密钥只进 Keychain.tinycast里不允许出现任何绝对路径。遥测。README 直接写了 no telemetry。考虑到这是一款 AGPL-3.0 的开源应用这个承诺是可以被审计的仓库里没有任何分析 SDK 依赖应用自身的数据流剪贴板、搜索词、热键都留在本地。作为对比Raycast 的免费层与 Pro 层依赖其云端服务与账号体系遥测与数据回传是其商业模式的一部分——这不是道德判断而是两种产品在隐私透明度上的结构性差异。差距与不可替代项什么时候仍该用 Raycast114/147 之外的那 33 个命令恰恰是问题最有价值的部分。docs/features/extensions.md 的 What isnt supported yet 表格给出了明确的归因缺口原因AI、BrowserExtension、WindowManagement三个 Raycast 服务在 Tinycast 没有本地等价物导入可用调用即抛明确错误证书不受 macOS 信任的 WebSocketrejectUnauthorized: false被忽略URLSession 始终校验证书链中止已发出的fetchAbortSignal完整含timeout/abort/any但请求本身仍会跑完——信号不跨桥交互式spawnstdinstdout/stderr 可流式但 stdin 只在子进程启动时写入一次net/tls、流式 HTTP没有原始 socket 桥http.request一次返回完整响应体SSE、网络级进度均不可达tools/AI 扩展入口未暴露这张表值得逐条读。AI、BrowserExtension、WindowManagement是 Raycast 的专有服务而非 API——它们没有独立的扩展包可下载而是平台内置能力。Tinycast 对它们的回答是没有本地等价物调用抛错但注意这个等价物正在被原生功能补齐窗口管理本身就是 Tinycast 的内建特性34 个命令含分屏、四等分、Spaces 切换AI 则是它自己的完整功能线Quick AI 面板 AI Chat 窗口 MCP 工具调用支持通过 OpenAI 兼容 API 或已装 AI 账号接入。也就是说这两块缺口对普通用户是平移而非损失——只是扩展里写的AI.ask()不会有人替你翻译成 Tinycast 的调用。什么时候仍该留在 Raycast结论可以收紧到几条硬场景重度依赖 Raycast AI 与工具生态的用户。Raycast 的 AI 与数千个扩展深度绑定tools/这类 AI 扩展入口 Tinycast 尚未暴露Tinycast 的原生 AI 虽支持 MCP但工具集规模不在一个量级。依赖被点名的缺口扩展浏览器标签控制getFrontmostBrowserTab直接抛错、依赖原始 TCP/TLS socket 或 SSE 流式数据、交互式 stdin 的扩展目前在 Tinycast 上跑不起来。需要 Raycast 云服务/团队功能/跨平台的用户。Tinycast 仅支持 macOS 26是纯本地单机应用Raycast 的账号同步、Pro 功能与多平台未来不在对比范畴内。在乎性能但预算也包含全家桶体验的用户Tinycast 的 72.6 MB 常驻与 Raycast 相对重得多的运行时是真实差距但 Raycast 的成熟度、商店规模与第三方生态密度短期仍是单点优势。Tinycast 对这次横评最有价值的部分不是那 77.6% 的兼容率而是它把兼容边界做成了可复现、可审计、可报错的工程数字由Scripts/raycast-runtime/test.mjs和Scripts/run-tests.sh ext-test支撑缺口由源码里的unsupported()与文档表格逐条声明性能由 CONTRIBUTING 的 100 MB 硬约束守护。换句话说Tinycast 不是另一个 Raycast 的免费平替而是把 Raycast 的扩展生态当成了可复用的开放标准——然后在自己更轻、更私密、更透明的底座上重新实现它。差距还剩什么剩下的是 Raycast 的专有服务而不是扩展 API 本身。【免费下载链接】tinycastTinycast — a tiny, fully native macOS launcher, hotkeys, and clipboard history.项目地址: https://gitcode.com/GitHub_Trending/ti/tinycast创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

PyBind11实战:用C++为Python打造高性能扩展模块

PyBind11实战:用C++为Python打造高性能扩展模块

1. 先想清楚:为什么是PyBind11,而不是Cython或ctypesPython写业务逻辑确实舒服,但一旦碰上重计算、图像处理、硬件通信这类场景,性能瓶颈很快就会暴露出来。我之前接手过一个视频处理脚本,纯Python实现逐帧调用OpenCV做…

2026/10/10 21:29:15 阅读更多 →
矢量网络分析仪测量原理与校准实操:从S参数到射频测试全解析

矢量网络分析仪测量原理与校准实操:从S参数到射频测试全解析

如果你在射频实验室待过几天,肯定会发现所有工程师的工位上几乎都摆着一台矢量网络分析仪,也就是常说的VNA。它不像示波器那样天天要接探头,但一到天线调试、滤波器匹配、阻抗测量、板材损耗评估这些环节,又躲不开它。我刚开始接触…

2026/10/10 21:29:15 阅读更多 →
Spring Boot 自动配置排除:触发逻辑、三种姿势与踩坑实战

Spring Boot 自动配置排除:触发逻辑、三种姿势与踩坑实战

干 Spring Boot 开发的这几年,要说最让人又爱又恨的机制,自动配置(Auto Configuration)绝对排第一。Spring Boot 的口号是“自动配置、开箱即用”,它会在项目启动时扫描 classpath,看到哪个库就自动把相关 …

2026/10/10 21:29:15 阅读更多 →

最新新闻

Java+SpringBoot+SSM:传媒直播管理系统构建实战

Java+SpringBoot+SSM:传媒直播管理系统构建实战

做传媒直播管理系统这个项目,起因其实特别接地气——一个做MCN的朋友找到我,他们的直播业务铺开了,但管理手段还停留在微信群加Excel的原始阶段。主播档期要手动排,礼物流水要对账到半夜,平台分成算不干净,…

2026/10/10 23:44:17 阅读更多 →
让 AI 助手记住你读过的网页:Hister MCP 接口接入实战

让 AI 助手记住你读过的网页:Hister MCP 接口接入实战

让 AI 助手记住你读过的网页:Hister MCP 接口接入实战 【免费下载链接】hister Your own search engine 项目地址: https://gitcode.com/GitHub_Trending/hi/hister 大模型越来越擅长"回答",却很难"记得"你上周读过什么。它不…

2026/10/10 23:44:17 阅读更多 →
火焰识别不一定要CNN:BP神经网络从特征提取到火灾报警落地

火焰识别不一定要CNN:BP神经网络从特征提取到火灾报警落地

简介:基于BP神经网络的火焰识别项目,面向机器学习初学者与图像识别研究者,提供一套完整可运行的MATLAB实现方案,用于火焰与火灾图像的自动分类。压缩包内共有八百四十五个文件,包括八百一十三张JPG样本图像、十七个MAT…

2026/10/10 23:44:17 阅读更多 →
LSTM城市人口预测MATLAB实战:数据处理、训练与调参避坑

LSTM城市人口预测MATLAB实战:数据处理、训练与调参避坑

简介:面向城市人口预测与时间序列建模需求,这份基于MATLAB长短期神经网络(LSTM)的完整代码包,适合本科及以上阶段的研究者、竞赛选手及工程应用人员。资源内含人口数据Excel表格、四个MATLAB脚本及三十余张运行截图&am…

2026/10/10 23:44:17 阅读更多 →
睡岗与玩手机检测数据集:VOC标注转YOLO训练实战

睡岗与玩手机检测数据集:VOC标注转YOLO训练实战

简介:这份睡岗与玩手机行为检测数据集,面向安防监控、工位值守、智慧园区等场景的算法开发与研究人员,可用于训练人员违规行为识别模型,解决长时间值班场景下的脱岗、注意力分散等安全隐患。该数据集面向4653张原始图像构建&#…

2026/10/10 23:44:16 阅读更多 →
基于YOLOv5与PyQt的猪只行为检测系统搭建实战

基于YOLOv5与PyQt的猪只行为检测系统搭建实战

简介:面向养殖场智能化管理场景,这套资源围绕YOLOv5生猪行为状态检测提供成套方案,内含训练权重、1000余条标注数据以及PyQt界面脚本。数据集已按train/val/test划分好,附带data.yaml和txt格式标签,覆盖进食、站立、躺…

2026/10/10 23:43:16 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 11:14:25 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 1:36:08 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 11:14:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →