BuildingAI 帮助文档
BuildingAI 官网
  1. 应用开发
  • 欢迎使用 BuildingAI
  • 演示环境
  • 用户社群
  • 企业版咨询
  • 产品线路图
  • 更新日志
  • API 赞助商
  • 积分获取方式
  • 应用安装教程「必看」
  • 使用教程
    • 功能使用教程
      • 对话
      • 智能体
      • 知识库
      • 工作流
      • MCP 服务
      • 登录配置
      • 密钥配置
      • 模型计费
      • 积分充值
      • 会员订阅
      • 卡密兑换
      • DIY装修
    • 常见配置教程
      • 微信支付配置
      • 支付宝支付配置
      • 微信公众号配置
      • OSS存储配置
      • 短信配置
      • 谷歌登录配置
      • Ollama配置
    • 应用插件配置教程
      • 香蕉绘画Pro版-Nano banana
      • Wan漫剧 | 角色+多镜头叙事
      • GEO优化排名工具
      • 小红薯热门内容创作助手
      • 即梦AI绘画&视频
      • AI 证件照 | 自定义背景色
      • 电商试衣换装-AI模特
      • 爆款文章自动配图
      • 一键生成像素动画
      • 反推提示词助手
    • 大模型申请教程
      • 即梦AI密钥-申请教程
      • 豆包大模型-申请教程
      • 通义千问-申请教程
  • 部署教程
    • 宝塔面板部署
    • Windows 环境下 Docker 部署
    • Docker方式安装
  • 开发文档
    • 网络接口
      • 登录注册
        • 账号密码登录
        • 账号密码注册
      • 前台
        • 文件上传/下载
          • 单个上传
          • 多个上传
          • 列表
          • 详情
          • 下载
          • 删除
        • 用户
          • 算力明细
          • 登录配置
        • AI聊天
          • 对话(非流式)
          • 流式对话
          • 对话记录
          • 对话详情
          • 修改记录
          • 删除记录
          • 获取记录对话
        • MCP
          • 列表
          • 所有记录
          • 详情:id
          • 创建
          • 修改
          • 可见状态
          • 添加
          • 关联详情
          • 系统MCP
          • json导入
          • 移除
          • 删除
          • 获取快捷菜单
          • 系统MCP详情:id
          • 连通性
          • 批量连通性
        • 充值中心
          • 充值中心
          • 充值提交订单
          • 充值记录
          • 预支付
          • 获取支付结果
        • 模型厂商
          • 列表
          • 详情:id
          • 详情:code
        • AI模型
          • 列表
          • 详情:id
          • 默认模型
        • 数据分析
          • 数据记录
        • 会员中心
          • 会员中心信息
          • 获取套餐列表
          • 预支付
          • 订阅提交订单
      • 后台
        • 工作空间
          • MCP
            • 列表
            • 详情
            • 创建
            • 修改
            • 删除
            • 批量删除
            • 启用状态
            • json导入
            • 连通性
            • 批量连通性
            • 获取快捷菜单
            • 设置快捷菜单
          • AI模型
            • 厂商管理
              • 列表
              • 新增
              • 详情:id
              • 详情:provider
              • 修改
              • 删除
              • 状态
            • 模型管理
              • 列表
              • 新增
              • 详情:id
              • 修改
              • 删除:id
              • 批量删除
              • 设为默认
              • 模型类型
              • 模型支持能力
              • 父级模型类型
          • AI知识库
            • 知识库列表
            • 知识库详情
            • 转移知识库
            • 知识库删除
            • 知识库文档列表
            • 知识库文档详情
            • 知识库文档删除
            • 知识库分段列表
            • 知识库分段详情
            • 知识库分段删除
            • 数据列表接口
          • AI智能体
            • 智能体创建
            • 智能体列表
            • 智能体详情
            • 智能体对话记录列表
            • 智能体对话记录详情
            • 智能体对话
            • 智能体发布API接口对话
            • 智能体发布API获取对话列表
            • 智能体发布API获取对话消息
            • 智能体发布API更新对话
            • 智能体发布API删除对话
          • 密钥管理
            • 密钥模板
              • 列表
              • 全部列表
              • 详情
              • 创建
              • 修改
              • 删除
              • 批量删除
              • 修改状态
              • json导入
            • 密钥配置
              • 列表
              • 列表:templateId
              • 创建
              • 统计
              • 详情
              • 完整详情
              • 修改
              • 修改状态
              • 删除
              • 批量删除
        • 用户管理
          • 列表
          • 创建
          • 详情:id
          • 删除
          • 批量删除
          • 重置密码
          • 更新状态
          • 重置随机密码
          • 登录设置
          • 登录设置
        • 角色管理
          • 创建
          • 详情:id
          • 修改
          • 删除
          • 列表
        • 菜单管理
          • 创建
          • 详情:id
          • 修改
          • 删除
          • 列表
        • 插件管理
          • 我的插件
            • 列表
            • 修改
            • 详情:id
            • 创建
            • 启用列表
            • 批量删除
            • 删除:id
            • 批量状态
            • 禁用:id
            • 启用:id
            • 是否存在:identifier
            • 详情:identifier
            • 入库插件详情:identifier
            • 本地列表
            • 类型列表
            • 版本列表:identifier
            • 安装
            • 卸载
          • 插件操作
            • 下载
            • 安装
          • 平台密钥
            • 获取开发者密钥
            • 设置开发者密钥
        • 权限管理
          • 列表
          • 扫描权限
          • 同步到库
          • 扫描接口
          • 清理废弃权限
          • 详情:code
        • 字典配置
          • 列表
        • 系统操作
          • 支付配置
            • 列表
            • 详情:id
            • 状态
            • 更新
          • 系统信息
            • 安装状态
            • 安装状态
          • pm2
            • 进程列表
            • 日志
            • 重启
            • 重载
            • 停止进程
            • 进程详情
            • 进程状态
            • 清空日志
            • 保存进程
            • 健康检查
            • 删除进程
        • 套餐充值
          • 获取套餐充值配置
          • 获取套餐充值配置 Copy
        • 财务
          • 财务中心
          • 用户余额明细
        • 订单管理
          • 充值订单列表
          • 充值订单详情
          • 充值订单退款
          • 会员订单列表
        • 渠道管理
          • 公众号配置
            • 详情
            • 修改
        • 数据分析
          • 数据看板
        • VIP 会员
          • 会员等级
            • 新增会员等级
            • 会员等级列表
            • 修改会员等级
            • 会员等级详情
            • 删除会员等级
          • 订阅计划
            • 新增订阅计划
            • 订阅计划设置
            • 设置会员功能状态
            • 更改订阅计划状态
            • 订阅计划详情
            • 修改订阅计划
            • 删除订阅计划
            • 更新订阅计划排序
      • 插件
        • 文章插件
          • 前台
            • 列表
          • 后台
            • 文章
              • 列表
              • 创建
            • 分类
              • 列表
              • 创建
        • 智能体-企业微信插件
          • 对话接口
        • 配图大师
          • 后台
            • 配图记录
            • 获取配图插件
            • 插件设置
    • 插件与框架开发
      • 技术规范
      • 前置准备
      • 本地部署与开发
      • 目录结构
      • 项目配置
      • 主程序启动链路
      • 请求处理链路
      • 后端开发约定
      • BaseController 与 BaseService
      • DTO、工具与通用服务
      • 前端开发
      • 主程序计费接入
      • 数据库与实体建议
      • AI SDK 开发文档
      • BuildingAI 升级开发文档
      • 前端组件与工具开发文档
      • 后端工具与封装开发文档
      • 应用开发
        • 介绍
        • 创建应用
        • 模板结构
        • 应用开发
        • 打包发布
        • 插件更新
        • 插件清单文件
        • 插件后端开发
        • 插件前端开发
        • Extension SDK 怎么用
        • 插件计费接入
        • 插件 AI 能力接入建议
        • Seeds、Upgrade 与存储
        • 插件升级开发文档
        • 构建与发布
        • 插件前端组件与工具文档
        • 插件后端工具与封装文档
      • PC 客户端
        • 开发文档
        • 构建文档
  • 设计资源
    • 官方素材库
  • 政策
    • 开源许可
    • 服务条款
    • 隐私政策
  1. 应用开发

