内置插件
xbot 在仓库的 plugins/ 目录下随附三个内置插件:
| 插件 ID | 目录 | 类型 | 用途 |
|---|---|---|---|
xbot.genui | plugins/xbot-genui/ | Go stdio channel 插件 | display_html 工具——LLM 生成交互式 UI(图表、3D、动画),在 Web 聊天中流式渲染预览 |
xbot.git-fancy | plugins/xbot-git-fancy/ | Go stdio 插件 | Fancy Git 面板——分支、工作区变更、分页提交历史、commit 详情、全宽 Monaco diff tab |
xbot.ambience | plugins/xbot-ambience/ | script 运行时(纯 UI) | Web 氛围层——壁纸、毛玻璃效果、动态桌宠挂件、粒子特效 |
三者都是零依赖(或仅依赖 protocol 包),由 xbot-cli setup 安装到
$XBOT_HOME/plugins/builtin/(版本与 release 对齐)。
两种受支持的使用方式:
1. 安装到用户插件目录(生产风格)
# 在仓库根目录执行:构建并安装两个插件
make plugins-install
# → ~/.xbot/plugins/xbot.genui/ 和 ~/.xbot/plugins/xbot.git-fancy/
重载以激活(或重启 xbot):
tui_control(action=reload_plugins)
2. 直接从仓库 checkout 运行(开发模式)
make plugins-build
XBOT_PLUGIN_DIRS="$(pwd)/plugins" xbot
XBOT_PLUGIN_DIRS 环境变量是路径分隔符分隔的额外插件扫描目录列表。
也可以在 config.json 中永久配置仓库路径:
{
"plugins": {
"enabled": true,
"dirs": ["/path/to/xbot/plugins"]
}
}
已安装到用户目录的副本始终优先:插件发现按 ID 去重,且
~/.xbot/plugins/ 先被扫描,因此已安装副本会遮蔽仓库版本。
- 启动时,agent 创建
PluginManager(当plugins.enabled为 true)并调用Discover()(见agent/agent.go)。 Discover()扫描plugin.DefaultPluginDirs(xbotHome)返回的目录——~/.xbot/plugins/、~/.xbot/plugins/builtin/,加上XBOT_PLUGIN_DIRS环境变量条目和config.json的plugins.dirs条目。- 每个包含有效
plugin.json的子目录都是候选插件;重复(manifestid相同)会被跳过并记录警告。 ActivateAll()随后激活所有activationEvents包含onStart的插件。
GenUI 插件额外声明了一个 channel provider(genui)。channel 插件实例
只有在 config.json 中启用该 channel 时才会被创建:
{
"channels": {
"genui": { "enabled": "true" }
}
}
仅安装插件是不够的——没有 channels.genui 条目,IsEnabled 返回 false,
display_html 工具对 LLM 不可见。
- xbot-genui — GenUI(display_html):交互式 UI 生成
- xbot-git-fancy — Fancy Git 面板
- xbot-ambience — Web 氛围层(壁纸 / 毛玻璃 / 桌宠)