Skip to main content
xbot
切换暗/亮/自动模式 切换暗/亮/自动模式 切换暗/亮/自动模式 返回首页
编辑页面

插件系统

xbot 的插件系统提供类似 VSCode 的扩展能力,通过统一架构支持多种运行时(原生 Go、stdio/gRPC、脚本、以及未来的 WASM)。插件可以贡献工具、钩子、小部件、上下文增强器、命令、主题、渠道提供者和 Web UI 扩展。

核心特性

  • 多运行时:原生 Go 插件、stdio/gRPC 插件(任意语言)、脚本插件(bash)、WASM(规划中)
  • 声明式清单:每个插件通过 plugin.json 声明其能力
  • 权限系统:细粒度能力控制 — 插件只能访问其声明的能力
  • Hook 系统:工具前后、会话生命周期、用户输入等事件钩子
  • Widget 系统:CLI 状态栏、标题栏、信息栏和页脚小部件
  • Web 插件 v2:类型安全的 ESM 前端插件,声明式 UI 贡献
  • Channel 插件:通过 stdio 协议的完整渠道适配器(如 GenUI display_html)
  • 事件总线:插件间发布/订阅通信
  • KV 存储:每插件持久化键值存储
  • 热重载:配置驱动的插件激活/停用
  • 自动重试:失败插件的指数退避恢复
  • 依赖解析:拓扑排序与循环检测

文档章节

快速示例

最小化的脚本插件(plugin.json):

{
  "id": "my-plugin",
  "name": "My Plugin",
  "version": "1.0.0",
  "runtime": "script",
  "entry": "bash main.sh",
  "activationEvents": ["onStart"],
  "permissions": ["ui.contribute"],
  "contributes": {
    "ui": [
      {
        "id": "greeting",
        "slot": "statusBarRight",
        "description": "Show a greeting"
      }
    ]
  }
}

脚本 main.sh

#!/bin/bash
echo "Hello from my plugin!"

将两个文件放入 ~/.xbot/plugins/my-plugin/ 并重启 xbot。问候语将出现在状态栏。