插件前端组件与工具文档

本文档只整理 BuildingAI 插件/扩展前端可以直接使用的组件和工具。示例参考
templates/extension-starter/src/web。

导入总览#

类型导入方式用途
基础 UI 组件@buildingai/ui/components/ui/...插件页面、控制台页面的按钮、表单、空状态、状态、时间等
AI 展示组件@buildingai/ui/components/ai-elements/...消息、代码块、工具调用、终端、推理过程等展示
展示辅助组件@buildingai/ui/components/...复制、文件图标、图标选择、加载、计数动画等
UI hooks@buildingai/ui/hooks/...确认弹窗、分页、上传、移动端判断等
页面 hooks@buildingai/hooks复制、页面 head、刷新用户/配置等
插件请求客户端@buildingai/services创建插件前台和控制台 HTTP client
共享上传服务@buildingai/services/shared文件上传、OSS 上传、上传配置缓存
状态读取@buildingai/stores读取登录用户、站点配置、用户配置
插件路由@buildingai/web-core创建插件前台和控制台路由
插件 Vite 配置@buildingai/web-core/vite/extension创建插件前端 Vite 配置

插件 Vite 配置#

defineExtensionViteConfig#

导入:
import { defineExtensionViteConfig } from "@buildingai/web-core/vite/extension";
用法:
import { defineExtensionViteConfig } from "@buildingai/web-core/vite/extension";

