Skip to main content
BRICKS Foundation 可將 LLM、MLX、語音辨識、語音合成與 Vector Store 的嵌入工作卸載至同一區域網路上的 BRICKS Buttress 伺服器。Brick 的 generator API 維持不變;當在伺服器執行更快(或本機根本無法執行)時,裝置會透明地將工作委派出去。

需求

  • BRICKS Foundation 2.25 或更新版本
  • 區域網路上可達的 Buttress 伺服器 — 請參閱 Buttress 安裝
  • 伺服器與裝置繫結至同一工作區 — 請參閱工作區繫結

運作方式

  1. 當裝置所屬工作區至少有一台已繫結的 Buttress 伺服器時,launcher 會啟動探索管理員並取得工作區範圍的 JWT。
  2. 管理員監聽連接埠 8089 的 UDP 通告,並收集所有 serverId 出現於工作區繫結清單的伺服器。
  3. 各 LLM、MLX、Speech-to-Text (GGML)、Text-to-Speech (GGML) 或 Vector Store brick 讀取其 Buttress (Remote Inference) 屬性群組,自動挑選伺服器或使用手動設定的 URL。Speech-to-Text (ONNX) 與 Text-to-Speech (ONNX) Generator 則會自動探索可用的伺服器。
  4. 能力比較會決定要在本機、遠端或任一側執行;您於 brick 上選擇的策略則決定如何解讀該建議。
如果 launcher 無法連到伺服器(無區域網路、伺服器離線、工作區不符),它會回退到本機執行 — 除非您明確關閉此行為。

在 brick 上設定卸載

BRICKS Controller > Config Editor 開啟任一 LLM、MLX、Speech-to-Text (GGML)、Text-to-Speech (GGML) 或 Vector Store brick。Buttress (Remote Inference) 屬性群組會出現於 Connection 之下。Speech-to-Text (ONNX) 與 Text-to-Speech (ONNX) Generator 目前尚未提供此群組——它們會自動探索區域網路上可用的伺服器。

策略

預設值為 prefer-buttress,因為選擇使用 Buttress 的 Foundation 裝置通常本機硬體並非最佳選擇。

回退

若您希望 brick 在區域網路中斷時仍能運作,請選擇 use-local;若您寧可看到明確失敗,也不願讓裝置於無法處理的模型上消耗電力,則保持 no-op

Vector Store

Vector Store brick 會同時卸載嵌入模型 tokenizer,因此裝置不必下載任何一個 GGUF 就能索引與搜尋文件。只有 GGML 來源會被卸載 — 使用 OpenAI Compatible 來源時,brick 會直接呼叫該 API,完全不經過 Buttress。 Brick 要求的是 ggml-llm generator,與 LLM brick 使用的後端型別相同,因此自動探索會挑選任何提供該型別的伺服器。伺服器接著會以嵌入模式載入 brick 自己的嵌入模型,若尚未擁有該模型則會下載。請為 Vector Store 指定專屬的嵌入模型 — 指向鄰近 LLM brick 使用的 chat 模型並不可行。 嵌入模型與 tokenizer 模型請從 Hugging Face 選擇器挑選,不要直接貼上模型 URL。Buttress 需要 repo id,只有 URL 的 brick 會靜默地繼續在本機執行。 實際在遠端執行的內容取決於 tokenizer: 遠端模型寫入的嵌入向量會標記與本機相同的模型描述,因此只要模型相同,在裝置上建立的索引在把 brick 切換到 Buttress(以及切回來)之後仍可搜尋。

Text-to-Speech (GGML)

Text-to-Speech (GGML) brick 會把語音合成卸載到伺服器的 ggml-tts generator,由伺服器載入與本機相同的主幹模型與 codec / vocoder 組合。伺服器回傳 WAV,裝置再將它下載到該 brick 自己的音訊快取 — 因此無論音訊是在裝置端或遠端合成,本機的快取命中與清理行為都一致。 請將 Model URLVocoder URL 指向 Hugging Face 的 resolve URL,或使用 Hugging Face 選擇器挑選。brick 會從 URL 還原 repo id 以告知伺服器要載入什麼;若模型 URL 不是 Hugging Face resolve URL,該 brick 會維持本機推論。 在卸載非 OuteTTS 的模型之前,brick 會先確認伺服器有通告該模型的家族 — OuteTTS、Soprano、NeuTTS、CSM、Qwen3-TTS、MOSS-TTSD、MOSS-TTS-Realtime、Chatterbox 或 BlueMagpie。若沒有,brick 會留在本機執行,而不是回傳內容錯誤的音訊。此檢查在所有策略下都會執行,包含 prefer-buttress

工作區變更時

若裝置所屬工作區改變 — 例如管理員從 BRICKS Controller 重新指派 — launcher 會:
  1. 停止目前的 Buttress 管理員並關閉所有開啟的 WebSocket 連線。
  2. 捨棄已快取的 access token。
  3. 以新工作區的繫結伺服器清單與新核發的 token 啟動新的管理員。
針對舊工作區認證的進行中 generator 會以乾淨的方式報錯,而不會陷入無限重連迴圈。

音訊上傳(STT)

語音辨識需要將音訊檔放在伺服器上。Brick 透過 HTTPS 上傳至 POST /buttress/upload,伺服器將檔案儲存於 [server] temp_file_dir 設定的暫存目錄(預設為 <os-tmpdir>/.buttress)。轉錄完成後,該檔會與 session 中其他暫存檔一併自動清理。 語音合成的方向相反:伺服器會將合成的音訊以 WAV 檔案回傳,重複的語句則直接由伺服器的磁碟輸出快取立即提供。

疑難排解

相關文件

Buttress 概覽

Buttress 是什麼、何時使用,以及整體系統如何串接。

工作區繫結

伺服器與裝置如何繫結至同一工作區。