分頁與持久化
多分頁工作區
CodefyUI 支援以分頁形式呈現多個獨立的畫布。每個分頁都有各自的:
- 節點、連線與排版
- 執行環境與紀錄
- 錄製的輸出與保留的權重(見教學檢視器)
- 復原/重做歷史(最多 50 步)
你可以並列保留多個實驗,例如在一個分頁放訓練 graph,另一個放推論 graph,而且各分頁的狀態不會互相干擾。
分頁列
雙擊分頁可重新命名(Enter 套用,Esc 取消)。正在執行的分頁會在名稱旁顯示一個圓點。唯讀徽章表示儲存(以及外掛寫入)會被拒絕,通常是因為該 graph 由比目前更新的 CodefyUI 寫入;重新命名與關閉仍然可用。外掛開啟的分頁則會在游標停留時說明來源。關閉含有 graph 的分頁前,系統會先確認並指出節點數量,因為關閉分頁無法復原。伺服器從專案目錄執行時,每個專案會保留自己的一組分頁。
自動儲存
所有分頁都會自動存在瀏覽器裡,因此重新載入頁面時你的工作會被還原。這是瀏覽器本機的儲存;不會同步到伺服器。
儲存使用 IndexedDB,每個分頁各存一筆資料。這對大型 graph 很重要:舊的 localStorage backend 對每個來源大約只有 5MB 上限,graph 一旦超過就會直接停止儲存。IndexedDB 沒有相當的實務上限,而且每次只有目前編輯的分頁會重新寫入。
第一次開啟採用 IndexedDB 儲存的版本時,localStorage 最後儲存的內容會自動複製到 IndexedDB,不需要任何操作。舊的 localStorage 副本會保留(所以降回舊版仍可開啟它最後讀取的 graph),但之後不再更新。
如果你的瀏覽器沒有可用的 IndexedDB — 某些無痕模式,或被 sandbox 限制的 iframe — 儲存會退回 localStorage,也就回到它原本的容量上限與「儲存空間已滿」的警告。
儲存與載入
已儲存的 graph 放在伺服器上,而不是瀏覽器中:
- 檔案 → 儲存/**另存新檔...**會以名稱寫入目前分頁的 graph;覆寫既有 graph 前,「儲存」會先詢問。檔案 → 清除畫布會在確認後清空分頁。
- 載入會列出可搜尋的已儲存 graph。載入到當前畫布分頁中會取代畫布上的內容,但不會把分頁綁定到該檔案,因此下一次儲存時仍會詢問要存到哪裡;載入並儲存則會把分頁綁定到該檔案,之後按「儲存」就會直接覆寫它。
匯入/匯出
你可以把任何 graph 匯出成 JSON 檔案,之後再匯入回來(或分享):
- 匯出 → 匯出為 JSON會把目前分頁的 graph(節點、連線、參數、段落標記與子圖定義)寫成一個
.json檔案。 - **載入 → 匯入 JSON...**會用該檔案取代目前分頁的畫布;若要保留現有 graph,請先開一個新分頁。由較新版 CodefyUI 寫出的檔案會以唯讀方式開啟,並顯示通知。
- **匯出 → 匯出架構圖 (SVG)/匯出架構圖 (PNG)**只會繪製架構 — 節點、連接埠與連線,不含參數值 — 並使用適合文件的淺色背景。
- 匯出 → 匯出為 Python會產生一個可讀的單檔 Python 程式:每個節點一個函式(參數以可編輯的字面值內嵌)、依執行順序把節點串接起來的流程函式,以及帶有簡易命令列介面的
main()進入點。每個節點函式都委派給畫布所使用的同一份節點實作,因此執行結果與畫布一致。請用相容的 CodefyUI 安裝環境中的 Python 來執行;不需要啟動網頁伺服器。用--help查看裝置、GraphInput JSON、逾時與專案資產等選項。
後端的範例 graph 使用的正是同一種 JSON 格式,所以匯出的 graph 也可以用 **CLI 圖形執行器**在無介面(headless)下執行。
因為 graph 是純 JSON,所以可以直接進行 diff 與版本控制。將 graph 與程式碼一起 commit,即可記錄一個精確且可重現的管線版本。