import packageJson from "./package.json";

export default defineExtensionViteConfig(packageJson, {
    server: {
        open: true,
    },
});
可用能力:
能力说明
React内置 React Vite 插件
Tailwind内置 Tailwind Vite 插件
React Compiler内置 React Compiler preset
路径解析启用 tsconfigPaths
插件 base自动设置为 /extension/{packageJson.name}
环境变量目录自动设置 envDir: ./../../
构建输出默认输出 .output/public
chunk 优化lucide-react 单独拆为 lucide chunk

插件路由#

defineRouteOption#

导入:
import { defineRouteOption } from "@buildingai/web-core";
用法:
import { defineRouteOption } from "@buildingai/web-core";

import packageJson from "./../../package.json";
import ArticleDetailPage from "./pages/article/[id]";
import ArticleListPage from "./pages/console/article/list";
import BlogIndexPage from "./pages/index";

export const routeOption = defineRouteOption({
    base: `extension/${packageJson.name}`,
    identifier: packageJson.name,
    routes: [
        {
            index: true,
            element: <BlogIndexPage />,
        },
        {
            path: "article/:id",
            element: <ArticleDetailPage />,
        },
    ],
    consoleMenus: [
        {
            title: "文章管理",
            path: "/",
            icon: "file-text",
        },
    ],
    consoleRoutes: [
        {
            index: true,
            element: <ArticleListPage />,
        },
    ],
});
参数:
参数类型说明
basestring插件前端 basename,通常为 extension/${packageJson.name}
identifierstring插件标识,用于控制台布局获取插件详情
routesRouteObject[]插件前台页面路由
consoleMenusExtensionMenuItem[]插件控制台菜单
consoleRoutesRouteObject[]插件控制台页面路由
内置能力:
能力说明
控制台布局consoleRoutes 自动套 ExtensionConsoleLayout
登录守卫控制台路由自动套 AuthGuard
全局错误页路由根部接入 GlobalError
404 页面未匹配路由渲染插件 404 页面
iframe 路由同步插件路由变化会通过 postMessage 同步父页面

插件请求客户端#

createPluginHttpClients#

导入:
import { createPluginHttpClients } from "@buildingai/services";
用法:
import { createPluginHttpClients } from "@buildingai/services";

const { apiHttpClient, consoleHttpClient } = createPluginHttpClients();

