Skip to content

配置系统 ​

Yuxi 的配置分成两类:启动进程时读取的环境变量,以及运行中由管理员在页面维护的系统配置。区分这两类,可以判断修改后需要保存、清缓存还是重启服务。

配置来源和优先级 ​

对支持运行时修改的字段,生效顺序是:

text
代码默认值 < 环境变量 < PostgreSQL 中保存的系统配置

数据库中保存的非空值优先于环境变量;布尔值和列表即使是 false 或空列表,也会被视为管理员明确保存的值。没有数据库值时,系统才读取对应环境变量或代码默认值。

启动期环境变量由 Docker Compose 注入 API、worker、provisioner 和依赖服务。它们决定服务地址、密钥、存储位置和沙盒承载方式。修改环境变量后需要重新创建读取它的容器;只执行 docker compose restart 不会更新容器环境:

bash
docker compose up -d --force-recreate api worker

如果改的是 provisioner 变量,把服务名换成 sandbox-provisioner;生产环境还要带上 --env-file .env.prod -f docker-compose.prod.yml。

管理员系统配置 ​

管理员在“设置 → 基本设置”中修改系统配置。当前配置项由 options.py 定义,包含:

  • 默认对话模型、快速响应模型、嵌入模型和重排模型;
  • 默认 OCR 解析引擎。

系统配置保存到 PostgreSQL 的 config_options 表。API 和 worker 通过 Redis 保存短期缓存;保存成功后缓存会失效,下一次读取从数据库取得新值。Redis 不可用时,读取路径回源 PostgreSQL,不把缓存当作最终事实。

运行中的已初始化组件不保证热更新。例如模型供应商使用的 API Key 环境变量、OCR 服务地址、沙盒连接和数据库地址变化后,应重新创建实际读取这些变量的 API、worker 或 provisioner。

模型和 OCR ​

委派与 Multica 桥接 ​

元垒通过统一委派接口把任务交给外部执行器,Multica 是其中一个渠道。MVP 的 Multica 凭据只走实例级全局环境变量,由 API 与 worker 读取,scripts/init.sh 不生成这四个键;接入 Multica 实例时必须手工提供。YUANLEI_MULTICA_BASE_URL、YUANLEI_MULTICA_TOKEN 或 YUANLEI_MULTICA_WORKSPACE_ID 任一为空时整条 Multica 渠道 fail-closed:MulticaExecutor 不注册,向 multica 发起委派得到结构化 executor_unavailable,Multica 渠道同步与游标入口返回结构化 channel_unavailable(均为 HTTP 503),元垒其余能力独立可用。

变量必填说明
YUANLEI_MULTICA_BASE_URL是Multica 实例地址;端点与认证头收敛在 HttpMulticaClient
YUANLEI_MULTICA_TOKEN是渠道令牌;只经环境注入,明文不写入 DB、API 响应、日志或事件
YUANLEI_MULTICA_WORKSPACE_ID是issues 端点的 workspace 作用域;缺失即 400,故与凭据一起 fail-closed
YUANLEI_MULTICA_PROJECT_ID否出向创建与入向拉取的项目范围;为空时用渠道默认

凭据是启动期读取,修改后重建读取它的容器:

bash
docker compose up -d --force-recreate api worker

出向委派(POST /api/projects/{project_id}/delegations)先按稳定 operation_id 与描述标记核对再创建,同一操作不产生第二个远端工作项;入向同步(POST /api/projects/{project_id}/channels/multica/sync)在项目内拉取并只产生 proposed 治理行。入向请求固定 sort=updated_at&direction=desc(服务端忽略 updated_after),游标是稳定组合键 (updated_at, id);同一 updated_at 的边界秒内项目每轮重扫并靠外部标识去重,避免因服务端并列次序丢失项。两个入口都要求登录用户且 Project 可见。

当前粒度是实例级全局:同一实例内所有 Project 共用一组 Multica 凭据。升级到按 Project 的凭据(依据 channel_delegations.project_id 与 channel_sync_cursors(channel, project_id),非按用户)属于后续决策。完整语义、失败与取舍见外部执行器委派与 Multica 桥接。

Agent 并发容量 ​

Compose 默认按单 worker、100 个同时运行的 AgentRun 配置。执行槽、API/worker Redis 和 PostgreSQL 池、LangGraph checkpoint 池、PostgreSQL 服务端上限、Sandbox 地址池与清理并发必须联动核算,不能只扩大其中一个值。

推荐值、1/10/20/50/100 并发的延迟和资源实测、取消 key 轮询的负载模型及完整验证命令见 Agent 并发容量。所有可覆盖变量仍集中列在仓库根 .env.template,不另外维护重复配置清单。

修改后的确认方式 ​

修改系统配置后,重新打开配置页面确认保存值,并用一次真实请求确认行为。只看到 HTTP 200 或提示“保存成功”不能证明模型、OCR 或检索链路已经可用。

  • 模型:在供应商页面执行连接测试,再发起一次真实对话。
  • OCR:在 OCR 配置中查看健康状态,再解析一份测试文件。
  • 知识库:回到知识库页面检查文件状态和检索结果。
  • 沙盒:检查 provisioner /health,再执行一次文件读写或命令操作。

历史配置 ​

旧版 base.toml 和 SAVE_DIR 不属于当前运行时配置来源。受支持的历史数据由一次性 storage migrator 处理;日常部署不要手动把旧文件复制回运行目录。升级步骤见生产部署指南。

本项目基于 MIT License 开源,欢迎使用和贡献。