适用场景
- 管理面板:为插件提供可视化的配置和数据管理界面(如 FAQ 管理、数据统计仪表盘)
- 数据展示:展示插件运行时的统计数据、日志、图表等
- 交互式工具:提供表单、编辑器等交互式界面

添加页面组件
在插件目录执行命令:components/pages/ 目录下生成页面文件:
manifest.yaml 中会添加组件发现配置:
清单文件:页面
后端处理
Page 组件的后端处理程序继承Page 基类,实现 handle_api 方法来处理来自前端页面的 API 请求。
PageRequest 字段
| 字段 | 类型 | 说明 |
|---|---|---|
endpoint | str | API 端点路径(如 '/entries') |
method | str | HTTP 方法(GET、POST、PUT、DELETE) |
body | Any | 请求体(已解析的 JSON,或 None) |
PageResponse 构造
| 方法 | 说明 |
|---|---|
PageResponse.ok(data) | 成功响应,data 为任意可 JSON 序列化的数据 |
PageResponse.fail(error) | 失败响应,error 为错误信息字符串 |
前端页面开发
在 HTML 文件中引入 Page SDK,即可与插件后端通信:Page SDK API
| 方法 | 说明 |
|---|---|
langbot.onReady(callback) | SDK 就绪后触发回调,callback 接收 ctx 参数(包含 theme 和 language) |
langbot.api(endpoint, body?, method?) | 调用插件后端 handle_api,返回 Promise |
langbot.t(key, fallback?) | 获取翻译字符串 |
langbot.onThemeChange(callback) | 主题变更回调 |
langbot.onLanguageChange(callback) | 语言变更回调 |
langbot.applyI18n() | 手动重新应用 data-i18n 翻译 |
暗色模式
SDK 会自动在页面上设置 CSS 自定义属性,直接使用即可:| CSS 变量 | 用途 |
|---|---|
--langbot-bg | 页面背景色 |
--langbot-bg-card | 卡片背景色 |
--langbot-text | 主文字色 |
--langbot-text-muted | 次要文字色 |
--langbot-border | 边框色 |
--langbot-accent | 强调色 |
页面 i18n
在页面目录下创建i18n/ 目录,放入 JSON 翻译文件:
data-i18n 属性,SDK 会自动替换文本:
完整示例:FAQ 管理器
以下是一个完整的 Page 组件示例,实现了 FAQ 条目的增删改查。 后端处理程序(components/pages/manager/manager.py):
components/pages/manager/index.html)中通过 langbot.api() 调用后端:
注意事项
- 页面运行在
sandbox="allow-scripts allow-forms"的 iframe 中,不能弹窗或导航父页面 - 通过
self.plugin访问插件实例的共享状态,Page 和 Tool 组件可以共享数据 - 使用
PageResponse.ok()和PageResponse.fail()构造响应,确保格式一致 - Page SDK 的
<script>标签必须放在使用langbot对象的代码之前
