模型與供應商

Bromure Agentic Coding 中的每個程式設計代理程式——Claude Code、Codex、Grok、Kimi 與 omp——都從同一個地方取得模型與憑證:模型 看板。每個來源只需註冊一次(雲端供應商的登入或 API 金鑰、Amazon Bedrock、OpenRouter、你自己的推論伺服器,或在這台 Mac 上執行的模型),每台機器都能使用。機器(在設定編輯器中稱為工作區)預設會繼承這些全域設定,也可以覆寫其中任何部分。

本章涵蓋看板本身、登入與登出、依代理程式選擇模型、機器專屬覆寫、代理程式如何連到非自家的供應商、變更設定時執行中的代理程式會發生什麼,以及內建的裝置端引擎:它的目錄、下載、監控視窗與 model 指令。工作區窗格的逐欄列表,請參閱模型設定。Fusion——多個模型回答同一個提示——是另一項有自己窗格的功能。

附註: 舊版有工作區專屬的 代理程式 窗格、本機模型 窗格,以及會從雲端退回本機模型的「混合」路由模式。這三者都已移除。模型與憑證的選擇都在模型看板上,而機器的流量會依代理程式,送往雲端或本機後端,如下所述。

模型看板出現的位置

同一個雙欄看板會出現在四個地方:

位置編輯的內容變更何時生效
偏好設定 › 模型(⌘,)每台機器都會繼承的全域設定。立即——看板會隨著編輯即時儲存,與偏好設定視窗的 儲存 按鈕無關。
機器的設定編輯器 › 模型該機器對全域設定的覆寫(請參閱機器專屬覆寫)。在編輯器中點按 儲存 時。
引導精靈的 模型 步驟全域設定,僅限首次執行。立即。
鏡像之遠端 Mac 的偏好設定(設定對象: 某台遠端主機)該 Mac 的全域設定,透過通道取得,API 金鑰會被遮蔽。點按 儲存 時。請參閱遠端存取。
Bromure — 偏好設定視窗,預設,模型窗格。標題為模型,說明文字為「在左側註冊一個來源。除非你在右側另選,每個代理程式都使用其供應商的預設模型。」供應商欄列出附 API 金鑰的 Anthropic (Claude)、附 API 金鑰的 OpenAI、xAI (Grok)、z.ai (GLM)、Moonshot (Kimi)、Amazon Bedrock、附 API 金鑰的 OpenRouter、自訂伺服器與裝置端,三個已設定的供應商帶有綠點。代理程式欄列出帶「選擇…」標籤與尺寸折疊區的 Default、顯示 Claude Code default 並帶尺寸的 Claude Code、顯示 Codex default 的 Codex,以及顯示「選擇…」的 Grok、Kimi 與 omp。

窗格的標題是 模型,說明文字為「在左側註冊一個來源。除非你在右側另選,每個代理程式都使用其供應商的預設模型。」左側是 供應商 欄,右側是 代理程式 欄。

供應商

供應商 中的每一列都有一個狀態點與一行副標題。綠色表示可用;灰色表示未設定;橘色表示訂閱登入已過期。點按一列即可開啟其設定彈出視窗。

供應商設定方式附註
Anthropic (Claude)訂閱登入或 API 金鑰Claude Code 的原生供應商。
OpenAI訂閱登入或 API 金鑰Codex 的原生供應商。
xAI (Grok)訂閱登入或 API 金鑰Grok 的原生供應商。
z.ai (GLM)僅 API 金鑰z.ai 的程式設計方案以 API 金鑰提供;沒有需要登入的地方。
Moonshot (Kimi)訂閱登入或 API 金鑰Kimi 的原生供應商。
Amazon Bedrock使用 Amazon Bedrock、選用的區域與選用的 API 金鑰請參閱 Amazon Bedrock。
OpenRouter僅 API 金鑰其模型清單會即時從 OpenRouter 取得。
自訂伺服器伺服器 URL 與選用的 API 金鑰任何與 OpenAI 相容的伺服器。請參閱自訂伺服器。
裝置端下載模型MLX 模型在這台 Mac 的 GPU 上執行。請參閱裝置端模型。

