能力
能力是 Application 與 Provider 用來就一次請求能做什麼達成一致的契約。協定把 Chat、Tools、Images、Reasoning 和結構化輸出定義為命名能力;Application 宣告它需要什麼,Provider 宣告每個模型支援什麼。Bricoop 把兩者取交集,使請求只在模型確實能服務它時才執行。
宣告能力
Provider 透過 models[].kind 和 models[].capabilities.* 宣告其模型支援什麼;一個 kind: chat 且 capabilities.tools: true 的條目表示該模型接受 tool 呼叫。Application 透過其模型槽位和能力標誌宣告它需要什麼;一個發起 tool 呼叫的槽位宣告 Tools 能力。Bricoop 讀取兩邊的宣告,只有當所有必需能力都存在時才把模型提供給 Application。
協商
當使用者為某個槽位選擇模型時,Bricoop 透過把 Application 必需的能力與模型支援的能力取交集來協商。如果每個必需能力都存在,就提供該模型;如果缺少任何一個,就隱藏該模型或加以標記。協商在選擇時發生,而不是在請求時,所以使用者從不會在傳送訊息後看到「模型無法做這件事」的錯誤。
不可用的能力
不支援的請求會被明確拒絕,並顯示一個清晰的「不支援的能力」錯誤,指出缺少哪個能力。Bricoop 從不會靜默降級請求,從不會為了湊合而剝離 tool 呼叫,也從不會把缺少能力視為 Application 與 Provider 之間的配對不相容。如果使用者需要該能力,就選擇一個支援它的模型;Application 與 Provider 本身仍然相容。