OpenClaw:为什么 gateway runtime 把 skill 做成安装、安全和依赖门
OpenClaw 的 skill 不是静态提示片段,而是挂进 agent gateway 的能力包。它要决定一个 skill 是否能在当前机器、当前 agent、当前 sandbox、当前 channel、当前 secret scope 里安全出现。
这让 OpenClaw 的设计天然比 CLI/IDE skill 更重。CLI 可以把很多风险交给用户确认;IDE 可以依赖项目 trust;gateway 则可能长期在线,连接 Discord、Feishu、远端节点、本地工具和第三方 skill 包。一个 skill 一旦进入可用列表,模型就可能尝试调用它。
它解决的 runtime 问题
OpenClaw 要回答的是:一个不完全可信的能力包,怎样被安装、验证、依赖检查、注入上下文,并在多个 channel 中安全运行。
metadata.openclaw 的意义就在这里。它不是装饰字段,而是 gating 信息:需要哪些二进制,哪些 env,哪些 openclaw.json 配置,哪些 OS,怎样安装依赖,哪个 API key 是主 secret。只有满足这些条件,skill 才应该变成 eligible。
OpenClaw 还会处理 command dispatch、user invocable、disable model invocation、ClawHub verify、secret 注入、sandbox 可见性、eligible skill snapshot。它关注的是运行资格,而不只是写法。
为什么这样设计合理
Gateway runtime 的失败模式比普通 coding assistant 更危险。依赖缺失会导致 agent 反复尝试;secret scope 错误可能泄漏凭证;channel 语义错误可能在 Discord/Feishu 双发或漏发;第三方 skill 包可能带供应链风险。
因此 OpenClaw 需要把“能不能用”前置到 runtime,而不是等模型读完正文后自己判断。它更像一个 capability manager。
迁移时要剥离什么
metadata.openclaw、依赖探测、安装脚本、ClawHub metadata。skills.entries.*.env、apiKey、secret 注入。command-dispatch: tool、slash command routing。- OpenClaw
message/ channel / Discord / Feishu 语义。 - sandbox、host process、eligible snapshot、watcher 行为。
Adapter 应该写什么
OpenClaw adapter 应该写依赖、env、配置项、安装/verify 策略、secret scope、是否暴露 slash command、是否允许模型自动调用、channel 输出协议、sandbox 可见性。portable core 不应该写 OpenClaw 的消息标签或 gateway-only 工具名。