跳转至

配置与密钥字段

通用核心配置辅助程序读取的清单字段:危险标志检测、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