進階

本章彙整了應用程式的進階使用者介面——那些你偶爾才會用到、而非每個工作階段都會用到的功能。其核心是內建的 ext4 檔案瀏覽器,可直接在 Mac 上開啟工作區的磁碟映像檔,而無須啟動 VM:適用於從你不想啟動的工作區中救回檔案,或修復無法開機的工作區。本章結尾的簡短章節則說明兩項底層組態預設值。

此處所有內容都假設你已熟悉 工作區工作階段 的儲存模型。

ext4 檔案瀏覽器

每個 工作區 都將其資料保存在 Linux ext4 磁碟映像檔中——系統磁碟 disk.img 與家目錄映像檔 home.img。macOS 並未原生支援 ext4,因此在一般情況下,查看這些映像檔內部的唯一方式就是啟動 VM。Bromure Agentic Coding 以自家的無相依性使用者空間 ext4 讀寫器避開了這一點:它直接剖析磁碟上的格式並向你顯示檔案樹。

工作區 ▸ 開啟 ext4 檔案… 會在類似 Finder 的視窗中開啟任何 ext4(也支援 ext2ext3.img——無論是原始檔案系統或 MBR/GPT 分割的磁碟。不會掛載任何內容、不會啟動 VM,也不需要提升權限。

附註: 映像檔預設以唯讀方式開啟——即使某個工作區 VM 仍掛載著該磁碟也很安全。編輯是一個獨立且明確受管制的步驟(請參閱 編輯映像檔)。

可開啟的內容:工作區內的磁碟

工作區位於 ~/Library/Application Support/BromureAC/profiles/<uuid>/ 之下。其中有兩個映像檔值得瀏覽,還有它們的回復快照:

映像檔瀏覽器所顯示的內容工具列資訊列顯示
disk.imgUbuntu 系統根目錄——/etc/var/usr/opt 等等。此磁碟採用 GPT 配置(一個 512 MiB 的 EFI 分割區加上 ext4 根目錄);瀏覽器會自動定位 ext4 根目錄。partition @…MiB
home.img客體的 /home/ubuntu,直接位於檔案系統根目錄——dotfiles、專案簽出、.ssh、shell 歷史記錄,以及 .bromure/ 下的貼上快取。raw
checkpoints/<ts>.imgdisk.img 經開機驗證的回復快照。partition @…MiB
checkpoints/home/<ts>.imghome.img 的回復快照。raw

家目錄映像檔之所以如此運作,是因為客體以 mkfs.ext4 格式化它,並在開機時將它掛載覆蓋/home/ubuntu 之上——因此映像檔本身的根目錄就是該家目錄。在仍使用舊版共用資料夾家目錄的工作區上,並沒有 home.img 可供開啟;有關儲存模型與一次性升級,請參閱 工作階段

開啟映像檔

  1. 選擇 工作區 ▸ 開啟 ext4 檔案…
  2. 會出現一個標題為 開啟 ext4 磁碟映像檔 的開啟面板——「選擇一個 ext4 .img 磁碟映像檔(原始或分割)。」——起始於 ~/Library/Application Support/BromureAC。導覽至工作區的 profiles/<uuid>/ 資料夾,並選取 disk.imghome.img,或 checkpoints/ 下的檔案。
  3. 瀏覽器會在標題為 ext4 — «檔名» 的視窗中開啟,並顯示檔案系統根目錄。

工具列的資訊列(左下角)會摘要說明該磁碟區:其標籤、總大小、檔案系統是以原始形式或在某個分割區位移處找到,以及其狀態——cleannot cleanly unmountedjournal needs recovery。每個映像檔只會有一個視窗;重新開啟已開啟的映像檔只會將焦點移到其視窗。

瀏覽、預覽與擷取

主檢視是一個三欄表格——名稱大小類型——目錄會列在前面。類型會區分資料夾、檔案與符號連結,以及特殊的 Unix 節點類型(Char、Block、FIFO、Socket)。

  • 導覽——雙擊資料夾以進入;點按工具列的 向上 箭頭以返回。麵包屑會顯示目前的路徑。
  • 預覽——雙擊檔案,或以右鍵點按並選擇 預覽。文字檔會以文字呈現;二進位檔案會以十六進位傾印呈現。無論哪種方式,預覽都會限制在前 1 MiB,且頁尾會回報所顯示的位元組數佔檔案總位元組數的多少。符號連結會以其目標路徑預覽。
  • 擷取——以右鍵點按檔案並選擇 擷取…,透過儲存面板將其完整內容寫入你的 Mac。這是你最常使用的唯讀路徑。

編輯映像檔

編輯功能刻意設有管制關卡。點按工具列中的 啟用編輯…;會出現警告:

只能編輯其工作區 VM 已停止的映像檔。對執行中 VM 開啟的磁碟進行寫入會使其損毀。

確認後,映像檔會以讀寫方式重新開啟,工具列中會顯示橘色的 編輯中 鉛筆徽章。接著檔案的內容選單會多出 取代…:選取一個主機檔案,以其內容就地覆寫所選檔案。編輯器會重新計算該 inode 的 metadata_csum 檢查碼,因此結果會保持一致且無須修復。

警告: 取代僅限就地進行。新內容必須符合檔案已配置的區塊大小——較大的檔案會被拒絕並顯示 該檔案將需要增長(增長、建立與刪除檔案的功能尚未啟用)。內嵌資料檔案無法編輯。當日誌需要復原時,寫入會被拒絕——請先執行 fsck(見下文)。且切勿編輯執行中 VM 所掛載的映像檔。

執行 fsck

工具列的 執行 fsck… 按鈕會對開啟的映像檔執行 fsck.ext4e2fsck),以重播日誌並修復檔案系統。它會先確認——「要對此映像檔執行 fsck.ext4 嗎?」,並提醒工作區 VM 必須已停止,且該工具可能會修改映像檔——接著執行強制自動修復。對於原始映像檔,fsck 會直接在該檔案上執行;對於分割磁碟,映像檔會以 hdiutil 掛接但不掛載,檢查 ext4 切片,之後再卸離映像檔。過程中不涉及任何提升權限。

