儲存庫路徑只有放在所屬機器上才有意義。筆電和伺服器都可能有一個叫 demo 的目錄,但開啟其中一個,不應悄悄選中另一個。2026 年 11 月 9 日合入 Genesis main 分支的更新,將 Projects 頁面的最近專案追蹤替換為資料庫支援的專案登記冊,並讓專案啟用經過目前選取的節點。Projects 整合提交

重新開啟專案,身分仍然保留
Virtual Context Tree(VCT,虛擬上下文樹)將作業系統中的絕對路徑對應到 vct:///projects/demo 這樣的標準節點。Mount 就是這份對應,記錄節點、路徑、顯示名稱與最後開啟時間。它為導覽提供穩定身分,無須移動儲存庫,也不會建立檔案系統掛載。登記冊實作
再次登記同一正規化路徑,只會更新時間戳記並保留原節點。不同路徑的目錄同名時,會視需要增加後綴,產生不同節點。若舊記錄中的路徑已不存在,新路徑的顯示名稱與節點末級名稱又與之相符,就可以重用原節點。這是一條具體的遷址規則,而非根據資料夾名稱相似就認定它們是同一專案。身分規則
持久化現由任務儲存中的 SQLite vct_mounts 表負責。執行中的 VCT 程序保留讀取快取;修改先以原子方式寫入整張表,再改變快取。持久化失敗會回傳錯誤,原狀態保持不變。成功修改後發送帶節點資訊的通知,將持久保存的專案身分與介面更新連接起來。
登記冊有容量邊界:預設保留最新的 100 個掛載,超過限制時淘汰最舊項。它是一份工作導覽記錄,不應被當成所有歷史儲存庫的無限檔案。儲存與容量
專案搜尋與開啟,使用同一份記錄
Projects 頁面與專案選擇面板現在都使用已登記的掛載。開啟或建立專案時,會呼叫面向節點的 mount_project 介面,再重新載入清單。路徑建議先對已登記路徑做不區分大小寫的文字比對,再補充檔案系統前綴建議並去重。因此,輸入熟悉路徑中的一段,就可能找到已登記專案,無須從父目錄重新逐層瀏覽。導覽變化
目前專案顯示的 VCT 節點從已載入掛載中查找,不會僅為了繪製標籤就登記一個新專案。忘記專案會移除登記項,而不會刪除儲存庫檔案。這些區別讓導覽操作與工作本身的修改保持清楚的邊界。
選了遠端主機,就沿遠端節點處理
設想開發者在本機與 SSH 伺服器各有一份 demo。選取遠端主機後,介面載入該主機的專案清單。遠端連線尚未就緒時,清單保持空白,不會把本機專案展示成遠端候選項;啟用操作也會等待連線就緒,避免原本發往伺服器的請求落到仍處於本機的節點。遠端優先載入與啟用
遠端路徑按所選主機的規則解讀,包括支援的 POSIX 與 Windows 絕對路徑。遠端啟用非同步執行,目錄檢查與登記不會阻塞 LiveView 介面。後續修正也正確解開遠端掛載結果,使專案能取得對應 VCT 節點。遠端掛載修正
此情境中的檢查可以很具體:重新連接伺服器,搜尋其已登記路徑,開啟專案,確認所選主機與顯示的專案節點;再對本機儲存庫重複操作。相近的目錄名稱,不應讓本機登記冊填入尚未就緒的遠端視圖。
有步驟地接續舊專案記錄
對包含這些改動的開發建置,資料庫遷移會從可用的舊 projects 資料列產生 VCT 掛載,保留非空顯示名稱並處理目錄同名衝突,最終保留最新 100 項。空路徑或相對路徑會被記錄並略過。若舊表無法讀取,遷移會中止並回復,保留舊表及資料,而非把讀取失敗當成空專案清單。遷移保護與上游測試涵蓋
在現有工作空間嘗試此類建置前,先備份各相關主機的應用程式資料。啟動後檢查已知專案是否出現在正確主機、重新開啟是否保留相同節點,以及重新啟動後清單是否仍在。若啟動報告遷移錯誤,應保留資料庫與診斷輸出供調查,不要靠刪除儲存取得空清單。
這組更新讓開發者在選擇工作位置時,就能看清專案邊界。關於多儲存庫之間如何保持程式碼歷史獨立,可繼續閱讀 Genesis 多儲存庫工作:一個目標,各自的歷史。