配置与密钥字段
通用核心配置辅助程序读取的清单字段:危险标志检测、SecretRef 迁移目标、旧版路径收窄和密钥提供程序预设。属于 插件清单 参考文档的一部分;顶层字段参考 列出了所有字段。
configContracts 参考¶
对于清单自有的配置行为(通用核心辅助程序无需导入插件运行时即可使用这些行为),请使用 configContracts:危险标志检测、SecretRef 迁移目标和旧版配置路径收窄。
{
"configContracts": {
"compatibilityMigrationPaths": ["legacyProvider"],
"compatibilityRuntimePaths": ["legacyProvider.webhook"],
"dangerousFlags": [
{
"path": "accounts.*.allowUnverifiedSenders",
"equals": true
}
],
"secretInputs": {
"bundledDefaultEnabled": false,
"paths": [
{
"path": "routes.*.secret",
"expected": "string",
"ownerKind": "route"
}
]
}
}
}
| 字段 | 必填 | 类型 | 含义 |
|---|---|---|---|
compatibilityMigrationPaths |
否 | string[] |
相对于根目录的配置路径,指示此插件的设置时兼容性迁移可能适用。当配置从未引用该插件时,可让通用运行时配置读取跳过每个插件设置面。 |
compatibilityRuntimePaths |
否 | string[] |
相对于根目录的兼容性路径,此插件可在插件代码完全激活前的运行期间提供服务。当旧版界面需要缩小捆绑候选集、但又无需导入每个兼容插件运行时,请使用此字段。 |
dangerousFlags |
否 | object[] |
启用时,openclaw doctor 应将其标记为不安全或危险的配置字面量。参见 dangerousFlags 条目。 |
secretInputs |
否 | object |
plugins.entries.<id>.config 下的配置路径,用于 SecretRef 迁移、审计、启动时物化以及可选的运行时所有者隔离。参见 secretInputs 路径。 |
dangerousFlags 条目¶
每个 dangerousFlags 条目支持:
| 字段 | 必填 | 类型 | 含义 |
|---|---|---|---|
path |
是 | string |
相对于 plugins.entries.<id>.config 的点分隔配置路径。支持用于映射/数组段的 * 通配符。 |
equals |
是 | string \| number \| boolean \| null |
将此配置值标记为危险的精确字面量。 |
secretInputs 路径¶
secretInputs 支持:
| 字段 | 必填 | 类型 | 含义 |
|---|---|---|---|
bundledDefaultEnabled |
否 | boolean |
在决定此 SecretRef 界面是否激活时,覆盖捆绑插件的默认启用状态。当插件已捆绑、但该界面应保持非激活直到在配置中显式启用时,请使用此字段。 |
paths |
是 | object[] |
Secret 形状的配置路径,每个路径包含 path(点分隔,相对于 plugins.entries.<id>.config,支持 * 通配符)、可选的 expected(唯一接受的值是 "string")和可选的 ownerKind("capability" 或 "route")。声明的所有者会在解析失败时仅隔离该精确匹配的路径;其所有者 ID 为完整配置路径。 |
capability 所有者在其提供程序不可用时立即失败(fail cold),因此过期的凭证绝不会保持激活状态。route 所有者可在完整插件配置和提供程序定义保持不变时,保留最后已知的良好值。
声明的路径还控制 Settings 脱敏,包括通配符和本地 schema 引用之后的字段。结构化 SecretRef 保留 source 和 provider,而 id 会被隐藏;明文秘密会被完全隐藏。无关的 Settings 保存会保留原始引用。更改其 source 或 provider 需要显式标识符。
对于声明了 secretInputs 的插件,configSchema 会将解析前的源配置与运行时配置配对验证。有效的 SecretRef 不会因为其解析后的凭证是不同形状的字符串而被拒绝。无效的明文源值仍会验证失败。运行时加载、CLI 注册和根命令发现使用相同的规则;插件会接收到解析后的值,其默认值从源配置中选择,而任一输入都不会被更改。
具体路径保留字面量记录键和数组索引:headers["X.Trace"] 与 headers.X.Trace 保持不同,记录键 ["0"] 与数组索引 [0] 也保持不同。包含点的插件 ID 同样使用引号,例如 plugins.entries["example.plugin"].config.headers["X.Trace"]。
secretProviderIntegrations 参考¶
当插件可以发布可复用的 SecretRef exec 提供程序预设时,请使用 secretProviderIntegrations。OpenClaw 会在插件运行时加载前读取此元数据,将插件所有权存储在 secrets.providers.<alias>.pluginIntegration 中,并将实际的机密解析留给 SecretRef 运行时处理。预设仅对内置插件以及从受管插件安装根(例如 git 和 ClawHub 安装)发现的已安装插件公开。
{
"secretProviderIntegrations": {
"secret-store": {
"providerAlias": "team-secrets",
"displayName": "Team secrets",
"source": "exec",
"command": "${node}",
"args": ["./bin/resolve-secrets.mjs"]
}
}
}
映射键是集成 ID。如果省略 providerAlias,OpenClaw 将集成 ID 用作 SecretRef 提供程序别名。提供程序别名必须符合正常的 SecretRef 提供程序别名模式,例如 team-secrets 或 onepassword-work。
当操作员选择预设时,OpenClaw 会写入类似如下的提供程序引用:
{
"secrets": {
"providers": {
"team-secrets": {
"source": "exec",
"pluginIntegration": {
"pluginId": "acme-secrets",
"integrationId": "secret-store"
}
}
}
}
}
在启动/重新加载时,OpenClaw 通过加载当前插件清单元数据、检查拥有该提供程序的插件是否已安装并处于活动状态,并根据清单具体化 exec 命令,来解析该提供程序。禁用或移除插件会使该提供程序对活动的 SecretRef 失效。希望使用独立 exec 配置的操作员仍可直接编写手动的 command/args 提供程序。
source 接受单个值 "exec"。command 必须是 ${node},并且 args[0] 必须是相对于插件根目录的 ./ 解析器脚本。OpenClaw 会在启动/重新加载时将其具体化为当前的 Node 可执行文件和插件内脚本的绝对路径。诸如 --require、--import、--loader、--env-file、--eval 和 --print 之类的 Node 选项不属于清单预设契约。需要非 Node 命令的操作员可以直接配置独立的手动 exec 提供程序。
OpenClaw 从插件根目录以及(对于 ${node} 预设)当前 Node 可执行文件目录派生清单预设的 trustedDirs。清单中编写的 trustedDirs 将被忽略。其他 exec 提供程序选项,如 timeoutMs、noOutputTimeoutMs、maxOutputBytes、jsonOnly、env 和 passEnv,会传递给正常的 SecretRef exec 提供程序配置。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/openclaw