工作區
工作區是 Bromure Agentic Coding 的隔離單位:一台擁有自身系統磁碟、自身持久家目錄、自身編碼代理程式與憑證,以及自身安全政策的 Ubuntu VM。應用程式所做的一切都發生在工作區內部——一個臨時工作區可以使用一次性 API 金鑰完全開放地執行,而一個面向正式環境的工作區則會記錄每一次 AI 交換,並在每次破壞性寫入前先徵詢提示,兩者之間絕不共用任何一個位元組。
應用程式中幾乎每項設定都是各工作區獨立的。例外是應用程式層級的 自動化 伺服器、下載的瀏覽器映像檔,以及已安裝的本機模型——這些都會跨工作區共用。在程式碼與匯出的 JSON 中,工作區稱為 profile;CLI 可交替接受工作區的名稱、其 id,或 short-id 前綴。本章介紹您用來管理工作區的視窗,以及您從中驅動的生命週期動作——建立、編輯、複製、重設、刪除。每個工作區所帶的 15 窗格設定編輯器記載於 設定參考;工作區執行後所發生的一切涵蓋於 工作階段;而隔離模型本身則在 概念與架構。
工作區瀏覽器
應用程式的主視窗即為工作區瀏覽器:左側邊欄列出您的工作區、終端機 Grid,以及您排程的自動化,而詳細資料窗格則顯示所選工作區的即時運作狀態與組態。
側邊欄由上到下有三個區段:
- WORKSPACES——一個釘選的 Grid 節點,其後為每個工作區一列。
- AUTOMATIONS——您排程的無人值守代理程式執行,並附有一個 + 按鈕可新增。
- 最底部有一個黑色 + 按鈕,用來建立新工作區。
選取某一列工作區會填入詳細資料窗格。如果工作區處於 Off 或 Suspended,該窗格會顯示其儀表板與 啟動 或 Resume 按鈕;一旦執行中,舞台改為顯示即時工作階段(其終端機分頁、瀏覽器窗格與儀表板),記載於 工作階段。
側邊欄可從 100 至 600 點調整大小(預設 220)。將分隔線拖曳至約 100 點以下,或按 ⌃⌘S,即可將其摺疊為窄圖示列;再按一次即可還原。工作區依最近使用順序列出,對於您從未開啟過的則以建立日期作為後備排序。
側邊欄
工作區列
每列工作區由左至右帶有:
- 一個著色圖磚——一個以工作區顏色著色的伺服器機架字符,其角落有一個小型運作狀態圓點。
- 工作區名稱,當該列被選取時以粗體顯示。
- 名稱下方的狀態標籤——Off、Starting… 或 Suspended。執行中的工作區不顯示標籤;取而代之的是其終端機分頁加上一個常駐的 Docker 節點會巢狀顯示於該列之下(該節點帶有執行中容器計數徽章,無容器執行時顯示 0)。
- 名稱之後的紅色警告三角形,當工作區被憑證洩漏偵測器標記為已遭入侵並拒絕開機直到被抹除為止(請參閱 概念與架構)。
將游標懸停於執行中的工作區會在該列顯示三個快速動作按鈕:彈出至自己的視窗、關閉此 VM,以及 新增分頁(⌘T)。每一列末端的 ⋯ 按鈕會開啟該工作區的內容選單——本章其餘部分所述每項生命週期與管理動作的樞紐。
運作狀態
工作區 VM 始終處於下列幾種狀態之一,同時透過該列的狀態圓點與詳細資料窗格標頭中名稱旁的膠囊標籤呈現:
| 狀態 | 列圓點 | 意義 |
|---|---|---|
| Off | 灰色 | 未執行。無 RAM、無 CPU;僅有磁碟留在硬碟上。 |
| Starting…(Booting) | 橘色,脈動 | VM 正在開機。 |
| Running | 綠色 | 已開機並運作中;工作階段為即時。 |
| Suspended | 黃色 | RAM 已存至磁碟;幾乎瞬間即可從中斷處恢復。 |
這些狀態背後的生命週期——暫停與關機有何不同,以及「關閉動作」的作用——記載於 概念與架構。
詳細資料窗格
當工作區未執行時,其詳細資料窗格是一個儀表板:頂部橫列一排狀態卡、下方一個 CONFIGURATION 摘要,以及右上角的 啟動 / Resume 按鈕。
狀態卡
五張卡回報工作區的資源概況。其數值會依 VM 是否執行中而不同:
| 卡 | Off / Suspended 時 | Running 時 |
|---|---|---|
| CPU | —(標題 off) | 即時 CPU 負載,附走勢圖記錄。 |
| Memory | 已配置的 RAM,例如 8 GB(標題 allocated) | 客體內部使用中的記憶體。 |
| vCPUs | 核心數,例如 4(標題 cores) | 相同核心數,附客體目前的負載平均值。 |
| Disk | 0 MB(標題 of 0 MB (host)) | 工作區所用的磁碟,相對於主機容量,即時從客體讀取。 |
| Uptime | —(標題 off) | 自開機以來的時間,例如 3h 12m。 |
已配置的記憶體與 vCPU 數值來自工作區的 資源 設定。執行中儀表板,包含即時連接埠清單與網際網路曝露情形,涵蓋於 工作階段。
CONFIGURATION 摘要
CONFIGURATION 卡是工作區最具影響力設定的快速唯讀概覽——讓您在啟動工作區前確認它將執行什麼:
| 列 | 顯示 |
|---|---|
| <代理程式名稱>(每個啟用的代理程式一列) | 它在何處執行以及如何驗證——Cloud · API token、Cloud · Subscription、On-device · <model> 等等。 |
| Guardrails | 一致時為 Off 或單一模式,混合時為 Custom (N domains)。 |
| Prompt-injection scan | On 或 Off。 |
| Shared folders | 已掛載的資料夾名稱,或 None。 |
其中每一項都對應到設定編輯器中的一個窗格:代理程式、防護欄、提示注入,以及 資料夾。
附註: 一個剛解碼、早於某項設定存在的工作區,會在此顯示該設定的舊版預設值——例如上方螢幕截圖中的 Codex Sandbox 回報 Guardrails Off 與 Prompt-injection scan Off,因為它是在那些預設值存在之前建立的。新建立的工作區則改為繼承目前的原廠範本(Guardrails 設為 Prompt before write,追蹤設為 AI request details)。請參閱 偏好設定範本。
啟動與 Resume
右上角的按鈕在工作區為 Off 時顯示 啟動,在 Suspended 時顯示 Resume。點擊它會為 VM 開機(或從其已儲存的 RAM 狀態喚醒它)並將舞台切換至即時工作階段。相同的動作也可從該列的 ⋯ 選單取得。
建立工作區
點擊側邊欄底部的黑色 + 按鈕(其工具提示顯示 New workspace)。這會開啟設定編輯器於一個標題為 New workspace 的視窗,並從您的 偏好設定範本 預先填入一個佔位名稱——Default workspace,若名稱已被使用則自動編號為 Default workspace 2、3 等等。
- 在 一般 窗格為工作區設定 Name。這是儲存時唯一必填的欄位。
- 依需要調整任何其他窗格——代理程式、憑證、防護欄、外觀、資源。每個窗格皆記載於 設定參考。
- 點擊 Create。按 Esc(或 Cancel)以捨棄草稿。
新工作區是從範本分岔而來,因此您在 Bromure → Preferences… 中所設定的一切都會成為其起點。原廠範本以 Subscription 驗證模式啟用 Claude Code 作為主要代理程式,將每項防護欄設為 Prompt before write,並開啟一組 ed25519 SSH 金鑰對(除非範本已帶有金鑰,否則 Credentials → SSH Keys 下的 Generate an ed25519 keypair 切換會預先勾選)。
提示: 大多數編輯器變更僅在您點擊 Create 或 儲存 時才套用。少數動作無論如何都會立即生效——本機模型與提示注入模型下載、MCP OAuth 授權、訂閱註冊,以及 SSH 金鑰匯入——因為它們觸及的是共用或主機端狀態,而非工作區文件。
編輯與重新命名工作區
開啟工作區的 ⋯ 選單並選擇 Edit… 以重新開啟同一個編輯器,這次標題為 編輯工作區 並綁定至現有工作區。變更任何值並點擊 儲存。
並沒有獨立的「重新命名」指令——工作區是透過編輯其 一般 窗格中的 Name 欄位來重新命名。同一時間只存在一個編輯器視窗;開啟另一個工作區的編輯器會拆除該視窗並重新建構。
顏色與工作區圖磚
每個工作區都有一個強調 Color,於 一般 窗格從八個預設中選擇:
| 藍(預設) | 紅 | 綠 | 橘 |
| 紫 | 粉紅 | 藍綠 | 灰 |
該顏色會為工作區的側邊欄圖磚、其選取醒目提示,以及其分頁強調著色——這是一眼分辨工作區的最快方式。顏色是唯一的各工作區視覺識別:並沒有圖示選擇器。圖磚始終是您所選顏色的伺服器機架字符,並覆蓋 運作狀態 下所述的運作狀態圓點。
複製工作區
從工作區的 ⋯ 選單選擇 複製 以深層複製它。副本會立即出現在側邊欄,以原本名稱附加 copy 命名——複製 Codex Sandbox 會產生 Codex Sandbox copy——且沒有確認對話框。
副本是真正的複本。它會複製所有設定與憑證、系統磁碟、家目錄,以及主機端的 SSH 與代理程式材料,並盡可能使用 APFS 寫入時複製的克隆方式(瞬間完成,且在兩個工作區出現分歧之前不會消耗額外磁碟空間)。刻意不複製的是與原本身分綁定的三件事:
- 已儲存的 RAM 快照,因此副本會全新冷開機,而非恢復原本的即時狀態;
- 分頁佈局;
- 持久的 MAC 位址,因此副本會以一台獨立的機器加入網路。
由於其建立日期會重新標記,副本會作為最新的工作區排序至側邊欄頂端。
啟動、暫停與關機
工作區列的 ⋯ 選單會依其目前狀態調整。當 VM 關閉或暫停時,它提供單一的啟動項目;當它執行中時,它提供三種停止或重新啟動它的方式:
| 狀態 | 選單項目 |
|---|---|
| Off | 啟動 |
| Suspended | Resume |
| Running 或 Starting… | Shutdown · Suspend · Reboot——執行中時另加 Add Worktrees to Grid |
Suspend 會將 VM 的 RAM 存至磁碟並停止它,因此稍後的 Resume 會準確地從您中斷之處接續;Shutdown 會執行乾淨的關機,而下次啟動是完整的冷開機。Reboot 會原地重新啟動一個執行中的工作區。這些之間的取捨,以及決定關閉視窗會觸發何者的各工作區 When closing the window 預設值,涵蓋於 概念與架構 與 一般設定。
重設系統磁碟
Reset disk(於 ⋯ 選單中,或 資源 窗格中的 Reset to base…)會從目前的基底映像檔重新克隆工作區的系統磁碟。它會捨棄您在 OS 層變更的一切——以 apt 安裝的套件、對 /etc、/var、/usr、/opt 的編輯,以及系統層級的組態——同時保留您的家目錄不動:專案、dotfiles、.ssh 金鑰、npm-global、.cargo 與 shell 歷史全都保留。確認對話框標題為 Reset "<name>" system disk to base?,其按鈕為 Reset to base 與 Cancel。
重設磁碟也會捨棄已儲存的 RAM 狀態與分頁佈局,因此下次開機會保持一致。若工作區的工作階段視窗開啟中,此動作會以 Close "<name>" first. 遭拒——請在重設前先關閉它。
附註: 若要改為抹除家目錄——專案、dotfiles 與產生的 SSH 金鑰對——請使用 資源 窗格中的 Erase home…。家目錄回復檢查點以及還原至各次開機快照的 Restore home… 控制項,記載於 工作階段。
刪除工作區
Delete workspace(⋯ 選單底部紅色的破壞性項目)會永久移除工作區。一個標題為 Delete workspace "<name>"? 的確認警示會說明其影響範圍:
移除其磁碟、設定與 SSH 金鑰。已掛載的主機資料夾不受影響。
確認後會刪除工作區在 ~/Library/Application Support/BromureAC/profiles/ 下的整個目錄——其 profile.json、其加密的 secrets.enc、系統磁碟、家目錄映像檔、所有檢查點,以及主機端的 SSH 金鑰材料——並釋放其保留的 MAC 位址。刪除不會觸及的是您分享進工作區的主機資料夾:那些位於您的 Mac 上,以讀寫方式掛載,並會維持原樣。它們在 VM 內部的內容會隨 VM 一同消失;您 Mac 上的原本則不會。
警告: 刪除無法從應用程式內部復原。並沒有垃圾桶、也沒有復原——磁碟、家目錄與密鑰都消失了。任何您想保留的東西都應放在分享的主機資料夾上,或在刪除前先提交並推送。
Grid
WORKSPACES 區段頂端的釘選 Grid 節點是一個舞台,會將多個執行中的終端機並排平鋪,讓您可同時觀看多個代理程式。有兩種方式可填入它:從執行中工作區的 ⋯ 選單選擇 Add Worktrees to Grid,以一次將該工作區所有工作樹分頁放到 Grid 上,或將個別終端機分頁拖曳至 Grid 節點。每個儲存格的內容選單提供 Remove from Grid。Grid 佈局及其與工作樹的互動方式涵蓋於 工作階段。
自動化一覽
AUTOMATIONS 區段列出您排程的無人值守代理程式執行。其 + 按鈕(工具提示 New automation)會開啟自動化編輯器。每一列顯示自動化的名稱、其所屬工作區的彩色圓點、其觸發器的單行摘要(例如 Weekdays 9:00 或 PR · owner/repo),以及其上次執行的字符。以右鍵點擊某一列會提供 Run Now、Pause 或 Resume,以及 Delete…。
一個自動化屬於一個工作區;當它觸發時會在該工作區的儲存庫中建立一個全新的 git 工作樹,並在其中以您的提示啟動所選代理程式,因此執行會顯示為一般的工作樹分頁。觸發器範圍從掛鐘排程,到 GitHub 拉取請求、議題與提交輪詢、Linear 議題輪詢,以及在另一個自動化之後串接。完整功能——觸發器、篩選器、針對事件文字的強制提示注入篩查、執行歷史,以及與之對應的 CLI 和控制通訊端介面——記載於 自動化與 CLI。
工作區儲存於何處
每個工作區都是 ~/Library/Application Support/BromureAC/profiles/<uuid>/ 下的一個目錄。您可能會在意的部分:
| 路徑 | 內容 |
|---|---|
profile.json | 所有非密鑰的設定。 |
secrets.enc | 每個密鑰,於儲存時分離出來,並以 Keychain 保管的金鑰進行 AES-GCM 加密(chmod 600)。 |
disk.img | 工作區對基底 OS 的讀寫副本。 |
home.img | 持久的 /home/ubuntu(ext4 家目錄模型)。 |
checkpoints/ | 磁碟與家目錄的各次開機回復快照。 |
vm.state | 暫停工作區的已儲存 RAM 快照。 |
agent/、ssh/ | 主機端 SSH 金鑰材料——私鑰絕不進入 VM。 |
偏好設定範本 存放於 profiles/ 之外(作為 profile-template.json 加上一個加密的伴隨檔),這就是為什麼它從不會在側邊欄顯示為工作區。持久的工作區對 MAC 綁定則分開記錄於 profile-macs.json。密鑰絕不會寫入 profile.json,也絕不會複製進 VM——客體僅持有偽造值,由主機代理伺服器在傳輸過程中換成真實值(請參閱 憑證)。
提示:
disk.img、home.img與checkpoints/下的快照都是 Linux ext4 映像檔。您可以直接在 Mac 上瀏覽、擷取、甚至修復它們——無需開機 VM——使用 進階 中所述的 ext4 檔案瀏覽器。
命令列對應項
本章中的每項動作都有無介面的對應項。在應用程式(或其背景代理程式)執行時,bromure-cli vm ls 會列出工作區及其即時狀態,而 workspaces create、workspaces edit、workspaces describe 與 workspaces rm 則涵蓋建立/編輯/檢視/刪除流程——vm 是 workspaces 群組可接受的別名。這些、回送自動化 API,以及對應整個編輯器的 SSH 遠端選單,皆記載於 自動化與 CLI。