HeyBinyang
← 返回開源
·技能·Skill

native-feel-skill

一個專為設計跨平台桌面應用程式而生的 Agent Skill,旨在打造原生感的使用體驗——萃取自 Raycast 2.0 深度探討與對 Raycast Beta.app 的逆向工程。包含八項架構原則、四層架構、WebKit/WebView2 生存指南,以及 75 項發布稽核清單。

Windows / macOS / Linux

一個用於設計跨平台桌面應用程式的Agent Skill,使其感覺像原生應用 — 提煉自Raycast 2.0的技術深入探討,並基於對出貨的Raycast Beta.app 二進位檔進行逆向工程。

兩個目標通常互相矛盾:便利的跨平台開發與接近原生的效能。這項技能捕捉了結構性的選擇——八個架構原則、四層架構、WebKit/WebView2 生存指南、75項出貨審核清單——讓應用程式能兩者兼得。

這是什麼

為需要建置以下特性桌面應用程式的架構師、技術主管和工程師提供的參考:

  • 從單一UI程式碼庫在macOS + Windows(可選Linux)上執行,

  • 在500毫秒內啟動,常駐記憶體低於500 MB,

  • 對使用者來說與原生應用程式無異(沒有cursor: pointer 的痕跡、啟動時沒有白閃、沒有WebKit右鍵選單、沒有平滑滾動的JS),

  • 支援外掛/擴充套件生態系統(使用TypeScript),

  • 可與iOS和伺服器後端共享效能關鍵的程式碼。

這是四層架構:原生殼層 → 系統WebView(WKWebView/WebView2)→ Node後端 → Rust核心,透過一個統一的型別化IPC schema連接,並為每個執行時期生成客戶端。

這不是什麼

  • 非為單一OS的應用程式(直接用原生開發即可)。

  • 非為Electron那種「夠用就好」的應用程式(這裡的打磨預算高出5–10倍)。

  • 非為嚴格要求低於150 MB或低於100毫秒冷啟動的應用程式(底線是真實存在的)。

  • 非為遊戲、文件編輯器或媒體播放器。

執行checklists/decision-tree.md 來判斷這個架構是否適合你的專案。它已經排除了幾個常見案例——直接說出來比過度調整建議更有用。

理念

這個架構解決的核心矛盾:當便利的跨平台開發與接近原生的效能通常互相矛盾時,桌面應用程式要如何兩者兼得? 八個原則說明了結構性的調整:

  1. 將接縫放在渲染層 — 在WebView之上共享,在之下分歧;這是唯一能同時兼顧開發體驗與原生感的層級。

  2. 一個schema,多種語言 — 多語言成本只在宣告時支付一次,不在呼叫端支付。

  3. 順應平台,而非與之競爭 — 作業系統繪製的模糊、滾動、材質和深色模式比你自己做的更好。

  4. 效能是感知的屬性 — 使用者感受到的,而不是Activity Monitor報告的。

  5. 短迭代循環就是產品 — 200毫秒的熱重載 vs 30秒的原生重建,這是一個150倍的複合優勢。

  6. 有意識地跨越邊界 — IPC有成本;將每次跨越設計為非同步、批次、schema型別。

  7. 身份就是肌肉記憶 — 快捷鍵、排序順序、動詞就是應用程式;其他都是實作細節。

  8. 將基準與邊際分離 — WebView+Node的底層是租來的;只有你的髒頁才值得最佳化。

先閱讀references/01-philosophy.md。其他一切都是推論結果。

關於Agent Skill

Agent Skills 是新興的標準,用於包裝領域知識,讓任何相容的代理(Claude Code、Claude Agent SDK或其他支援Agent Skill的執行環境)都能發現並載入。透過README頂部的提示安裝後,當代理對話涉及到跨平台桌面架構、WebView細節或Raycast風格的應用程式時,該技能會自動啟用——觸發條件在SKILL.md 的前置元資料中宣告。

資料來源

  • Raycast的公開技術文章:A Technical Deep Dive into the New Raycast

  • Raycast Beta.app v0.60.0(macOS 26+版本,Xcode 17,arm64)的逆向工程——參見references/07-evidence-raycast.md 了解發現的內容與方法。

分享