列的副標題會說明供應商的設定方式:API key、subscription、登入已過期、AWS 憑證(Bedrock)、主機名稱(自訂伺服器)或 N installed(裝置端)。在機器的覆寫中,也可能顯示 inherited API key、inherited subscription、overridden here 或 off here。

登入與 API 金鑰

對於 Anthropic、OpenAI、xAI 與 Moonshot,彈出視窗一開頭是 Sign in with 供應商(「在暫時的虛擬機器中互動式登入——不需要 API 金鑰。」),接著在 API 金鑰 欄位上方顯示「或貼上 API 金鑰」。兩者皆無時,會顯示 尚未設定。

登入會在一台用完即丟的 VM 中執行供應商自己的 CLI 登入;供應商的頁面會在你的瀏覽器中開啟,擷取到的登入會儲存在主機上,絕不會存放在機器中。登入後,彈出視窗會顯示 已登入 及距今多久,另有 重新登入… 與 登出…。登出… 會要求確認——「要登出 供應商 嗎?」、「使用此登入的工作區將停止運作,直到你重新登入。」——並提供 登出/取消。

如果供應商拒絕了已儲存的登入(例如在別處已被撤銷),彈出視窗會切換為橘色的 登入已過期 面板,說明在你重新登入之前工作階段都無法使用它,並附上醒目的 重新登入 按鈕。

對同一個供應商而言,貼上的 API 金鑰優先於訂閱:輸入金鑰會把該供應商切換為按用量計費。金鑰會加密儲存(請參閱設定的儲存位置)。

附註: 訂閱只能驅動它自己的代理程式——Claude 訂閱驅動 Claude Code,ChatGPT 訂閱驅動 Codex,依此類推。因此以訂閱登入的供應商絕不會出現在其他代理程式的模型選單中,也不能用在 Default 列。API 金鑰則沒有這項限制。

訂閱範圍:所有機器或只有一台

從 偏好設定 › 模型 開始的登入,一律由所有機器共用。從機器的設定編輯器(其 模型 窗格)開始的登入,最後會詢問一個問題:要與每個工作區共用嗎?——「要把這個 供應商 登入用於所有 Bromure 工作區(取代各工作區自己的 供應商 登入),還是只用於這一個?」——並提供 每個工作區 與 僅此工作區。

  • 每個工作區 會把此登入儲存為共用登入,並移除任何機器對該供應商的專屬登入,讓新的登入確實成為每台機器使用的登入。
  • 僅此工作區 只為那台機器儲存。擁有自己登入的機器一律優先使用自己的,而非共用的登入。

如果登入是從鏡像的遠端 Mac 開始,而沒有人回答這個問題,預設選擇為 僅此工作區。

Amazon Bedrock

Bedrock 彈出視窗說明:「任何代理程式都能在 Amazon Bedrock 上執行:Claude Code 原生支援,其他代理程式則透過 Bedrock 與 OpenAI 相容的 API。請以每個工作區自己的 AWS 憑證(憑證 → AWS)簽署請求,或貼上 Bedrock API 金鑰。」

  1. 開啟 使用 Amazon Bedrock。
  2. 視需要設定 AWS 區域。留空時,每台機器會使用其自身 AWS 憑證的區域,若沒有則使用 us-east-1。
  3. 視需要貼上 Bedrock API 金鑰(選填——否則由 AWS 憑證簽署)。沒有金鑰時,主機會以機器憑證窗格中的 AWS 憑證簽署每個請求;憑證永遠不會進入 VM。

啟用 Bedrock 會以一個 Bedrock Claude 模型 ID 預先填入 Claude Code 的主要模型。模型 ID 就是 Bedrock 使用的 ID(例如 us.anthropic.claude-sonnet-4-6);可在選單中為每個代理程式挑選,或以 自訂 ID… 自行輸入。Bedrock 沒有列出模型的端點,因此選單提供一份精選的簡短清單。