結果會在一張報告工作表中顯示,附有淺白的摘要——「檔案系統正常。」、「檔案系統錯誤已更正。」或「檔案系統錯誤仍未更正。」——以及完整的工具輸出;隨後映像檔會重新開啟。

附註: macOS 未內建 e2fsprogs。若缺少該工具,會出現一則警示 未安裝 fsck.ext4,並附上修正方式 brew install e2fsprogs。應用程式會先搜尋自身的套件包,再搜尋 $PATH,最後搜尋 Homebrew 的 keg-only e2fsprogs 位置。

何時使用它

此瀏覽器能將已停止的工作區磁碟變成你可以從主機檢視並救援的對象:

  • 從你不想啟動的工作區中救回檔案——以 擷取…home.img 取出未提交的變更或一份日誌。
  • 在回復之前檢視檢查點,以確認它保存了你所預期的內容。可搭配 還原家目錄…重設為基底… 一併使用,兩者皆在 檢查點與回復 中說明。
  • 救援無法開機的工作區——就地取代一個損壞的組態檔,接著若該次寫入使日誌需要復原,則執行 fsck。有關開機失敗的診斷,請參閱 疑難排解

開發者預設值

應用程式會從其 UserDefaults 網域 io.bromure.agentic-coding 讀取兩個底層設定。在應用程式未執行時以 defaults write 設定它們,接著重新啟動:

效果預設值
vm.homeImageGB新建立 的 ext4 家目錄映像檔的表面(客體可見)大小,單位為 GiB。主機檔案為稀疏檔案,因此一開始不佔用任何空間。範圍限制在 8–1024。64
vm.mtu工作區 VM 主要 NIC 的 MTU 上限,在每次開機時寫入客體。預設值 1280 對 VPN 是安全的(WireGuard、IKEv2 與企業 PMTU 路徑)。1280

例如,若要讓未來工作區的家目錄映像檔顯示為 128 GiB:

defaults write io.bromure.agentic-coding vm.homeImageGB -int 128

附註: vm.homeImageGB 只會影響變更之後建立的家目錄映像檔;既有映像檔會保留其大小。家目錄映像檔日後可以增長(線上截斷加上 resize2fs),但無法縮小。

提示: 對於真正用完即丟的工作,bromure-ac vm run --rm 會啟動一個 Docker 風格的一次性工作區,其磁碟會在 VM 停止時刪除——詳見 自動化與 CLI