export { apiHttpClient, consoleHttpClient };
客户端:
客户端用途对应后端
apiHttpClient插件前台接口ExtensionWebController
consoleHttpClient插件控制台接口ExtensionConsoleController
React Query 示例:
import type {
    MutationOptionsUtil,
    PaginatedQueryOptionsUtil,
    PaginatedResponse,
    QueryOptionsUtil,
} from "@buildingai/web-types";
import { useMutation, useQuery } from "@tanstack/react-query";

import { consoleHttpClient } from "../base";
import type { Article, CreateArticleParams, QueryArticleParams } from "../types/article";

export function useArticleListQuery(
    params?: QueryArticleParams,
    options?: PaginatedQueryOptionsUtil<Article>,
) {
    return useQuery({
        queryKey: ["articles", "list", params],
        queryFn: () => consoleHttpClient.get<PaginatedResponse<Article>>("/article", { params }),
        ...options,
    });
}

export function useArticleDetailQuery(id: string, options?: QueryOptionsUtil<Article>) {
    return useQuery<Article>({
        queryKey: ["articles", "detail", id],
        queryFn: () => consoleHttpClient.get<Article>(`/article/${id}`),
        enabled: !!id && options?.enabled !== false,
        ...options,
    });
}

export function useCreateArticleMutation(
    options?: MutationOptionsUtil<Partial<Article>, CreateArticleParams>,
) {
    return useMutation<Partial<Article>, Error, CreateArticleParams>({
        mutationFn: (data) => consoleHttpClient.post<Partial<Article>>("/article", data),
        ...options,
    });
}

基础 UI 组件#

Button#

导入:
import { Button } from "@buildingai/ui/components/ui/button";
可用 props:
prop说明
variantdefault、outline、secondary、ghost、destructive、link
sizedefault、xs、sm、lg、icon、icon-xs、icon-sm、icon-lg
loading加载态,自动禁用按钮并显示 spinner
asChild将按钮样式传给子元素
<Button type="submit" variant="outline" size="sm" loading={isSubmitting}>
    保存
</Button>

Spinner#

导入:
import { Spinner } from "@buildingai/ui/components/ui/spinner";
<Spinner className="size-4" />

Empty#

导入:
import {
    Empty,
    EmptyContent,
    EmptyDescription,
    EmptyMedia,
    EmptyTitle,
} from "@buildingai/ui/components/ui/empty";
<Empty>
    <EmptyMedia variant="icon">
        <Search className="size-5" />
    </EmptyMedia>
    <EmptyContent>
        <EmptyTitle>暂无文章</EmptyTitle>
        <EmptyDescription>创建第一篇文章后会显示在这里。</EmptyDescription>
    </EmptyContent>
</Empty>

Field#

导入:
import {
    Field,
    FieldContent,
    FieldDescription,
    FieldGroup,
    FieldLabel,
    FieldSet,
} from "@buildingai/ui/components/ui/field";
<FieldSet>
    <FieldGroup>
        <Field>
            <FieldLabel>标题</FieldLabel>
            <FieldContent>
                <Input value={title} onChange={(event) => setTitle(event.target.value)} />
                <FieldDescription>最多 200 个字符。</FieldDescription>
            </FieldContent>
        </Field>
    </FieldGroup>
</FieldSet>

StatusBadge#

导入:
import { StatusBadge } from "@buildingai/ui/components/ui/status-badge";
可用 props:
prop说明
active是否为启用态
activeText启用态文案
inactiveText停用态文案
activeVariant启用态 badge 样式
inactiveVariant停用态 badge 样式
<StatusBadge active={article.status === "published"} activeText="已发布" inactiveText="草稿" />

TimeText#

导入:
import { TimeText } from "@buildingai/ui/components/ui/time-text";
可用 props:
prop说明
valueDate、字符串或时间戳
variantdatetime、date、time、relative
format自定义格式
fallback空值展示
<TimeText value={article.createdAt} variant="datetime" />
<TimeText value={article.updatedAt} variant="relative" />

InputGroup#

