本页内容
本页内容
网关
配置——环境、秘密和包含
处理环境、秘密解析、认证存储和配置组成:env、secrets.*、auth.* 和 $include。
完整密钥索引和其他顶级配置域,请参见配置参考。
环境
env(内联环境变量)
- 只有当进程环境中缺少该键时,才会应用内联环境变量。
.env文件:CWD.env+~/.openclaw/.env(都不会覆盖已有变量)。shellEnv:从你的登录 shell 配置文件中导入缺失的预期键。- 完整优先级请参见 环境。
环境变量替换
使用 ${VAR_NAME} 在任意配置字符串中引用环境变量:
- 仅匹配大写名称:
[A-Z_][A-Z0-9_]*。 - Missing/empty 变量明显未解决,发出警告,并且无法提供给需要该值的消费者。
- Escape 与
$${VAR}一起生成文字${VAR}值。 - 可与
$include一起使用。
默认值
使用 ${VAR_NAME:-fallback} 添加后备。当变量未设置或为空时使用它:
- 具有回退的 A 引用始终会解析,因此它永远不会发出缺少 var 警告。
- 允许空后备:
${VAR:-}解析为空字符串。 - 后备是文字文本。它不能包含
$或{,因此${A:-${B}}等嵌套引用不是后备表达式;它保持字面意思,只有内部的${B}替代。 - 仅支持
:-。其他 shell 运算符(:=、:?、:+、-、#、%、/、^)保持原样不变。 Bash的-被故意省略:OpenClaw将unset和empty视为相同的状态,因此它与:-没有什么不同。 - Escaping 仍然获胜:
$${VAR:-x}生成文字${VAR:-x}并且不会从环境中读取任何内容。 - Authored后备在配置写回后仍然存在; OpenClaw 恢复
${VAR:-fallback}而不是内联其解析的值。 - A 后备是配置文本,而不是秘密存储。将凭证放入
env.vars或 SecretRef 中并引用它们。
密钥
密钥引用是增量式的:明文值仍然可用。
secrets.egressProxy
默认关闭网关拥有的对代理执行子进程使用的共享存储 secret 条目的替换:
enabled:在网关启动时启动环回代理和临时CA。默认值:false。更改它需要重新启动网关。allowedHosts:代理请求和 CONNECT 隧道的可选精确主机名流量白名单。如果存在,则只能访问列出的主机、绑定到注册密钥的主机和bypassHosts。空数组仅允许绑定或绕过的主机。更改它需要重新启动网关。bypassHosts:证书固定客户端使用的经过身份验证的盲 CONNECT 隧道的可选精确主机名列表。哨兵不会在被绕过的主机上被替换,并且在不暴露明文的情况下使供应商身份验证失败。
有关子流程环境接线、身份验证、请求拒绝规则和限制,请参阅 秘密出口代理。
SecretRef
使用一种对象形状:
校验:
provider模式:^[a-z][a-z0-9_-]{0,63}$source: "env"id 模式:^[A-Z][A-Z0-9_]{0,127}$source: "file"id:绝对 JSON Pointer(例如"/providers/openai/apiKey")source: "exec"id 模式:^[A-Za-z0-9][A-Za-z0-9._:/#-]{0,255}$(支持 AWS-stylesecret#json_key选择器)source: "exec"的 id 不能包含.或..这样的斜杠分隔路径段(例如a/../b会被拒绝)
支持的凭据范围
- 凭证矩阵:SecretRef 凭证 Surface
secrets apply目标是受支持的openclaw.json凭据路径。- Per-agent auth-profile 引用包含在运行时解析和审计覆盖范围中。
密钥提供方配置
注意:
file提供方支持mode: "json"和mode: "singleValue"(在 singleValue 模式下,id必须为"value")。- 当 Windows ACL 验证不可用时,File 和 exec 提供程序路径被拒绝。使用ACL OpenClaw可以验证的路径;没有提供商级别的旁路。
exec提供程序需要绝对command路径并在 stdin/stdout. 上使用协议有效负载- Symlink 命令路径被拒绝。配置解析的绝对二进制路径;它不能是组或全局可写的,并且在 POSIX 上,必须由当前用户拥有。
- 如果配置了
trustedDirs,则命令路径(~扩展后)必须位于批准的目录内;在此检查之前,符号链接命令会被拒绝,因此配置的路径本身就是trustedDirs所约束的。 exec子进程环境默认最小化;请使用passEnv显式传递所需变量。- 密钥引用会在激活时解析为内存中的快照,之后请求路径仅读取该快照。
- 激活期间应用活动表面过滤:已启用表面上未解析的参考失败 startup/reload,而诊断会跳过非活动表面。
认证存储
- 每个代理配置文件存储在
<agentDir>/openclaw-agent.sqlite(auth_profile_store) 中。 - 存储的身份验证配置文件支持静态凭证模式的值级别引用(
api_key为keyRef,token为tokenRef)。 - 传统平面
auth-profiles.json地图(例如{ "provider": { "apiKey": "..." } })不是运行时格式;openclaw doctor --fix将它们重写为带有.legacy-flat.*.bak备份的标准provider:defaultAPI-key 配置文件。 - OAuth-mode 配置文件 (
auth.profiles.<id>.mode = "oauth") 不支持 SecretRef 支持的身份验证配置文件凭据。 - 静态运行时凭据来自内存中解析后的快照;发现旧式静态
auth.json条目时会被清理。 - 旧式 OAuth 导入来自
~/.openclaw/credentials/oauth.json。 - 参见 OAuth。
- Secrets 运行时行为和
audit/configure/apply工具:Secrets Management。
配置包含($include)
将配置拆分到多个文件中:
合并行为:
- 单个文件:替换包含它的对象。
- 文件数组:按顺序进行深度合并(后者覆盖前者)。
- 同级键:在包含内容之后进行合并(覆盖包含的值)。
- 嵌套包含:最多 10 层。
- Paths:相对于包含文件进行解析,但必须保留在顶级配置目录中(
openclaw.json的dirname)。仅当 Absolute/../表单仍在该边界内解析时才允许使用。设置OPENCLAW_INCLUDE_ROOTS(绝对路径)以允许 config 目录之外的其他根目录。 - 限制:路径在解析前后都不得包含空字节,且长度必须严格小于 4096 个字符;每个被包含的文件上限为 2 MB。
- OpenClaw-owned 写入,其更改的键全部由对象键路径中的一个单文件包含拥有,写入到最深的拥有包含。这支持顶级部分和嵌套对象映射条目,包括数字对象键,同时保持
openclaw.json不变。仅直写目标包括顶级配置目录中的文件;包括通过OPENCLAW_INCLUDE_ROOTS承认,对于 OpenClaw- 写入保持只读。 - Root 包含(其根对象作者
$include的配置的每个部分),实际数组条目包含,包含数组,同级覆盖,多个逻辑路径共享的文件,跨越所有权边界的更改,合并的相同路径或祖先所有者下的嵌套包含,以及包含其自己的文件仍然作者嵌套的$include指令是只读的OpenClaw-owned 写入;这些写入会被拒绝,而不是扁平化配置。 openclaw doctor --fix通过相同的边界写入;混合了根拥有的修复和包含拥有的修复的运行将被整体拒绝;拒绝写入会使每个文件保持不变(同一运行中的早期写入保持保存),Doctor 手动命名要修复的边界,加上根文件创作该边界的$include时包含的一个或多个文件(代理名册边界在没有其文件的情况下命名)。- 错误:对于文件缺失、解析错误、循环包含、路径格式无效和长度超限,会提供明确的错误消息。
本页有帮助吗?