惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 【当耐特】
云风的 BLOG
云风的 BLOG
罗磊的独立博客
C
Check Point Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Blog — PlanetScale
Blog — PlanetScale
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
月光博客
月光博客
大猫的无限游戏
大猫的无限游戏
Google DeepMind News
Google DeepMind News
Engineering at Meta
Engineering at Meta
N
Netflix TechBlog - Medium
宝玉的分享
宝玉的分享
Recent Announcements
Recent Announcements
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园_首页
J
Java Code Geeks
Apple Machine Learning Research
Apple Machine Learning Research
人人都是产品经理
人人都是产品经理
爱范儿
爱范儿
I
InfoQ
Hugging Face - Blog
Hugging Face - Blog
T
Tailwind CSS Blog
B
Blog RSS Feed

又耳笔记

用AI挣钱之AI建站:二维码生成器工具 用AI挣钱之AI建站:https://markdowntopdf.top Cloudflare Workers实战番外一:用Static Assets托管网站,告别传统方案 Cloudflare Workers实战(五):不止JavaScript,拥抱Python与Rust Cloudflare Workers实战(四):托管和分发静态文件 Cloudflare Workers实战(三):实现认证、重定向与缓存 Cloudflare Workers实战(二):动态修改后端响应 Cloudflare Workers实战(一):随心所欲操作客户端请求 Cloudflare workers不完全指南 使用n8n创作短篇小说 水果风波:信任的代价 用Python将PDF文件转换成图片 rust网络框架Pingora源码阅读3 rust网络框架Pingora源码阅读2 rust网络框架Pingora源码阅读1 Pingora快速入门教程1之总览 Rust模板引擎askama快速入门引擎 使用Loco快速搭建自己的后台系统 用Rust发一封图文并茂的邮件 Rust小项目: 写一个简单的恶意流量阻断器 Rust小项目: 写一个简单的网页爬虫 Rust命令行库Clap快速入门教程 Rust小项目:用Rust写一个端口扫描器 Rust真全栈开发快速入门 rust声明宏快速入门教程 Rust文本处理快速入门教程 RUST web框架axum快速入门教程6之测试 白嫖免费的Rust在线运行时shuttle RUST web框架axum快速入门教程5之中间件 用Rust来做以太坊开发5之事件日志及签名
小龙虾(OpenClaw)源码分析10:插件机制,为什么能扩展这么多渠道
About 又耳宁 关于技术与股票的一些零碎想法 · 2026-04-16 · via 又耳笔记

OpenClaw渠道多、能力多,但核心代码没有膨胀到不可维护,关键就在插件化。
这一篇我们就看插件加载器的主思路。

先看设计原则:manifest-first

src/plugins/loader.ts和相关文档能看到一个很明确的方向:
先靠manifest和元数据决策,再按需加载运行时代码。

这样做的好处是:

  • 启动更快(不必一上来全量import)
  • 控制面逻辑更稳(配置校验、发现流程可先执行)
  • 第三方插件边界更清晰

插件加载主流程(简化版)

  1. 发现候选插件(workspace/global/bundled等来源)
  2. 读取manifest并做基本校验
  3. 根据配置算出启用状态(allow/deny/entries)
  4. 校验插件配置schema
  5. 满足条件再加载模块并注册能力
  6. 记录诊断和失败信息

这套流程是“先筛选,再执行”,而不是“先执行,再看结果”。

loader.ts里我最喜欢的一点

它对异常和回滚很谨慎:
插件注册失败时,不是简单打印报错,而是会尽量恢复状态,避免把全局运行时污染坏。

这就是成熟插件系统该有的防御意识。

为什么要强调边界

插件系统常见灾难是:

  • 插件直接依赖核心内部实现
  • 核心又写大量插件特判

最后两边耦死,谁都动不了。
OpenClaw在规则层明确强调“核心保持通用、插件通过约定扩展”,这点很关键。

对读者的实战意义

如果你想自己加一个渠道/能力插件,建议先做三件事:

  1. 把manifest写完整(元信息先行)
  2. 把配置schema写清楚(别让脏配置进运行时)
  3. 注册能力时最小化副作用(失败可回滚)

这样插件在长期维护时会轻松很多。

小结

这篇核心就是一句话:

  • 插件机制不是“动态import”这么简单,而是一整套发现、校验、激活、回滚体系

下一篇我们聊安全边界:从鉴权、配对、到沙箱策略,OpenClaw怎么尽量减少“助手失控”风险。

参考链接