导入:
import {
    InputGroup,
    InputGroupAddon,
    InputGroupButton,
    InputGroupInput,
    InputGroupText,
} from "@buildingai/ui/components/ui/input-group";
<InputGroup>
    <InputGroupAddon>
        <Search className="size-4" />
    </InputGroupAddon>
    <InputGroupInput placeholder="搜索文章" />
    <InputGroupButton size="sm">搜索</InputGroupButton>
</InputGroup>

Combobox#

导入:
import {
    Combobox,
    ComboboxContent,
    ComboboxInput,
    ComboboxItem,
    ComboboxTrigger,
} from "@buildingai/ui/components/ui/combobox";
适用于插件里的分类选择、标签选择、模型选择等搜索选择场景。

DataTableFacetedFilter#

导入:
import { DataTableFacetedFilter } from "@buildingai/ui/components/ui/data-table-faceted-filter";
<DataTableFacetedFilter
    title="状态"
    selectedValue={status}
    onSelectionChange={setStatus}
    options={[
        { label: "已发布", value: "published" },
        { label: "草稿", value: "draft" },
    ]}
/>

上传组件和工具#

ImageUpload#

导入:
import { ImageUpload } from "@buildingai/ui/components/ui/image-upload";
可用 props:
prop说明
value当前图片 URL
defaultValue默认图片 URL
accept文件类型
maxSize最大大小
placeholder占位内容
onChange上传完成后回调
onUploadStart上传开始回调
onUploadError上传失败回调
sizesm、default、lg、xl
shapecircle、rounded
<ImageUpload
    value={cover}
    accept="image/*"
    maxSize={5 * 1024 * 1024}
    onChange={(url) => setCover(url)}
/>

Upload 和 useUpload#

导入:
import { Upload, useUpload } from "@buildingai/ui/components/upload";
可用能力:
能力说明
multiple多文件上传
accept限制文件类型
maxSize限制单文件大小
maxFiles限制文件数量
params透传上传参数
onUploadProgress上传进度
onUploadSuccess单文件成功
onUploadError上传失败
onUploadComplete批量完成

useUploadFile#

导入:
import { useUploadFile } from "@buildingai/ui/hooks/use-upload-file";
返回值:
字段说明
isUploading是否上传中
progress上传进度
uploadedFile上传完成文件
uploadFile执行上传
uploadingFile当前上传文件

共享上传服务#

导入:
import {
    detectFileType,
    invalidateStorageConfigCache,
    uploadFile,
    uploadFileAuto,
    uploadFiles,
    uploadFilesAuto,
    uploadInitFile,
} from "@buildingai/services/shared";
可用工具:
工具说明
uploadFile上传单文件
uploadFiles上传多文件
uploadInitFile系统初始化阶段上传文件
uploadFileAuto自动选择上传方式上传单文件
uploadFilesAuto自动选择上传方式上传多文件
detectFileType识别文件类型
invalidateStorageConfigCache清理上传配置缓存

AI 展示组件#

Message#

导入:
import { Message, MessageContent } from "@buildingai/ui/components/ai-elements/message";
<Message from="assistant">
    <MessageContent>生成完成。</MessageContent>
</Message>

CodeBlock#

导入:
import {
    CodeBlock,
    CodeBlockCopyButton,
    CodeBlockHeader,
    CodeBlockTitle,
} from "@buildingai/ui/components/ai-elements/code-block";
<CodeBlock code={source} language="tsx" showLineNumbers>
    <CodeBlockHeader>
        <CodeBlockTitle>example.tsx</CodeBlockTitle>
        <CodeBlockCopyButton />
    </CodeBlockHeader>
</CodeBlock>

Tool#

导入:
import {
    Tool,
    ToolContent,
    ToolHeader,
    ToolOutput,
} from "@buildingai/ui/components/ai-elements/tool";
<Tool>
    <ToolHeader type="tool-call" state="output-available" />
    <ToolContent>
        <ToolOutput output="执行完成" />
    </ToolContent>
</Tool>

其他 AI 展示组件#

