ReadAware

外掛系統

外掛為 ReadAware 帶來新的動作、新的頁面,以及——最重要的——供閱讀助理使用的新工具。外掛是一個小小的 JavaScript 模組;它的介面始終由應用程式自己的設計系統渲染,因此外掛功能在觀感上與原生無異。

外掛可以貢獻什麼

  • 選取動作——閱讀器文字選取選單中的條目。把一個單詞送進 Anki、翻譯一個段落、把摘錄儲存到任何地方。
  • 頂欄按鈕——閱讀器或書架頂欄上的圖示按鈕,點按後開啟一個彈出層,或(在書架上)開啟一個完整頁面。
  • 命令——命令面板中的條目。每個外掛動作都會自動出現在那裡;顯式命令用來補充沒有按鈕的動作。
  • 助理工具——閱讀助理在對話中可以呼叫的函數。這是上限最高的掛載點:外掛可以讓助理查詢你的 Anki 牌組、你的 RSS 積壓,或你使用的任何服務。
  • 內容供應商——章節由外掛按需提供的虛擬書籍。一個 RSS 訂閱源可以躺在你的書架上,像任何一本書那樣被閱讀、標註和討論。
  • 朗讀聲音——為閱讀頁朗讀接入 TTS 引擎。外掛負責合成音訊,應用程式負責播放,單句失敗時退回系統語音。
  • 設定與排程任務——宣告式設定會成為外掛在「設定」裡的專屬分類(含 API 金鑰,加密儲存);宣告的週期任務會在應用程式開啟期間定時執行。

原生外觀,是構造出來的

外掛從不渲染自己的 HTML。它們用一小套詞彙宣告檢視——markdown、清單、表單和少量結構化區塊——由應用程式用自己的元件渲染出來。外掛作者放棄對像素的控制,換來的是零設計工作量,以及一個永遠保持一致的應用程式。

信任模型

外掛執行在應用程式內部,與應用程式共享同一個 JavaScript 上下文——與 Obsidian 相同,而不同於瀏覽器擴充功能的沙箱。有兩層務實的保護:

  • 權限——外掛的 manifest 宣告它要使用什麼(網路、閱讀資料、AI、剪貼簿……),API 只暴露已宣告的部分。這防範的是無意的越界。
  • 安裝本身就是那次信任決定。在任何檔案被複製或執行之前,應用程式會用平實的語言逐條展示外掛申請的權限,並等待你的同意。請像安裝軟體一樣對待外掛的安裝。

應用程式自身的架構也限定了影響範圍:外掛儲存被命名空間隔離在應用程式的資料目錄內,桌面外殼不授予任意的檔案系統存取。

安裝外掛

  • 外掛市集——「設定 → 外掛 → 外掛市集」列出來自公開外掛儲存庫的社群外掛;安裝只需一次點按,並會先展示權限摘要。
  • 從資料夾安裝——「設定 → 外掛」可以安裝任何本機外掛資料夾。這就是開發循環:把它指向你的工作目錄,改動後重新安裝即可。

版面由你掌控

外掛貢獻能力;按鈕放在哪裡由你決定。「設定 → 自訂」可以編排每個介面(書架頂欄、閱讀器頂欄、選取選單):在顯示區與更多選單之間拖曳條目、調整順序,或恢復預設。新的外掛動作會安靜地落在更多選單裡,而一切始終可以從命令面板觸達。

用任意 TTS 聲音朗讀

內建的 TTS Voices 外掛把朗讀接到你選擇的引擎上—— ElevenLabs、Fish Audio、OpenAI,或任何 OpenAI 相容端點(Kokoro、 LocalAI、Edge TTS 橋接……)。一切都在設定 → TTS Voices裡完成:選定供應商,它的欄位隨之出現——API 金鑰直接寫入加密的金鑰儲存;供應商能列舉聲音時,聲音欄位就是一個下拉清單(列不出來時也隨時可以手動輸入名稱)。

一個流行的免費方案是透過 openai-edge-tts 使用微軟 Edge 的類神經網路語音——它是一個說 OpenAI 音訊 API 的本機小服務:

  1. 在本機跑起服務——例如 docker run -d -p 5050:5050 travisvn/openai-edge-tts(預設無需 API 金鑰)。
  2. 在「設定 → TTS Voices」裡,把供應商設為自訂 / 本機(OpenAI 相容),端點填 http://127.0.0.1:5050/v1/audio/speech
  3. 從清單裡挑一個聲音——應用程式會讀取伺服器端目錄,完整的 Edge 音色(如 zh-CN-XiaoxiaoNeuralen-US-AriaNeural)會和 OpenAI 風格的別名一起出現。

然後開啟一本書開始朗讀:句子經由你選的聲音播出,目前句播放時下一句已在預先擷取;某一句合成失敗會退回系統語音,朗讀不會中斷。

自己寫一個

外掛就是一個包含 manifest.json 和單個 main.js 的資料夾。API 參考覆蓋了完整的契約,發佈上架介紹如何把它發到外掛市集。