CLI、自動化與 MCP
在應用程式裡能做的每件事,不開視窗也一樣能做。承載 GUI 的同一個執行檔——bromure-cli,位於 Bromure Agentic Coding.app/Contents/MacOS/ 之中——同時是一個功能完整的多命令 CLI、一個 HTTP 控制平面、兩個 MCP 伺服器、一份 AppleScript 字典,以及一個排程器。本章即是它們全部的參考文件。
四種自動化介面座落於同一個控制平面之上:
bromure-cli命令列——一個 Docker/kubectl 風格的 CLI,用於建立工作區、啟動 VM、附掛終端機、執行命令,以及讀取追蹤記錄。- 自動化 API——同一個控制平面以 JSON-over-HTTP 形式暴露於回送介面上,可用任何語言編寫指令碼。
- MCP 伺服器——一個 stdio 伺服器,讓 AI 代理程式(Claude Code、Claude Desktop)管理應用程式;另一個
browser伺服器則讓代理程式驅動其工作區的內嵌 Chromium。 - AppleScript——Bromure AC Suite 字典,用於 macOS 指令碼撰寫與截圖工具。
排程自動化——週期性、無人值守的代理程式執行——同樣建立在這個控制平面之上,於本章結尾說明。
控制平面:socket 與 API
上述每一種介面最終都是透過以下兩種傳輸方式之一,以 HTTP 與執行中的應用程式對話:
| 傳輸方式 | 位置 | 存取關卡 | 預設是否啟用 |
|---|---|---|---|
| 控制 socket | ~/Library/Application Support/BromureAC/control.sock(Unix 網域,HTTP/1.1) | 檔案權限——該 socket 為 0600 模式,僅擁有者可存取。能觸及該檔案本身即是授權,屬 Docker-socket 風格。 | 是,只要應用程式或無介面代理程式在執行中即可用 |
| 自動化 API | 127.0.0.1:9223(TCP) | 預設僅限回送;內省與變更路由另外還需要 BROMURE_DEBUG_CLAUDE 環境變數(見 除錯端點) | 否——需在 偏好設定 → 自動化 中選擇性啟用 |
CLI 從不直接與 VM 對話。每個子命令都是控制 socket 上的一個輕量 HTTP 用戶端,因此同一組命令在本機可用,而當該 socket 透過 SSH 通道轉送時,也能從完整用戶端對遠端執行個體使用。若你在呼叫某個需要代理程式的命令時尚無代理程式在執行,CLI 會自動啟動一個無視窗的背景代理程式(bromure-cli run --headless),並最多等待 40 秒讓它回應 /health。唯讀命令(vm ls、describe、trace …)不會自動啟動;它們會改為印出 No bromure-cli agent running.。
附註: 只要應用程式在執行中,控制 socket 便一律可用,且與 Enable automation server 開關無關。該開關僅管控埠 9223 上的 TCP 監聽器。你不需要啟用自動化 API 即可使用
bromure-cliCLI。
bromure-cli 命令列
你可以用執行檔的完整套件路徑來呼叫它,但應用程式提供一次性安裝的簡短別名。在啟動時它會顯示一則提示——Install the "bromure-cli" command-line tool?——附有 Install / Not Now / Don't Ask Again 按鈕。選擇 Install 會將 /usr/local/bin/bromure-cli 建立符號連結指向應用程式執行檔(一次管理員提示)。在 bromure-cli 這個名稱下,執行檔會隱藏應用程式內部命令——映像檔管理、mcp 伺服器,以及 GUI 的 run 預設命令——只暴露面向終端機的群組(Workspaces、Tracing、Local inference、Enterprise、remote);單獨執行 bromure-cli 會印出說明而不啟動應用程式。以 bromure-cli 身分呼叫時,一切皆可用,且預設子命令為 run(GUI)。以下範例使用 bromure-cli;就它所暴露的命令而言,可自由改用 bromure-cli。
在任何顯示工作區引數之處,命令都接受工作區 id、短 id 前綴,或其名稱。工作區是 Workspaces 中所述的持久性 VM 組態;vm 與 workspaces 命令群組互為別名。
應用程式與背景代理程式
| 概要 | 用途 |
|---|---|
bromure-cli run [--headless] | 預設(隱藏)子命令——啟動 GUI。--headless 執行一個無視窗的選單列輔助代理程式;這正是 CLI 為了服務控制 socket 而自動啟動的東西。 |
映像檔管理
基底映像檔只需安裝一次。這些命令在 bromure-cli 別名下是隱藏的。
| 概要 | 用途 |
|---|---|
bromure-cli init [--build-local] | 安裝 Ubuntu 基底映像檔:下載預先建置的映像檔,下載失敗時退回約 10 分鐘的本機建置。--build-local 強制使用本機建置。 |
bromure-cli info | 印出基底映像檔的版本、虛擬大小、磁碟佔用大小,以及路徑。 |
bromure-cli reset [--yes] | 刪除基底映像檔(磁碟、EFI 變數、版本戳記、狀態),使下次 init 從全新狀態開始;除非帶 --yes,否則會先確認。 |
bromure-cli init-foss-image --output <dir> | 僅供發佈流程使用——將可再散佈、僅含自由軟體的基底映像檔建置到 <dir>。 |
bromure-cli verify-image --disk <path> [--timeout 300] | 僅供發佈流程使用——以無介面方式啟動一份可拋棄的複本,並要求在逾時前出現序列登入提示。 |
附註: 沒有
setup子命令——那屬於姊妹產品 Bromure(瀏覽器)。Agentic Coding 的映像檔安裝命令是init。若不存在基底映像檔,啟動 GUI 會改為將你導入應用程式內的設定流程。
工作區與 VM 控制
這是核心群組。vm run 刻意設計成 Docker 風格:它會啟動一個工作區,並把你的終端機交給客體的共享 bromure tmux 工作階段。
| 概要 | 用途 |
|---|---|
bromure-cli vm ls | 列出每個工作區及其即時狀態(off / suspended / booting / running)、執行時間、視窗附掛狀態、以樹狀呈現的 tmux 分頁(* 標示作用中的分頁),以及執行中的 Docker 容器。 |
bromure-cli vm run [<workspace>] [-v <dir>]… [--name N --tool T --auth A --api-key K] [--memory GB] [-d] [--rm] | 啟動某工作區的 VM,或即時建立一個用完即丟的工作區。預設:將你的終端機附掛到客體 tmux。 |
bromure-cli vm attach <vm> [<tab#> | containers:<name> [-- <shell>]] [-w] | 將終端機附掛到 VM 的 tmux(可選擇跳到某個分頁)、docker exec -it 進入執行中的容器(預設 shell 為 bash),或以 -w/--window 開啟或重新附掛 GUI 視窗。 |
bromure-cli vm exec <vm> [-i] [-t] [--timeout 600] -- <command…> | 在 VM 內執行命令(kubectl 風格,置於 -- 之後)。-it 開啟互動式 pty;搭配 -it 而省略命令則取得一個 shell。客體結束碼會傳遞回來。 |
bromure-cli vm kill <vm> [--suspend] | 停止 VM:正常關機,或以 --suspend 暫停(將 RAM 儲存到磁碟)。 |
bromure-cli vm reboot <workspace> [--hard] | 就地重新啟動執行中的工作區;預設為正常重啟,--hard 則立即拆除。 |
bromure-cli vm describe <workspace> | 印出工作區的設定,並在執行時附上即時執行階段細節(狀態、IP、vCPU、Fusion 狀態、來自客體 df 的磁碟用量、分頁、容器、使用中的記憶體)。 |
bromure-cli vm ports <workspace>(或 vm <workspace> -L) | 顯示執行中工作區的監聽埠(以 root 身分即時 ss):PORT、PROTO、ADDRESS、PROCESS,並標示僅綁定回送的項目。 |
bromure-cli workspaces create [--name N] [--tool T] [--auth A] [--api-key K] [--memory GB] [--color C] [-v <dir>]… [--generate-ssh] [--from-json <file|->] | 以無介面方式建立工作區。--from-json 套用一份完整的設定檔 JSON 文件(旗標會覆蓋相符欄位);--generate-ssh 在主機端產生一組 SSH 金鑰並印出公鑰。 |
bromure-cli workspaces edit <workspace> [--from-json <file|->] | 擷取工作區的完整組態,在 $VISUAL/$EDITOR(退回 vi)中開啟,並將變更存回。密鑰顯示為空白——留空即保留,輸入即取代。--from-json 以非互動方式套用一份文件。 |
bromure-cli workspaces rm <workspace> [-f] | 在 y/N 確認後刪除工作區及其所有資料(磁碟+家目錄),帶 -f 則略過確認。 |
bromure-cli workspaces ssh-keygen <workspace> | 為工作區產生一組全新的主機端 SSH 金鑰,並印出供你 Git 主機使用的公鑰。 |
幾個值得了解的操作細節:
vm run旗標。--tool為claude、codex或grok;--auth為token、subscription或bedrock。-v/--volume <hostdir>會將主機資料夾掛載到客體中的~/<basename>(可重複,最多 8 個)。-d/--detach啟動 VM 並直接返回而不附掛。--rm在 VM 停止時刪除工作區及其磁碟。以Ctrl-b d從已附掛的 tmux 卸離——這會讓 VM 繼續執行。- 感知 TTY。 將終端機交給 tmux 的 Docker 風格預設行為僅在真實終端機上適用;經管線或指令碼呼叫時,會靜默地表現得像是你傳入了
-d。 workspaces create驗證。 對於create,--auth也接受local。顏色為blue、red、green、orange、purple、pink、teal或gray。- 編輯時的留空即保留。
workspaces edit會匯出整份組態並將密鑰清空;一份存回時密鑰為空白的文件會保留已儲存的值,因此往返一趟絕不會抹除你的金鑰。未變動的緩衝區不會儲存任何東西;無效的 JSON 會中止。 - Exec 等待。
vm exec最多等待 10 秒以取得客體 shell 代理程式;502表示 VM 可能未在執行,或名稱不符。在附掛的工作階段期間觸發的核准提示會呈現在你的終端機上(見 透過附掛終端機的同意),絕不會出現在客體內部。
模型、路由與 Fusion
本機推論在 Local Models 中有深入說明,多模型合成則在 Fusion 中說明;CLI 的切換命令如下:
| 概要 | 用途 |
|---|---|
bromure-cli model catalog|ls|pull|use|rm … | 管理本機 MLX 推論模型——瀏覽精選目錄、附即時進度下載、依工作區選用、移除。 |
bromure-cli vm fusion enable|disable <vm> | 在執行中的 VM 上啟用或停用 Fusion。要求工作區已設定兩個以上的模型。 |
bromure-cli vm routing cloud|local|hybrid <vm> | 設定執行中 VM 的 LLM 後端路由。 |
bromure-cli vm hybrid budget <tokens> <vm> | ttft <seconds> <vm> | split <percent> <vm> | 調校混合路由:每滾動 24 小時的雲端權杖上限(0 = 無限制)、軟性的首次權杖時間退回門檻(預設 5 秒),以及固定分派到本機的新工作階段百分比(0–100)。 |
fusion 也接受 on/engage 與 off/disengage 作為同義詞。
追蹤檢視
這些命令讀取每個工作區的 MITM 工作階段追蹤記錄。除非工作區已啟用追蹤——見 追蹤設定——否則它們不會回傳任何內容,而完整說明在 Tracing。
| 概要 | 用途 |
|---|---|
bromure-cli trace ls [workspace] [--limit 50] | 列出近期請求:TIME / HOST / METHOD / STATUS / REQ / RESP / LAT / FLAGS(旗標包含 swap×N、LEAK×N、conv)。 |
bromure-cli trace summary [workspace] | 彙總總計、狀態類別、swap/leak/conversation 計數,以及主要主機。 |
bromure-cli trace hostnames [workspace] | 列出不同的主機及其請求計數。 |
bromure-cli trace leaks [workspace] | 顯示疑似有憑證外洩的請求(標頭、預覽、可疑程度)。 |
bromure-cli trace clear [-f] | 在 y/N 確認後清除記憶體內與磁碟上的追蹤歷史。 |
遠端存取
選用的 SSH 前門預設為停用,並在 Remote Access 中完整說明。所有操作皆透過控制 socket 經由執行中的應用程式進行。
| 概要 | 用途 |
|---|---|
bromure-cli remote [status] | 預設子命令——印出啟用/執行狀態、綁定與埠、驗證方式、主機金鑰指紋、登入使用者、一條現成的連線指令,以及授權金鑰。 |
bromure-cli remote enable [--port 2222] [--bind 0.0.0.0] [--[no-]password] [--[no-]pubkey] | 啟用 SSH 伺服器。至少須保留一種驗證方式為開啟。 |
bromure-cli remote disable | 關閉 SSH 伺服器。 |
bromure-cli remote key add <key|path> / key [ls] / key rm <index|fingerprint> | 管理授權的公鑰(ls 為預設)。 |
企業註冊
Enroll in bromure.io… 表單的 CLI 對應命令,用於指令碼化的裝置佈建。見 Enterprise。
| 概要 | 用途 |
|---|---|
bromure-cli enroll --code <6-word-code> [--server-url URL] [--device-name NAME] | 使用管理員產生的代碼,將這台 Mac 註冊到某個 bromure.io 工作區。伺服器預設為 $BROMURE_MANAGED_URL 或 https://bromure.io/api;裝置名稱預設為 Mac 的主機名稱。 |
bromure-cli unenroll [--force] | 從已註冊的工作區登出(y/N,除非帶 --force)。 |
bromure-cli enrollment-status | 印出註冊狀態(工作區、使用者、安裝 id、裝置、伺服器、註冊日期、bearer/leaf 憑證是否存在)。「not enrolled」會以 0 結束,因此自動化不會將其視為失敗。 |
整合與內部命令
| 概要 | 用途 |
|---|---|
bromure-cli mcp [--debug] [--api-url http://127.0.0.1:9223] | 在 stdio 上執行 AC MCP 伺服器供 AI 工具使用。見 AC MCP 伺服器。 |
bromure-cli __remote-menu、__attach-window、__fatclient…、__forward…、__dial、__tunnel-helper | 內部進入點(SSH ForceCommand TUI、終端機位元組泵,以及完整用戶端通道輔助程式)。非供互動式使用。 |
遠端 TUI(__remote-menu)
啟用 SSH 遠端存取後,每次遠端登入都會(透過 ForceCommand)被強制導入一個手工打造的 ANSI 終端機 UI,而非一個 shell——一個替代畫面、256 色的迷你 shell,以方向鍵與數字操作,可在任何 SSH PTY 上運作(請用 ssh -t)。它以選單形式鏡像整個 CLI:
- Workspaces——以單一畫面表單建立(Name、Tool、Auth、API key、Memory、Color、Folders、Generate SSH、Full settings…、Create)、逐工作區的動作(對執行中工作區為 Attach、New tab、Describe、Configure…、Fusion、Routing、Worktrees…、Reboot…、Suspend、Kill;對關閉中工作區為 Start、Describe、Configure…、Delete),以及一個原始表格檢視。Configure… 以原生方式重現每個 GUI 編輯器窗格。
- Models——已安裝的模型與下載目錄;挑選一個未安裝的模型時,會提供就地
model pull並顯示即時進度。 - Trace——Summary / Hostnames / Leaks / Recent / Clear。
當你附掛到某工作區的 tmux 時,一個魔術組合鍵(預設 Ctrl-],顯示於橫幅中)會彈出一個由主機繪製的控制器覆疊層:分頁樹、New tab、Worktrees…、Fusion、Routing、Edit settings…、Reboot…、Suspend、Disconnect。客體永遠看不到觸發鍵——可用 remote/overlay-key 檔案或 $BROMURE_OVERLAY_KEY 覆寫它。Ctrl-b d 會從 tmux 中斷連線回到選單。完整的遠端與完整用戶端說明,包含覆疊層與連線設定,皆在 Remote Access。
回送自動化 API
控制平面也可以在 TCP 上以 JSON-over-HTTP 形式暴露,供任何語言編寫指令碼。它預設為關閉。
啟用它
開啟 Bromure → 偏好設定 → 自動化——Automation API & MCP server 窗格。
- 開啟 Enable automation server。開啟後,該窗格顯示 Listening on 127.0.0.1:9223;關閉它會立即停止伺服器。
- 選擇性地設定 Port(欄位標註為 (default: 9223))與 Bind address(預設
127.0.0.1)。埠與綁定位址會在伺服器下次啟動時生效——將開關關閉再開啟即可立即套用。
你也可以不透過 GUI 來切換該開關:
defaults write io.bromure.agentic-coding automation.enabled -bool true
警告: 將 Bind address 設為
127.0.0.1以外的任何值,都會將 API——以及它所支撐的 MCP 伺服器——暴露於網路,該窗格會警告 Non-loopback bind exposes the API to the network. The MCP server has no auth.。除了回送邊界與下方的BROMURE_DEBUG_CLAUDE關卡之外,TCP 監聽器沒有任何驗證。除非你有明確且可信賴的理由,否則請將綁定位址保留在回送上。
驗證模型
TCP 監聽器與控制 socket 服務相同的路由,但存取權不同:
| 路由群組 | 控制 socket | 自動化 API(TCP 回送) |
|---|---|---|
| 設定檔與工作階段列表、工作階段開啟/關閉 | 允許 | 允許 |
VM 控制、exec、/app/state、/debug/* | 允許 | 需要應用程式上設有 BROMURE_DEBUG_CLAUDE |
remote、/state、automations、grid-layout、prompts | 允許 | 僅限控制 socket |
換言之:控制 socket 是完整存取、僅限擁有者的路徑;TCP API 在回送上開放安全子集,並將強力路由關在除錯旗標之後。路徑區段採單層百分比編碼(因此含空格的工作區名稱可正常運作),且接受最大 8 MB 的請求主體。
供指令碼使用的端點
最實用的路由:
| 端點 | 傳輸方式 | 用途 |
|---|---|---|
GET /health | 兩者 | 存活狀態,外加 debugEnabled。 |
GET /state | Socket | 一次性鏡像快照:工作區、VM、格線版面、自動化、pendingPrompts、vmnet 子網路。 |
GET /vms | 兩者 | 列出執行中的 VM。 |
POST /vms | 兩者(在 TCP 上受除錯關卡限制) | 從設定檔參照或內嵌規格加掛載來啟動 VM。 |
GET /sessions / POST /sessions | 兩者 | 列出工作階段;為工作區開啟一個工作階段。 |
GET /profiles / POST /profiles | 兩者 | 列出工作區;從 JSON 文件建立一個(?full=1 回傳整份已清空密鑰的文件)。 |
POST /vms/<id>/exec | 兩者(在 TCP 上受除錯關卡限制) | 在 VM 中執行命令;interactive 會挾持連線成為原始的框架式 pty 串流。 |
GET /automations / POST /automations/<id>/run | Socket | 讀取並驅動排程自動化(見 排程自動化)。 |
POST /prompts/<id>/answer | Socket | 回應排入佇列的生命週期提示(見 回應待處理的提示)。 |
由於控制 socket 路徑含空格,請先將它擷取到變數中:
SOCK="$HOME/Library/Application Support/BromureAC/control.sock"
# Full mirror snapshot (control socket only)
curl --unix-socket "$SOCK" http://localhost/state
# List running VMs (control socket — no debug flag needed here)
curl --unix-socket "$SOCK" http://localhost/vms
# Boot a workspace by name
curl --unix-socket "$SOCK" -X POST http://localhost/vms \
-d '{"profile":"Claude Dev"}'
# Answer a queued lifecycle prompt with one of its offered button labels
curl --unix-socket "$SOCK" -X POST http://localhost/prompts/PROMPT_ID/answer \
-d '{"choice":"Not Now"}'
啟用 TCP API 之後,安全子集即可透過它運作——例如,列出與開啟工作階段不需要除錯旗標:
# List sessions
curl http://127.0.0.1:9223/sessions
# Open a session for a workspace
curl -X POST http://127.0.0.1:9223/sessions -d '{"profile":"Claude Dev"}'
附註:
GET /vms(列出執行中的 VM)可透過 TCP 自動化 API 使用,不需任何除錯旗標。會變更狀態的 VM 路由——POST /vms(啟動 VM)與POST /vms/<id>/exec——在 TCP 上需要BROMURE_DEBUG_CLAUDE;當你不想以除錯模式執行應用程式時,請改透過控制 socket 驅動它們(如上所示)。完整的端點介面——包括工作樹與分頁動作、/trace、/remote,以及完整用戶端鏡像路由——彙整於 附錄。
AC MCP 伺服器(bromure-cli mcp)
bromure-cli mcp 執行一個 stdio JSON-RPC MCP 伺服器(伺服器名稱 bromure-cli),讓 AI 工具管理應用程式。它封裝了自動化 HTTP API 與 AppleScript,因此請先啟用自動化伺服器——工作階段與設定檔列表工具會在 --api-url(預設 http://127.0.0.1:9223)呼叫該 HTTP API。
它所暴露的工具:
bromure_ac_list_profiles、bromure_ac_list_sessionsbromure_ac_open_session(最多等待 30 秒讓視窗出現)、bromure_ac_close_sessionbromure_ac_get_profile、bromure_ac_set_profile(原子式 JSON 取代,保留 id)bromure_ac_get_profile_setting、bromure_ac_set_profile_setting(鍵包含name、color、comments、tool、authMode、apiKey、closeAction、memoryGB、folderPathsCount、mcpServerCount、keyboardLayoutOverride、keyRepeatDelayMs、keyRepeatRateHz)
搭配 --debug(且應用程式上設有 BROMURE_DEBUG_CLAUDE)時,它會另外加入 bromure_ac_app_state、bromure_ac_vm_exec、bromure_ac_vm_read_file 與 bromure_ac_vm_write_file。
若要將它接入 Claude Code,請把以下內容加入 ~/.config/claude-code/.mcp.json(或你的用戶端對應檔)。這正是偏好設定窗格的 MCP client configuration 區段所提供可供複製的片段:
{
"mcpServers": {
"bromure-cli": {
"command": "/Applications/Bromure Agentic Coding.app/Contents/MacOS/bromure-cli",
"args": ["mcp"]
}
}
}
附註:
get/set設定檔工具會外呼osascript(對執行中應用程式使用 AppleScript),因此 GUI 應用程式必須在執行中,且 macOS 可能會就自動化權限提示一次。除非設有BROMURE_DEBUG_CLAUDE,否則設定檔 JSON 傳輸時密鑰會被清空。
工作區內的瀏覽器 MCP 伺服器
與 AC MCP 伺服器分開,每個工作區代理程式都會自動獲得一個 browser MCP 伺服器——無需組態。它驅動工作區的內嵌 Chromium,而該瀏覽器在自己的可拋棄 VM 中執行。工作區編輯器的 MCP 窗格描述工作區本身的 MCP 伺服器;無論你在那裡新增什麼,內建的瀏覽器伺服器都會一律存在其上。
該伺服器暴露 23 項用於導覽與檢視的工具——browser_navigate、browser_new_tab、browser_list_tabs、browser_activate_tab、browser_close_tab、browser_back、browser_forward、browser_reload、browser_screenshot(附全頁選項)、browser_evaluate、browser_get_text、browser_get_html、browser_get_links、browser_click、browser_fill、browser_type、browser_press_key、browser_wait_for、browser_network、browser_network_summary、browser_clear_network、browser_console,以及 browser_pick_element(一個互動式的 60 秒元素選取器)。
傳輸方式是一個產生出來的 Python stdio 墊片 bromure-browser-mcp.py,以唯讀方式暫存於客體中的 /mnt/bromure-meta/。它透過 vsock 埠 5830 撥接到主機,並在斷線時永久重連,因此 MCP 用戶端永不會撤回這些工具。對已關閉的瀏覽器發出工具呼叫,會開啟它並等待冷開機完成。由於瀏覽器是一個獨立的 VM,伺服器指示會警告代理程式要以工作區的 LAN IP(hostname -I)而非 localhost 來連到工作區的開發伺服器。
附註: 在完整用戶端上,代理程式的 browser-MCP 串流可以拼接到一條 SSH 通道上,使遠端代理程式驅動你在本機所見的瀏覽器窗格。一次只有一條轉送作用中。見 Remote Access。
你在編輯器中新增的 HTTP MCP 伺服器可以透過主機端的 OAuth 仲介進行驗證:它執行 RFC 8414 探索與 RFC 7591 動態用戶端註冊(以 Bromure AC 身分)、在你的系統瀏覽器中執行 PKCE 授權碼流程,並在回送監聽器(埠 28500–28599)上服務回呼。成功頁面顯示 Authorized — You can close this tab and return to Bromure AC.。整個流程在主機上執行,因此 VM 從不會看到真實的 OAuth 憑證。
AppleScript(Bromure AC Suite)
一份指令碼字典 Bromure AC Suite 是第三種自動化介面——對於協調流程,以及需要視窗 ID 的截圖工具而言相當有用。從 Script Editor 或 osascript 鎖定 application "Bromure Agentic Coding"。它涵蓋:
- 設定檔——
list profiles、create ac profile <name> [color <c>](回傳一個 UUID)、delete ac profile <name|uuid>,以及透過get profile json/set profile json進行的整份文件往返(整份 Codable 設定檔;保留 id;已儲存的密鑰會在空白欄位下合併)。 - 逐欄設定——
get profile setting … key …/set profile setting … key … to value …。 - 編輯器視窗——
open profile manager、open ac profile editor、close ac profile editor、select editor category <key>,以及get editor window id/get main window id(供screencapture -l使用的CGWindowID)。 - 工作階段——
open ac session、close ac session、list ac sessions。 - 應用程式狀態與設定——
get app state(JSON),外加get ac app setting/set ac app setting,鍵有automation.enabled、automation.port、automation.bindAddress、remoteAccess.enabled、remoteAccess.port、remoteAccess.bindAddress、managed.serverURL與managed.acIngestURL。設定automation.enabled會即時切換 HTTP 伺服器。
例如,若要開啟一個工作階段:
osascript -e 'tell application "Bromure Agentic Coding" to open ac session "Claude Dev"'
附註: 除非設有
BROMURE_DEBUG_CLAUDE,否則設定檔 JSON 傳輸時密鑰會被抹除。透過set profile setting將apiKey設為空字串會清除該金鑰,而非保留它——這與 JSON 往返橋接的留空即保留行為不同。切換語系刻意不可指令碼化;請改以例如-AppleLanguages "(fr)"重新啟動應用程式。
排程自動化
排程自動化是綁定於單一工作區、週期性且無人值守的代理程式執行:當它觸發時,會建立一個全新的 git 工作樹,並在其中以你的提示啟動所選的代理程式,而該次執行會以一個尋常的工作樹分頁形式出現。自動化是從自動化看板(⇧⌘A,或側邊欄的 AUTOMATIONS 區段)建立與管理,而整個功能——觸發條件、排程語法、串接、必要的注入畫面、執行歷史,以及自動化的持久化位置——皆記載於 Automations。本節僅涵蓋此功能所暴露的控制平面介面:透過 API 驅動自動化、回應無人值守執行可能引發的決策提示,以及在附掛終端機上同意如何運作。
透過 API 控制自動化
整個功能都在控制 socket 上為完整用戶端進行鏡像:
| 端點 | 用途 |
|---|---|
GET /automations | 列出自動化及其執行歷史。 |
POST /automations | 建立或更新(upsert)一項自動化。 |
DELETE /automations/<id> | 刪除一項自動化。 |
POST /automations/<id>/run | 立即觸發(不會變更排程)。 |
POST /automations/<id>/toggle | 暫停或恢復它。 |
回應待處理的提示
某些生命週期決策——儲存空間升級、漂移重設、遭入侵抹除——通常會以本機警示形式出現。當它們是由遠端完整用戶端觸發時,則會被排入佇列而非顯示於主機上:它們會在 GET /state 的 pendingPrompts 下浮現(各含 id、profileID、title、message 與按鈕標籤),並以 POST /prompts/<id>/answer 回應:
SOCK="$HOME/Library/Application Support/BromureAC/control.sock"
curl --unix-socket "$SOCK" -X POST http://localhost/prompts/PROMPT_ID/answer \
-d '{"choice":"Upgrade"}'
將提示本身的其中一個按鈕標籤作為 choice 傳入。若在 180 秒內沒有任何用戶端回應,提示會解析為其安全的後備選項(取消 / 稍後——絕不會是破壞性選項);若在 10 秒內沒有任何用戶端輪詢 /state,它會立即退回。這些路由僅限控制 socket。完整用戶端會將這些提示呈現為尋常的本機警示。
透過附掛終端機的同意
當終端機以互動方式附掛到某工作階段時——透過 vm exec -it、vm attach,或一次 SSH 附掛——主機端的核准提示(憑證使用,及類似情況)會呈現在你的終端機上,而非客體內部。該提示顯示 🔒 Bromure — approval required,附有編號選項與 Choice [1-N] (Enter or timeout = deny)。Enter、逾時、EOF 或卸離皆代表拒絕,因此遭入侵的客體永遠無法偽造核准。之後會重繪客體的 tmux。
除錯端點(BROMURE_DEBUG_CLAUDE)
以設有 BROMURE_DEBUG_CLAUDE 的方式啟動應用程式,會解鎖 TCP 自動化 API 上的額外路由,並解除 VM 控制的除錯關卡:
- 不需控制 socket 即可使用
POST /sessions/<id>/exec與/vms/…控制路由。 GET /app/state。GET /debug/ui-shot?path=…&which=unified|picker|editor——應用程式將自己的視窗轉繪為 PNG(不需螢幕錄製權限)並回傳子視圖框架傾印;預設輸出為/tmp/bromure-ui-shot.png。POST /debug/editor——為截圖工具驅動設定編輯器。POST /detect/prompt-injection——執行真正的偵測器並回傳其判定(此路由即使在控制 socket 上也需要除錯旗標)。
此旗標也讓密鑰得以原封不動地流經 AppleScript 與 MCP 設定檔 JSON 橋接,並且是 bromure-cli mcp --debug 的 VM 工具所必需。GET /health 會回報 debugEnabled,讓你能辨別應用程式處於何種模式。
警告:
BROMURE_DEBUG_CLAUDE移除了原本用於將exec、VM 控制與原始設定檔密鑰擋在回送 TCP API 之外的安全關卡。僅在你能掌控的機器上以它執行應用程式,且絕不要將它與非回送的綁定位址結合——這麼做會將完整的 VM shell 存取、未經遮蔽的密鑰,以及視窗截圖暴露給任何能觸及該埠的人。它有別於BROMURE_AC_DEBUG(stderr 事件記錄)與BROMURE_CLI_DEBUG(CLI socket 診斷),後兩者是無害的記錄開關。本章觸及的除錯端點、所有環境變數,以及每一處檔案位置,皆編目於 附錄。