一、配置系统定位
OpenClaw 采用 Zod 作为配置 Schema 定义和验证的核心,提供类型安全的配置加载、验证和环境变量替换。
┌─────────────────────────────────────────────────────────────┐
│ Config System │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ OpenClawSchema │ │
│ │ env · auth · models · agents · channels · plugins │ │
│ └──────────────────────────────────────────────────────┘ │
│ │
│ ┌────────────────┐ ┌────────────────┐ ┌────────────┐ │
│ │ Zod Schema │ │ Env Vars │ │ Includes │ │
│ │ validation │ │ ${VAR} 替换 │ │ $include │ │
│ └────────────────┘ └────────────────┘ └────────────┘ │
└─────────────────────────────────────────────────────────────┘
二、模块结构
| 文件 | 职责 |
|---|---|
src/config/zod-schema.ts | 主 Zod Schema 定义 |
src/config/validation.ts | 配置验证入口 |
src/config/io.ts | 配置加载、写入 |
src/config/types.openclaw.ts | TypeScript 类型 |
src/config/env-vars.ts | 环境变量收集 |
src/config/env-substitution.ts | ${VAR} 替换 |
src/config/includes.ts | $include 指令 |
src/plugin-sdk/config-schema.ts | 插件 Config Schema 构建器 |
src/channels/plugins/config-schema.ts | Channel Config Schema |
src/plugins/schema-validator.ts | AJV JSON Schema 验证 |
三、OpenClawSchema
文件:
src/config/zod-schema.ts
3.1 主 Schema 结构
| |
3.2 子模块 Schema
| Schema | 职责 |
|---|---|
zod-schema.agents.ts | Agent 定义 |
zod-schema.providers.ts | Channel Provider |
zod-schema.core.ts | 核心类型(secrets、models 等) |
zod-schema.hooks.ts | Hooks 配置 |
zod-schema.session.ts | Session 设置 |
四、配置类型
文件:
src/config/types.openclaw.ts
| |
4.1 Branded Config States
| |
五、验证流程
5.1 validateConfigObjectRaw
src/config/validation.ts
| |
验证步骤:
- 剥离废弃键
- 检查 Policy 问题(SecretRef surface 验证)
- 运行旧版配置检测
- Zod Schema 解析(
OpenClawSchema.safeParse()) - 合并 Policy 和 Schema 问题
- 验证 Agent 目录唯一性
- 验证身份头像
- 验证 Gateway Tailscale 绑定配置
5.2 验证层级
| |
六、环境变量
6.1 环境变量收集
src/config/env-vars.ts
| |
6.2 环境变量替换
src/config/env-substitution.ts
支持 ${VAR} 和 ${VAR:-default} 语法:
| |
七、Includes 系统
src/config/includes.ts
7.1 $include 指令
| |
7.2 使用方式
| |
| |
7.3 合并规则
| 类型 | 规则 |
|---|---|
| Array | 拼接 |
| Object | 递归合并 |
| Primitive | 源覆盖 |
八、插件配置 Schema
8.1 buildPluginConfigSchema
src/plugin-sdk/config-schema.ts
| |
8.2 Channel Config Schema
src/channels/plugins/config-schema.ts
| |
8.3 完整示例
extensions/qqbot/src/config-schema.ts
| |
九、JSON Schema 验证
9.1 AJV 验证器
src/plugins/schema-validator.ts
| |
9.2 Zod to JSON Schema
| |
十、配置文件格式
10.1 支持的格式
| 格式 | 说明 |
|---|---|
| JSON5 | 主格式(支持注释、尾逗号) |
| JSON | 标准 JSON |
通过 $include | 可引用外部文件 |
10.2 示例配置
| |
十一、设计权衡
11.1 Zod vs JSON Schema
OpenClaw 内部使用 Zod,导出时转换为 JSON Schema 以支持:
- Plugin 配置验证
- UI Schema 生成
- 外部工具集成
11.2 验证时机
| 函数 | 何时调用 |
|---|---|
validateConfigObjectRaw | 配置加载时(无默认值) |
validateConfigObject | 应用默认值后 |
validateConfigObjectWithPlugins | 完整验证(含插件) |
11.3 环境变量安全
未解析的引用保持原样,避免泄露敏感信息。
下一步
篇目 13 完成,继续:
| # | 文章 | 说明 |
|---|---|---|
| 14 | 安全机制:Auth 与权限 | 认证授权 |
| 15 | 部署与运维:Docker 与容器化 | 生产部署 |
OpenClaw 源码剖析系列 · 2026 · skyseraph

