OpenPress

執行期 (Runtime)

Slides 架構

簡報 Press 的結構方式 — 每個資料夾對應一張投影片、一個有順序的索引檔案、SlideMeta,以及建置期的 objectId 注入。

在 OpenPress 中,簡報(Slides)的架構設計刻意偏離了傳統單一長篇檔案的作法,轉而採用一種高度模組化的目錄結構。這種設計在背後有著深刻的考量,特別是為了適應 AI Agent 的工作模式。

每個資料夾對應一張投影片的哲學

OpenPress 的簡報採用「每個資料夾對應一張投影片(Folder-per-slide)」的概念。每一張投影片都是一個獨立的目錄,擁有自己的邏輯與樣式。

為什麼不寫在同一個檔案裡?

  1. 降低認知負荷: 對於 AI Agent(或人類開發者)來說,一次理解並修改一千行的簡報檔案是非常容易出錯的。將投影片獨立成資料夾,能讓焦點集中在單一投影片的內容與邏輯上。
  2. 結構化的中繼資料: 每張投影片不僅僅是視覺呈現,它還攜帶了專屬的中繼資料(Meta)。這些資訊包含了版面配置的意圖、一句話的摘要、重點整理,甚至是視覺元素的純文字描述。這些隱藏的資訊為 AI Agent 提供了豐富的上下文,使其能更聰明地協助設計與排版。
  3. 明確的所有權與隔離: 不同的投影片之間不會互相干擾。這種隔離性使得平行協作與版本控制變得更加容易且安全。

順序與索引的分離

既然投影片被分散在不同的目錄中,系統如何知道它們的播放順序?

這仰賴於一個專門的「索引檔案」。這個檔案是整份簡報的骨幹,它唯一的職責就是定義投影片的先後順序。當需要重新排列投影片,或是在特定場合跳過某些投影片時,我們只需要修改這個結構性的索引,而完全不需要去動態搬移投影片目錄本身。這維持了實體檔案的穩定性。

建置期的智慧注入

為了在開發階段(Workbench)提供流暢的行內編輯與註解功能,系統需要在畫面上精確地識別每一張投影片的邊界。

OpenPress 選擇在「建置期」透過編譯器自動注入這些識別碼,而不是要求作者手動在每一張投影片的根元素上添加標記。這不僅保持了原始碼的純淨,也排除了人為疏失造成識別碼錯誤的可能性。這體現了 OpenPress 的核心原則:讓引擎處理枯燥的關聯與綁定,讓作者與 Agent 專注於內容與結構。