Capsule:具備嵌入式 SQLite 的可攜式單一檔案網頁應用程式
Capsule 是一個將網頁應用程式轉換為可攜式文件的平台。透過將使用者介面、媒體資源以及本機 SQLite 資料庫打包成單一的 .capsule 檔案,該工具消除了對雲端帳號、伺服器和訂閱的需求,將應用程式視為可共享的文件,而非託管服務。
核心架構與可攜性
Capsule 應用程式旨在實現自給自足與跨平台運作。該系統將用於 UI 的 HTML 與 CSS 以及用於資料儲存的 SQLite 打包在一起,確保應用程式及其狀態能共同存在於單一檔案中。
- 發佈:
.capsule檔案可以像 PDF 或 Word 文件一樣,透過標準通訊軟體(WhatsApp、AirDrop、電子郵件)進行共享。 - 跨平台支援: 這些應用程式可在 macOS(12 Monterey 或更新版本)、Windows(10 64 位元或更新版本)以及 Linux(Ubuntu/Debian/Fedora)上執行。原生 iOS 與 Android 支援預計即將推出。
- 主機播放器 (Host Player): 若要在桌機上執行這些檔案,使用者必須下載一個主機播放器,作為
.capsule容器的執行環境。 - 網頁預覽: 存在一個基於瀏覽器的版本供快速預覽,但它無法直接在本機儲存或開啟檔案。
AI 驅動的開發工作流程
Capsule 利用 AI 降低了應用程式開發的門檻,讓使用者能透過自然語言提示 (Prompt) 來生成並迭代應用程式。
- 提示 (Prompting): 使用者描述所需的功能、佈局與運作方式。
- 生成 (Generation): AI 會生成一個完整的
.capsule容器,包含 HTML UI 與必要的 SQLite 架構。 - 迭代 (Iteration): 使用者可以使用 AI 提示或 MCP (Model Context Protocol) 編碼工具,即時修改功能、主題(例如深色模式)或架構。
隱私與本機優先設計
Capsule 遵循嚴格的「本機優先」(local-first) 哲學,以確保資料所有權與隱私。
- 離線優先: 應用程式可 100% 離線運作,無需網路即可存取或修改資料。
- 無廠商鎖定: 由於 Capsule 使用標準 HTML 與 CSS,程式碼與資料不會被困在封閉的雲端孤島中。
- 本機保險庫: 資料直接儲存在使用者裝置上的
.capsule檔案內,降低了伺服器端資料外洩的風險。
社群觀點與技術評論
開發者在 Hacker News 上的討論強調了幾項技術考量,以及 Capsule 方法的潛在替代方案。
發佈阻力與安全性
批評者指出,與任何瀏覽器皆可執行的標準 HTML 檔案相比,需要安裝額外的主機應用程式會造成發佈上的阻力。此外,針對 .capsule 格式內可能包含惡意負載的安全性疑慮也隨之浮現,部分使用者回報 macOS Gatekeeper 將該應用程式標記為已損壞。
"這需要使用者在機器上安裝一個能讀取 .capsule 檔案的主機應用程式對吧?這難道不會成為發佈上的阻力嗎?" — @handle
狀態管理與協作
多位使用者質疑將狀態與程式碼打包在一個可共享檔案中的實用性,並主張如果資料變更頻繁,使用者將必須不斷地將檔案重新傳送給協作者。
"每次狀態變更時,你都必須將新的 Capsule 檔案寄給使用該應用程式的其他所有人……這樣做(將其託管在網路上)不是簡單多了嗎?" — @handle
技術替代方案
開發者指出了現有的網頁 API 與工具,這些工具也能達到類似的結果:
- File System Access API: 允許網頁直接在瀏覽器中讀取與寫入本機檔案。
- OPFS (Origin Private File System): 被 Trilium Notes 等應用程式使用,可在純本機網頁應用程式中提供 SQLite 持久化儲存。
- PocketBase: 一個將 SQLite 打包成單一執行檔的開源後端。
- Decker: 一個將整個應用程式打包成單一平面 HTML 檔案的專案。
應用潛力
儘管有上述批評,部分使用者仍認為這對於「代理」(agentic) 工作流程極具價值——即 AI 代理可以為商業流程建立小型、專門的工具,而無需承擔維護完整後端的營運成本。
"對於那些規模不足以支撐維護傳統網頁應用程式後端營運成本的工作流程來說,這可能是一個不錯的應用程式發佈工具。" — @handle
Sources
相關
- Dispatch
- 專案
- Dispatch
- Dispatch