HeyBinyang
← 返回开源
·Skills·Skill

native-feel-skill

一个用于设计跨平台桌面应用的Agent Skill,使其具有原生应用体验——源自Raycast 2.0深度解析及对Raycast Beta.app的逆向工程。包含八大架构原则、四层架构、WebKit/WebView2生存指南和75项发布检查清单。

Windows / macOS / Linux

一项用于设计拥有原生体验的跨平台桌面应用的Agent技能 — 源自Raycast 2.0技术深度剖析,并基于对已发布的Raycast Beta.app二进制文件的反向工程。

这两个目标通常相互制约:便利的跨平台开发和接近原生的性能。本技能捕捉了结构性的选择——八大架构原则、四层架构、WebKit/WebView2生存指南、75项发布检查清单——让应用能够兼得这两点。

这是什么

为架构师、技术主管和工程师而设的参考,他们需要构建一个桌面应用,该应用必须:

  • macOS + Windows(可选Linux)上运行,且使用单一UI代码库,

  • 启动时间低于500毫秒,常驻内存低于500 MB,

  • 对用户而言与原生应用无异(没有cursor: pointer标识、启动时无白闪、无WebKit上下文菜单、无平滑滚动的JS),

  • 支持TypeScript的插件/扩展生态系统,

  • 能够与iOS和服务端后端共享性能关键代码。

这就是四层架构:原生外壳→系统WebView(WKWebView/WebView2)→Node后端→Rust核心,通过一个单一的带类型IPC模式连接起来,为每个运行时生成客户端。

这不是什么

  • 不适用于单一操作系统应用(直接用原生构建即可)。

  • 不适用于Electron风格的“够用”应用(这里的精调预算高出5-10倍)。

  • 不适用于有严格<150 MB或<100毫秒冷启动预算的应用(底线是真实的)。

  • 不适用于游戏、文档编辑器或媒体播放器。

运行checklists/decision-tree.md来确定该架构是否适合你的项目。它本身已排除了几种常见情况——直接说明比过度调整建议更有用。

设计哲学

该架构解决的核心矛盾:当便捷的跨平台开发与接近原生的性能这两个目标通常相互制约时,桌面应用如何能同时实现两者?八大原则指明了结构性举措:

  1. 将分界点置于渲染表面——在WebView之上共享,在其之下分离;这是唯一能同时保证开发体验和原生感受的层次。

  2. 单一模式,多种语言——在声明处一次性支付多语言税,在调用点再不用付。

  3. 采纳平台而非与之竞争——操作系统绘制的模糊、滚动、材质和深色模式效果优于你能做到的。

  4. 性能是感知的属性——用户感受到的,而不是活动监视器报告的。

  5. 短迭代循环就是产品——200毫秒热重载对比30秒原生重建,是150倍的复合优势。

  6. 有意地跨越边界——IPC有成本;将每次跨越设计为异步、批处理、带类型模式。

  7. 身份认同是肌肉记忆——快捷键、排序、操作符就是应用本身;其他都是实现细节。

  8. 区分基线边界——WebView+Node底层是租借的;只有你的脏页才是你自己的优化空间。

先阅读references/01-philosophy.md。其他都是由此衍生。

关于Agent技能

Agent技能是封装领域知识的新兴标准,任何兼容的Agent(Claude Code、Claude Agent SDK或其他支持Agent技能的运行时)都可以发现并加载。通过此README顶部的提示安装后,当Agent的对话涉及跨平台桌面架构、WebView特性问题或Raycast风格的应用时,技能会自动激活——触发条件在SKILL.md的前置元数据中声明。

来源

  • Raycast的公开技术文章:关于全新Raycast的技术深度剖析

  • Raycast Beta.appv0.60.0(macOS 26+构建,Xcode 17,arm64)的反向工程——详见references/07-evidence-raycast.md,了解发现了什么以及如何发现。

分享