Application manifest
Application manifest 是一个单一的 YAML 文件,声明 Bricoop 检测、配置并连接一个桌面应用所需的全部信息。manifest 是 Application 与 Bricoop 之间唯一的契约;它不包含任何 Provider 专属逻辑,也不包含凭据。下面的每一个字段都由固定版本的 registry 自动生成,因此权威参考是 Application schema 参考。
稳定 ID
id 字段是一个稳定的 lowercase 标识符,在所有 locale 和 release 中命名该 Application。一旦发布就永不改变;重命名 id 等同于先移除再新增。name 字段是人类可读的显示名称,version 是 manifest 所针对的 Application 版本。schema_version 字段固定 manifest 自身的 schema,使 Bricoop 可以拒绝为不兼容 schema 编写的 manifest。
命令与检测
configs[] 数组告诉 Bricoop 如何在各平台上定位并修补 Application 的配置。每个条目携带一个 type(如 file_patch)、一个 format(如 json)、一个包含 macos、linux 和 windows 位置的 path 对象,以及一个 Bricoop 应用的 writes[] 操作列表。Bricoop 读取 path 找到配置文件,在文件不存在时按 create_if_missing 创建,并执行每一条 writes[] 把 Provider 端点写入 manifest 声明的槽位。
版本范围
version 字段是 manifest 编写时所针对的 Application 版本,minimal_client_version 是能运行该 manifest 的最低 Bricoop Desktop 版本,minimal_application_version 是能接受被修补 config 的最低 Application 版本。Bricoop 会把运行中的 client 和检测到的 Application 与这两个最低值比较,并明确拒绝不兼容的组合,而不是写出一个 Application 无法读取的 config。
模型槽位
model_slots[] 数组声明 Application 暴露给用户的模型端点。每个槽位携带一个 label、一个 description、一个 kind(如 chat)和一个 required 标志。Bricoop 把每个已连接的 Provider 和模型映射到一个兼容的槽位;required 槽位必须在启用 Application 前被填上,而可选槽位在没有选中兼容模型时保持不动。
能力
模型槽位的 kind 和 required 标志直接映射到 Application 声明需要的能力。kind: chat 的槽位声明 Chat 能力;期望工具调用的槽位声明 Tools。Bricoop 把 Application 声明的需求与每个 Provider 支持的能力取交集,只提供兼容的模型。完整的协商流程见 协议能力 页面。
示例
下面的示例是 Claude Code 的最小 Application manifest。它声明了一个必需的 chat 模型槽位,以及一个把 Provider 端点写入 ~/.claude.json 的 file-patch 配置。
id: claude-code
name: Claude Code
version: 2.1.158
schema_version: 1
minimal_client_version: 2.0.0
minimal_application_version: 2.1.0
model_slots:
- label: Default model
description: Primary model used for chat and tools.
kind: chat
required: true
configs:
- type: file_patch
format: json
path:
macos: ~/.claude.json
linux: ~/.claude.json
windows: "%USERPROFILE%\\.claude.json"
create_if_missing: true
writes:
- entry_id: provider
op: set
path: providers