组件路径可用组件
ai-elements/conversation对话容器
ai-elements/prompt-input提示词输入框
ai-elements/reasoning推理过程
ai-elements/terminal终端输出
ai-elements/sources来源引用
ai-elements/file-tree文件树
ai-elements/task任务状态
ai-elements/tests测试结果
ai-elements/stack-trace错误堆栈
ai-elements/preview预览内容

展示辅助组件#

CopyButton#

导入:
import { CopyButton } from "@buildingai/ui/components/copy-button";
<CopyButton value={article.url} size="icon-sm" />

FileFormatIcon#

导入:
import { FileFormatIcon } from "@buildingai/ui/components/file-format-icon";
<FileFormatIcon filename={file.name} />

LucideIcon#

导入:
import { LucideIcon } from "@buildingai/ui/components/lucide-icon";
<LucideIcon name="file-text" className="size-4" />

IconPicker#

导入:
import { IconPicker } from "@buildingai/ui/components/icon-picker";
可用 props:
prop说明
value当前图标名
onChange选择变化回调
placeholder占位文案
disabled禁用
containerPopover 容器
<IconPicker value={icon} onChange={setIcon} placeholder="选择菜单图标" />

Loader、ReloadWindow、CountUp、SplitText#

导入:
import Loader from "@buildingai/ui/components/loader";
import ReloadWindow from "@buildingai/ui/components/reload-window";
import { CountUp } from "@buildingai/ui/components/count-up";
import { SplitText } from "@buildingai/ui/components/split-text";
组件场景
Loader页面或局部加载
ReloadWindow提示刷新页面
CountUp数字动画
SplitText文本拆分动画

常用 hooks#

useAlertDialog#

导入:
import { useAlertDialog } from "@buildingai/ui/hooks/use-alert-dialog";
const { confirm } = useAlertDialog();

await confirm({
    title: "删除文章",
    description: "删除后不可恢复,确认继续?",
});

usePagination#

导入:
import { usePagination } from "@buildingai/ui/hooks/use-pagination";
返回值:
字段说明
currentPage当前页
totalPages总页数
pageSize每页数量
total总条数
hasPrevious是否有上一页
hasNext是否有下一页
goToPage跳转页码
nextPage下一页
previousPage上一页
reset重置分页
PaginationComponent分页组件

useCopy#

导入:
import { useCopy } from "@buildingai/hooks";
const { copy, isCopying } = useCopy();

await copy(article.url);

useDocumentHead#

导入:
import { useDocumentHead } from "@buildingai/hooks";
useDocumentHead({
    title: "文章管理",
});

其他可用 hooks#

hook导入场景
useMobile@buildingai/ui/hooks/use-mobile判断移动端
useMounted@buildingai/ui/hooks/use-mounted判断组件是否已挂载
useDebounce@buildingai/ui/hooks/use-debounce输入防抖
useRefreshUser@buildingai/hooks刷新当前用户
useRefreshUserConfig@buildingai/hooks刷新用户配置
useRefreshWebsiteConfig@buildingai/hooks刷新站点配置

状态读取#

导入:
import { useAuthStore, useConfigStore, useUserConfigStore } from "@buildingai/stores";
可用 store:
store说明
useAuthStore当前登录状态、用户信息、权限码
useConfigStore站点配置
useUserConfigStore用户配置
示例:
const userInfo = useAuthStore((state) => state.auth.userInfo);
const websiteConfig = useConfigStore((state) => state.config);

类型工具#

导入:
import type {
    MutationOptionsUtil,
    PaginatedQueryOptionsUtil,
    PaginatedResponse,
    QueryOptionsUtil,
} from "@buildingai/web-types";
可用类型:
类型说明
PaginatedResponse<T>分页响应
QueryOptionsUtil<T>React Query 查询 options
PaginatedQueryOptionsUtil<T>分页查询 options
MutationOptionsUtil<TData, TVariables>mutation options
修改于 2026-04-21 09:01:37
上一页
构建与发布
下一页
插件后端工具与封装文档
Built with