← 筆記

為什麼是 Mac App,而不是瀏覽器擴充功能

2026 年 7 月 · DeepSRT 開發筆記

上一篇講了為什麼 DeepSRT 離開雲端。自然的下一個問題是:離開之後為什麼落腳在 Mac App?畢竟 v1 本來就是一個瀏覽器擴充功能——而且是個很重的擴充:content script 注入 YouTube 頁面、攔截字幕請求、把雙語字幕疊在別人的 DOM 上。

「別人的 DOM」就是問題所在。

另一場貓抓老鼠

上一篇說集中式抓取是跟平台風控玩貓抓老鼠;瀏覽器擴充是另一場同構的遊戲,對手變成兩個。YouTube 前端一改版,選擇器失效、字幕疊層錯位,整個功能一夜壞掉——我們修過太多次。瀏覽器這邊也在收緊:擴充功能的背景程序不再常駐,隨時被平台回收;能做什麼、不能做什麼,規則每年都在變。

你的產品活在兩個平台規則的交集裡,而兩邊都不欠你什麼。

常駐是一種能力

把邏輯搬進 native app,最被低估的收穫是「常駐」。DeepSRT 在你的 Mac 上開著一個本機 API(127.0.0.1)——擴充功能做不到這件事,它的背景程序活不過平台的回收週期。

常駐的本機 API 讓客戶端可以很薄:Chrome 擴充從 v1 的一大包邏輯,縮成一個只會呼叫本機 API 的側邊欄;即將到來的 MCP 支援讓你的 AI agent 用同一個 API 跟 DeepSRT 對話。金鑰放在 macOS Keychain,不是瀏覽器的 localStorage;字幕和摘要快取在磁碟,重開即續。這些都是作業系統給 native app 的待遇。

播放器是自己的

v2 內建播放器,雙語字幕畫在自己的 view 上:拖曳調位置、快捷鍵調字級、句子合併讓 ASR 字幕不再句子斷一半——這些功能在自己的 view 裡是一個下午的工作,在別人的 DOM 裡是一場永遠打不完的仗。YouTube 改版再也影響不到字幕疊層,因為根本沒有東西疊在它的頁面上。

系統的一等公民

native app 拿到整個作業系統的整合面:deepsrt:// deep link 讓 Safari 擴充、launcher、任何腳本一鍵把影片交給 DeepSRT 接手播放;Safari 擴充功能本身也只能由 native app 內嵌發佈;剪貼簿裡有 YouTube 連結,開 App 就問你要不要直接摘要。而這一切裝下來 App 本體只有幾 MB——原生 SwiftUI,不是包了一整個瀏覽器的殼。

誠實的邊界

代價很清楚:目前只有 macOS。而且瀏覽器內的體驗仍然有價值——很多人就是想在看影片的分頁旁邊開個側欄。所以薄客戶端擴充會繼續存在,而且即將開源:所有難的事都在 App 裡,擴充就該薄到人人可以讀完它的原始碼。