沒有 API 金鑰的 Bedrock 代理程式,只有在具備 AWS 憑證的機器上才能啟動。關閉 使用 Amazon Bedrock 會清除所有指向 Bedrock 的模型選擇,讓這些代理程式回到預設值。

自訂伺服器

自訂伺服器 是任何與 OpenAI 相容的推論伺服器——vLLM、Ollama、LM Studio、llama-server——位於這台 Mac 或你網路上的其他地方。彈出視窗稱它為「Recommended for local models.」

  1. 開啟 已啟用。
  2. 輸入 伺服器 URL(例如 http://127.0.0.1:11434/v1),若伺服器需要,再輸入 API 金鑰(選填)。
  3. 點按 測試連線。成功時會顯示 N model(s),伺服器的模型會出現在每個代理程式選單的 自訂伺服器 之下;失敗時則顯示伺服器的錯誤。

使用自訂伺服器時,模型 ID 就是伺服器自己的 ID,原樣使用(例如 qwen3:32b)。主機的修復代理伺服器會把每個代理程式的傳輸格式(Anthropic messages、OpenAI chat、OpenAI responses)與伺服器的 /v1/chat/completions 互相轉換,而模型的上下文視窗、視覺與推理支援都會向伺服器探詢後傳給代理程式。使用自訂伺服器時,不會在 Mac 上啟動任何引擎程序。

裝置端模型

裝置端 會開啟目錄模型清單——「MLX models run in-process on this Mac (N GB) — the lazy backup, nothing to install.」每一列顯示模型名稱、一個適配徽章(Fits、Tight 或 Won't fit)與下載大小,以及一個動作:

控制項意義
取得下載模型。模型放不進這台 Mac 時會停用。
進度列 + ✕下載中;✕ 會取消並刪除部分下載的內容。
恢復中斷的下載(應用程式結束或當掉);從中斷處繼續。
重試下載失敗;把游標移到上面即可看到原因。
移除已安裝;移除權重,並清除任何使用它們的模型選擇。

已安裝的模型會出現在每個代理程式選單的 裝置端 之下。下載由所有機器共用。目錄、適配規則與引擎在裝置端引擎中說明。

代理程式:選擇模型

代理程式 欄有一列 Default,接著每個代理程式各一列:Claude Code、Codex、Grok、Kimi 與 omp。每一列都有一個模型標籤;點按即可選擇。

標籤顯示的內容:

  • 代理程式 default——沒有選擇任何東西,且該代理程式自己的供應商已設定,因此代理程式執行該供應商的預設模型,與它自己 /model 的「Default」完全相同。你不需要選任何東西。
  • 選擇…——沒有選擇任何東西,這個代理程式也解析不到任何模型。
  • 一個模型 ID,並以彩色圓點標示其來源(藍色:雲端供應商;薄荷綠:自訂伺服器;紫色:裝置端;橘色、加刪除線並標記 · 無法使用:這個代理程式無法連到的供應商——請參閱哪個代理程式能連到哪個供應商)。ID 後的 · 繼承 表示該值來自 Default 列(在機器覆寫中則來自全域設定)。明確選擇旁的 ✕ 可以清除它。

標籤的選單會把代理程式能連到的每個可用供應商,列為模型 ID 的子選單(一份精選清單,若供應商有即時模型清單則合併在一起),接著在已設定時列出 自訂伺服器 與 裝置端。每個供應商子選單的最後都有 自訂 ID…,會詢問「The id exactly as the backend names it (e.g. claude-opus-5, glm-4.6, qwen3-coder).」對於有明確選擇的代理程式,選單還會提供 使用預設(若 Default 列未設定任何東西,則為 Use agent’s default)來清除它。

若選單沒有可提供的項目,它會直接說明:請先設定供應商;若已設定的供應商全都是該代理程式連不到的,則顯示 No configured provider can power agent;若已設定的供應商只有其他代理程式的訂閱,則顯示 訂閱只能為其自身的代理程式提供支援。在 自訂伺服器 之下,測試連線以列出模型 表示尚未探詢伺服器。

Default 列

Default 列上的模型會套用到每個沒有自己選擇的代理程式——包括自家供應商已設定、否則會使用供應商預設模型的代理程式。如果你希望每個代理程式都使用自家供應商的預設模型,請讓 Default 保持在 選擇…。

尺寸

Claude Code 使用三個模型位置;其他代理程式都只執行一個模型。Default 與 Claude Code 列有一個 尺寸 折疊區,內含兩個額外的標籤:

尺寸Claude Code 位置
Large≈ opus
(主要標籤)≈ sonnet
Small≈ haiku(背景與快速任務)

未設定時,大、小位置會沿用 Claude Code 自己的預設值。其中之一已設定時,尺寸 會自動展開。在 Claude Code 列上,回復預設值 會捨棄 Claude Code 自己的所有選擇,讓它重新繼承 Default 列。Codex、Grok、Kimi 與 omp 只使用主要標籤。

哪個代理程式能連到哪個供應商

每個代理程式都能原生連到自家的供應商。它也可以被指向其他一些供應商,由主機替它橋接:

代理程式原生供應商也能連到
Claude CodeAnthropic(訂閱或金鑰)Amazon Bedrock(Claude Code 自己的 Bedrock 模式);OpenRouter 與 z.ai(直接透過它們與 Anthropic 相容的端點,API 金鑰);自訂伺服器;裝置端
CodexOpenAIAmazon Bedrock、OpenRouter、xAI、Moonshot(透過主機的修復代理伺服器,API 金鑰);自訂伺服器;裝置端
GrokxAIAmazon Bedrock、OpenRouter、Moonshot(修復代理伺服器);自訂伺服器;裝置端
KimiMoonshotAmazon Bedrock、OpenRouter、xAI(修復代理伺服器);自訂伺服器;裝置端
ompAnthropic,僅 API 金鑰Amazon Bedrock、OpenRouter、xAI、Moonshot(修復代理伺服器);omp 本身切換到 z.ai 時的 z.ai;自訂伺服器;裝置端

走修復代理伺服器路徑時,VM 內的代理程式與主機溝通,由主機轉換代理程式的傳輸格式、持有真正的金鑰(或為 Bedrock 簽署)並轉送請求。金鑰永遠不會進入 VM。Claude Code 的 OpenRouter 與 z.ai 路徑則是讓代理程式直接指向供應商與 Anthropic 相容的端點(https://openrouter.ai/api、https://api.z.ai/api/anthropic),並使用一把替代金鑰,由主機在傳輸途中換成真正的金鑰,與處理每個雲端憑證的方式相同(請參閱憑證與傳輸邊界)。

代理程式的模型選單只會提供它能連到的供應商。Claude Code 只懂 Anthropic 方言,因此其選單中沒有 OpenAI、xAI 或 Moonshot 模型;z.ai 與 OpenAI 相容的 API 並不是其他代理程式能被橋接過去的 API,因此 Claude Code 的選單是唯一提供 z.ai 模型的代理程式選單(切換到 z.ai 的 omp 則能自行連到)。

在變得無法連線之前就已儲存的選擇——或被無法使用它的代理程式從 Default 列繼承的選擇——會以橘色、加刪除線的方式顯示,後面加上 · 無法使用。其工具提示說明:「Agent can’t use provider models, so it runs on its own provider instead. Pick another model.」

omp 在看板上沒有自己的供應商,也無法使用訂閱;請給它一個以 API 金鑰為基礎的供應商。

機器專屬覆寫

機器的設定編輯器有一個 模型 窗格(位於 模型 群組下)。預設會顯示一個關閉的開關 此工作區的自訂模型設定——「Inheriting the global settings (Preferences → Models).」——以及一份 繼承的模型 摘要:全域的 Large / Medium / Small 模型與已設定的供應商。

Web app 機器的設定編輯器位於模型窗格:此工作區的自訂模型設定開關為關閉,說明文字為 Inheriting the global settings (Preferences → Models)。下方的繼承的模型以短橫線列出 Large、Medium 與 Small,供應商為 Anthropic (Claude)、OpenAI、OpenRouter,並提示可開啟開關,讓此工作區擁有自己的金鑰、登入或模型。

開啟開關並選擇兩種模式之一:

  • 繼承並修改(預設)——「Starts from the global settings; only what you set below is different here.」會顯示完整的看板,在全域設定之上疊加這台機器的變更。你沒動到的任何部分都會持續即時跟隨全域設定——之後在全域註冊的供應商也會出現在這裡。
  • 獨立——「This workspace has its own providers, logins and model choices below — the global settings are ignored.」切換為獨立時,會從目前生效之設定的副本開始,因此在你編輯之前不會有任何改變。

在 繼承並修改 模式下,每個供應商彈出視窗都會說明該供應商的來源,並讓你只針對這台機器變更:

標籤意義
Inherited from Preferences → Models (API key / subscription / AWS credentials).使用全域憑證。不在此工作區中使用 可以退出,「— or override it below」則以這台機器自己的金鑰或登入覆寫。
Not used in this workspace — the global settings have it.你已退出。使用全域供應商 會重新加入。
This workspace's own credential.這台機器有自己的金鑰或登入。使用全域供應商 會捨棄它。
This workspace's own server. / 使用全域伺服器自訂伺服器的對應項目。

模型標籤的運作方式與全域看板相同;未變更的標籤會顯示 · 繼承,而清除明確的選擇會讓它回到全域值(使用全域設定)。

點按 儲存 時,覆寫會隨機器一起儲存。在覆寫中輸入的金鑰,會與機器的其他機密一起加密儲存。

在執行中的機器上變更模型

變更模型或憑證時,永遠不需要重新啟動機器。當你註冊供應商、貼上或變更金鑰、登入或登出、把代理程式改用其他模型,或儲存機器覆寫時:

  1. 主機會為每台執行中的機器,更新該機器代理程式讀取的內容——憑證替換對照表、代理程式的環境與設定檔。
  2. 憑證或模型確實有變的每個代理程式,都會在自己的分頁中停止,並立即帶著恢復參數重新啟動,因此對話會繼續。在聊天檢視中,工作階段會保留其記錄;在終端機中,你會看到代理程式結束後立刻回來。
  3. 設定沒有變更的代理程式不受影響,VM 本身也絕不會重新啟動。
  4. 機器的 Fusion 設定也會跟隨相同的設定:其各分支與評審會重新評估,若剩下的可用模型少於兩個,⚡ 開關會被解除。

全域看板上的變更會在你停止輸入約一秒半後套用。

警告: 重新啟動代理程式會中斷它當下正在做的事。如果代理程式正處於一個很長的回合中,請等它完成後再切換其模型或憑證。

設定的儲存位置

全域設定保存在 ~/Library/Application Support/BromureAC/models.enc,以與工作區機密保險庫相同的金鑰加密。機器的覆寫隨機器一起儲存,其金鑰則放在加密的機密存放區中。訂閱登入由主機端的憑證代理伺服器保管,依上述選擇為共用或機器專屬。這些機密都絕不會拷貝到 VM 中:代理程式拿到的是替代值,由主機在傳輸途中替換。

限制

  • 只有 Anthropic、OpenAI、xAI 與 Moonshot 提供訂閱,而且每個訂閱只驅動它自己的代理程式。
  • omp 只使用 API 金鑰。
  • 自訂伺服器必須與 OpenAI 相容。
  • 在同一台機器中,所有在本機執行的代理程式(自訂伺服器或裝置端)共用單一本機模型:以主要代理程式的選擇為準。
  • 裝置端引擎使用 Mac 的唯一一顆 GPU,一次只執行一個生成。
  • iPhone、iPad 或 Apple Vision Pro 上的 Bromure Remote 無法使用模型看板;請從 Mac 編輯模型。

裝置端引擎

裝置端引擎以 Apple 的 MLX 框架,在你 Mac 的 GPU 上執行開放權重的程式設計模型——不必往返雲端,沒有按權杖計費,也沒有程式碼離開 Mac。沒有需要安裝的東西,沒有 Python 環境,也沒有需要設定的伺服器。

附註: 推論在 Mac 上執行,而不是在 VM 內。瀏覽器的選用 Metal 圖形裝置不會為 Linux 提供 GPU 運算或 MLX 存取,因此客體要跨越傳輸邊界才能連到引擎。需要 Apple Silicon——與應用程式本身的需求相同。

引擎程序

MLX 引擎以應用程式自身執行檔(bromure-ac model _mlx-engine)的受監督子程序執行,而不是在應用程式內。載入對 Mac 記憶體而言過大的模型,只會終止引擎子程序,絕不會影響應用程式或其執行中的 VM。應用程式會自動重新啟動當掉的引擎,最多三次;之後會放棄,並寫下記錄行 engine child crashed repeatedly — giving up (a model likely OOMs this Mac)。應用程式結束時會終止子程序,而強制當機留下的孤兒程序會在下次啟動時回收。

一個引擎服務所有機器。它繫結到 127.0.0.1 上由核心配置的迴路連接埠——絕不是 0.0.0.0,也絕不是 Ollama 慣用的 11434,因此另外安裝的 Ollama 或 LM Studio 仍可正常運作。它能在記憶體預算內(Mac 的統一記憶體減去一些餘裕)保留多個模型,每個模型在第一次使用時載入,記憶體吃緊時則逐出最久未使用的模型。

引擎暖機期間,機器的工具列會顯示一個帶轉圈圖示的小型 CPU 徽章(「Starting local engine…」);模型就緒後會變成綠色,若引擎啟動失敗則變成橘色(把游標移到上面即可看到原因)。

客體如何連到它

VM 中的代理程式永遠不會直接與引擎溝通。它們以沒有真實 DNS 的合成主機 https://bromure.llm 為目標:主機端代理伺服器會攔截它,套用與雲端流量相同的提示注入掃描與追蹤擷取,再把請求轉送給引擎。本機推論絕不會是盲點。

代理程式設定的是引擎實際提供的模型 ID(例如 mlx-community/Qwen3-8B-4bit-DWQ),因此它們的上下文大小估算與功能查詢看到的都是真實情況。

附註: 架構尚未受 MLX 引擎支援的模型,會以清楚且永久的錯誤失敗——「its architecture … isn't supported by the on-device engine yet — pick a different model」——並以用戶端錯誤回傳,讓代理程式不會在迴圈中不斷重試。這類模型請使用自訂伺服器。

目錄

目錄是一份精選的、預先轉換好的 MLX 模型清單,每個模型都針對代理式程式設計中最重要的一點——可靠的工具呼叫——做過驗證,並記錄了下載大小與所需的最少統一記憶體。

應用程式內附一份基準目錄,因此清單從第一天起就能離線使用。應用程式會從 https://dl.bromure.io/mlx/catalog.json 取得更新的目錄;較新的已發佈目錄會取代基準目錄,而不是與它合併。從已發佈目錄中移除的模型會從清單中消失,除非你已經安裝了它。

內附的目錄包含四個 Qwen3 模型,全都通過工具呼叫驗證:

模型下載大小最少統一記憶體建議
Qwen3 8B (4-bit DWQ MLX)4.3 GB16 GB是
Qwen3-Coder 30B-A3B (4-bit DWQ MLX)17 GB32 GB是
Qwen3-Coder-Next 80B-A3B (mxfp4 MLX)42 GB96 GB是
Qwen3-Coder 480B-A35B (4-bit MLX)270 GB512 GB否

更新的目錄可能在不更新應用程式的情況下,加入更新或更大的版本。

適配徽章

每個模型都會依你的 Mac 的統一記憶體來判斷:

  • Won't fit——模型的最低需求超過你的記憶體。該列會變淡且無法下載。
  • Tight——可以載入,但留給其他一切的空間少於 16 GB。
  • Fits——最低需求加上 16 GB 餘裕放得下。

例如,Qwen3 8B(最低 16 GB)在 16 GB 的 Mac 上顯示 Tight,在 32 GB 以上則顯示 Fits。

下載與儲存

權重透過內建的下載器直接來自 huggingface.co——不需要 Python,也不需要轉換。每個權重檔案都會串流寫入一個暫時的 .partial 檔案,完成後再重新命名到位,因此中斷的下載會逐一檔案恢復,部分下載的內容也絕不會被誤認為已安裝的模型。儲存庫中的文件、圖片與 GGUF 檔案會被略過。系統會先檢查磁碟空間,並在填滿你的磁碟之前就及早失敗:

Not enough disk space: 40 GB free, but about 270 GB is needed.

模型依儲存庫存放在:

~/Library/Application Support/BromureAC/models/<org>--<name>/

其他工具已快取在 ~/.cache/huggingface/hub 中的模型,會透過硬連結一次性移轉到這個目錄,因此不會重複下載。

任何已經是 MLX 格式的 Hugging Face 儲存庫,也能從命令列以其 org/repo 名稱取得(請參閱命令列參考);這樣的模型未經測試——不保證工具呼叫或記憶體適配。GGUF 儲存庫會被拒絕,因為 GGUF 是 Ollama 與 llama.cpp 的格式,而不是 MLX:

That's a GGUF (Ollama/llama.cpp) model — Bromure serves MLX weights only.

串流、思考與視覺

本機回合會逐一權杖串流,無論是裝置端引擎或自訂伺服器都一樣。代理伺服器會在文字生成時隨即轉送,只保留尾端足以剝除外洩工具呼叫的部分,然後以修復後的結果完成該回合。

推理模型會在每種傳輸格式中以原生思考區塊串流其思考內容,因此代理程式會以呈現雲端模型思考的方式呈現它;思考內容不會回饋到記錄中。支援視覺的模型(向自訂伺服器探詢得知,或在目錄中標記)可以接受圖片:代理伺服器會在傳輸格式之間轉換圖片區塊。

附註: 工作階段的第一個回合,必須先讓模型預先填入代理程式的整個提示——通常是數萬個權杖的系統提示與工具結構描述——第一個權杖才會出現。在 8B 模型上可能需要一分鐘以上;之後的回合會重複使用引擎的快取,幾乎立即開始。

工具呼叫修復

量化模型經常把工具呼叫輸出為純文字,而不是結構化的呼叫。位於每個本機後端——裝置端或自訂伺服器——前方的修復代理伺服器會緩衝每個回應,並辨識外洩呼叫可能呈現的多種形式,例如:

<function name="write_file" arguments='{…}'>
<tool_call>{…}</tool_call>
[{"name": "…", "parameters": {…}}]

以及 Qwen3-Coder 原生的 <function=Name><parameter=k>v</parameter></function> 格式與 Gemma 的通道格式。它會把找到的內容轉成代理程式自身傳輸格式中正確的工具呼叫。它也會偵測宣告了動作(「Now I'll create the file:」)卻沒有呼叫工具就停下的模型,並最多再提示兩次以取回該呼叫。本機推論一律開啟修復。

引擎的問題會以代理程式自身傳輸格式中可讀的錯誤回傳給代理程式,例如:

Local inference engine unreachable (starting up, reloading a model, or stopped) — retry in a moment.

效能預期

  • 吞吐量取決於模型與晶片。 像 Qwen3 8B 這樣的小模型在任何支援的 Mac 上都很流暢;大型的專家混合(mixture-of-experts)版本較慢,也需要多得多的記憶體。推論指標 視窗會顯示你硬體上的實際速率。
  • 第一個請求需要把模型載入記憶體。
  • 之後的回合比較省。 引擎會為每段對話保留提示快取,因此代理程式的每個回合只處理新的權杖。
  • 生成是依序進行的。 引擎一次只執行一個生成;多個忙碌的工作階段會共用 GPU,而不是平行執行。

監控本機推論

視窗 選單中的兩個視窗,讓你不必使用 Console.app 就能觀察本機推論。

推論指標

視窗 › 推論指標… 會開啟即時遙測視窗(推論指標),每個使用中的引擎一個分頁——內建引擎,加上你的機器所指向的每個自訂伺服器。內建分頁以 Local inference 及引擎的迴路位址為標題,顯示 Decode tok/s、Prefill tok/s、Running、Waiting、In flight、Avg latency、Cache hit、Metal mem、Gen tokens 與 Prompt tokens 卡片、一份 已載入的模型 清單,以及含原始表格的 All metrics 折疊區。

視窗只在開啟時每 5 秒輪詢一次。解碼與預先填入速率是整個生命週期的平均值,因此數字很穩定。引擎停止時,視窗會顯示 engine not reachable;在長時間生成期間,可能會短暫顯示 engine busy (timed out)。沒有提供指標端點的自訂伺服器(例如 Ollama)仍會有卡片,由代理伺服器從其轉送的流量量測而得。

推論引擎日誌

視窗 › 推論引擎日誌… 會開啟引擎輸出與其生命週期事件的即時追蹤(推論引擎記錄)——模型載入、「serving」、每個請求的統計,以及任何記憶體不足、當機、重新啟動或載入錯誤。各行以顏色區分(紅色為失敗,綠色為正常事件,橘色為警告,藍色為進行中的工作)。工具列有 篩選… 欄位、自動捲動 核取方塊、拷貝 與 清除;尚未記錄任何內容時,會顯示 No inference-engine activity yet。緩衝區保留最後 5,000 行,每一行也會寫入應用程式的標準錯誤輸出。

提示: 如果本機模型感覺很慢或卡住,請先開啟 推論引擎記錄:模型載入、逐出、記憶體不足導致的重新啟動,以及不支援的架構錯誤,全都會以純文字顯示在那裡。

命令列參考

model 指令用於管理裝置端模型;它們與執行中的應用程式溝通。作用於機器的指令,最後會接一個 <vm> 引數:VM ID 或工作區名稱。相關的其他指令請參閱 CLI、API 與 MCP。

bromure-cli model catalog [--all] [--offline]
bromure-cli model pull <catalog-id | org/repo>
bromure-cli model ls
bromure-cli model use <catalog-id | org/repo> <vm>
bromure-cli model rm <catalog-id | org/repo>
bromure-cli vm routing cloud|local <vm>
命令作用
model catalog列出目錄模型,附上適配與工具呼叫徽章以及已安裝的勾號,並顯示你 Mac 的統一記憶體。會先更新已發佈的目錄(失敗也不影響)。--all 會包含放不下的模型;--offline 只使用內附與快取的目錄。
model pull以目錄 ID 或任何 Hugging Face MLX 儲存庫下載模型,先確認它是 MLX(而非 GGUF)且磁碟空間足夠,並顯示進度列。
model ls列出已安裝的模型及其磁碟用量。
model use設定執行中機器的代理程式所使用的本機模型,不需重新啟動代理程式。在使用自訂伺服器的機器上,任何伺服器接受的 ID 都可以。
model rm刪除已安裝模型的權重。
vm routing在雲端與本機路由之間切換執行中的機器。

model use 與 vm routing 是針對執行中機器的即時調整;機器的模型是在模型看板上設定的,而下次機器啟動時套用的也是看板上的設定。

內部診斷命令

這些隱藏的子指令用於開發與疑難排解。

命令用途
bromure-cli model _mlx-serve <repo>為單一模型啟動 MLX 伺服器並保持執行,印出其連接埠與金鑰,供 curl 測試使用。
bromure-cli model _mlx-selftest <repo>載入模型、生成一次,並印出首個權杖所需時間與解碼速度。
bromure-cli model _repair-serve --engine-port <port>針對執行中的引擎,單獨執行工具呼叫修復代理伺服器。
bromure-cli model _tc-test <path>對已儲存的文字檔執行工具呼叫救援。
bromure-cli model _spec-bench <main-repo> --draft <draft-repo>為一對模型基準測試推測式解碼關閉與開啟的表現。