配置系统

一句话概括

配置系统加载、验证和管理 openclaw.json — 一个支持环境变量替换、include 解析、Zod 验证和原子写入(带备份轮转)的 JSON5 配置文件。

职责

  • 解析 JSON5 配置,支持 ${ENV_VAR} 替换和 $include 解析
  • 通过 Zod schema(OpenClawSchema)验证,支持插件配置扩展
  • 自动迁移旧版配置格式
  • 提供带失效机制的缓存配置访问
  • 原子写入(临时文件 + 重命名)带备份轮转
  • 配置变更审计日志

关键源码文件

文件行数角色
src/config/io.ts1346核心 I/O:JSON5 解析、环境变量替换、缓存、原子写入、迁移、审计
src/config/zod-schema.ts748验证OpenClawSchema 带类型转换(字节大小、时间段)
src/config/types.openclaw.ts140类型OpenClawConfig 含 30+ 章节

OpenClawConfig 结构(30+ 章节)

meta, auth, env, wizard, diagnostics, logging, update, browser, ui,
skills, plugins, models, nodeHost, agents, tools, bindings, broadcast,
audio, messages, commands, approvals, session, web, channels, cron,
hooks, discovery, canvasHost, talk, gateway, memory

与 Token 相关的关键设置:

  • agents.defaults.compaction.reserveTokensFloor — 压缩触发
  • skills.limits.* — skill 目录限制
  • tools.allow/deny — 工具策略
  • memory.* — RAG 设置

与其他模块的关系

  • 依赖zod(验证)、json5(解析)、文件系统
  • 被依赖:所有模块都读取 OpenClawConfig — 这是通用设置源

我的认知盲区

  • $include 解析 — 深层嵌套和循环引用防护
  • 插件配置 schema 注册 — 扩展如何添加自己的验证
  • 备份轮转 — 保留多少备份及轮转策略
  • 配置变更事件传播 — 子系统如何响应配置更新

变更频率

  • io.ts:中 — 迁移逻辑和环境处理演进
  • zod-schema.ts:高 — 每个新功能添加配置章节
  • types.openclaw.ts:高 — 镜像 zod-schema 变更