Skip to main content
配置由一组 YAML 文件加上环境变量组成。随仓库提供的文件已经是可用于本地运行的默认值:部署时把密钥和模型密钥写进 .env,在一个覆盖文件里修改少数需要改的设置即可。

配置文件

后加载的来源优先:环境变量,其次是覆盖文件,再次是 config.devices.yaml 与 config.llm.yaml,最后是 config.yaml。字典不会跨文件合并:覆盖文件里设置的键会替换整个值,所以在覆盖文件里设置 EMAIL_PREDEFINE_CODES 会替换掉演示账号,而不是在其后追加。 ENV 只决定加载哪个覆盖文件,并标记日志行,本身不带任何行为。生产模式由下文的 PRODUCTION 开关声明,而不是由环境名决定。 覆盖文件中,名称含有 _KEY、_PASSWORD、_PASS、_PWD、_SECRET、_SK 或 _TOKEN 的值,会用 .env 里的 CONFIG_ENCRYPTION_KEY 加密保存。

模型密钥

一个密钥即可驱动所有用途。把下列任意一个写进 compose.yaml 旁边的 .env,然后使其生效:
docker compose restart 不会重新读取 .env,up -d 才会。 每个密钥为四个用途各选一个模型:对话(模型选择器)、视觉(化验单照片与扫描页)、文本(指标抽取、文件标题与摘要)、向量(指标检索)。 开头的表格列出了每个密钥选中的模型,以及各密钥的申请地址。DeepSeek 与 Anthropic 不提供向量模型,只配置其中之一时,指标检索使用词法索引。 mirobody doctor 会打印找到的密钥和每个用途选中的模型,并对没有可用模型的用途给出修复方法:
服务端与 worker 启动时也会在日志中输出同样的报告。

更换模型

  • 让某个用途改用另一条配置。 UTILS_VISION_MODEL、UTILS_TEXT_MODEL 和 UTILS_EMBEDDING_MODEL 可以取一个条目名、一组条目名(取第一个有密钥的)、provider/model 字符串,或一条内联配置。同名环境变量优先于文件,例如 UTILS_VISION_MODEL=qwen-utils。
  • 修改对话的默认模型。 DEFAULT_MODEL 指定一个 MODELS 条目;不设置时,默认取第一个有密钥的条目。
  • 让某个密钥经由另一个网关。 在 .env 中设置 <PREFIX>_BASE_URL(PREFIX 是密钥名去掉 _API_KEY),读取该密钥的所有条目都会改用另一个兼容 OpenAI 的端点,例如 OPENROUTER_BASE_URL。Anthropic 自己的 SDK 也读取 ANTHROPIC_BASE_URL,如果机器上已经为其他工具设置了它,Mirobody 也会随之改道;mirobody doctor 会打印每个用途实际解析到的端点。
  • 接入其他厂商。 在 config.llm.yaml 的 MODELS 中新增一条,写明 llm_type: openai、base_url、model,并把 api_key 设为保存密钥的 .env 变量的名称。用于视觉的条目必须声明 supports_image: true。请直接加在 config.llm.yaml 中:覆盖文件里的 MODELS 会替换整张表。
更换向量模型会使已存储的所有向量失效:不同模型生成的向量不能互相比较。

部署设置

决定 agent 行为的键见内置 Agent。

密钥

PG_ENCRYPTION_KEY 与 CONFIG_ENCRYPTION_KEY 是两个不同的值:前者加密存储的内容,例如对话消息与上传的文件。DATABASE_DECRYPTION_KEY(十六进制)加密各 provider 保存的设备凭据。不要在不同环境之间复制这些密钥。自行生成这些密钥并迁移到另一台主机的方法,见在服务器上部署。

扩展目录

引擎启动时扫描三组目录。新增一个目录即可扩展引擎,无需修改代码包。 在覆盖文件中设置其中任何一项都会替换整个列表,所以请把默认条目和你自己的目录一起写上。已安装的包也可以通过 mirobody.tools、mirobody.agents 与 mirobody.providers 入口点扩展这三项。 所有配置键的完整说明见 。