自定义 UI
该案例说明如何在 AI Agent 中使用
dobot-plus技能时,通过Requirements.md中的功能描述定制插件 UI 的交互形式。Skill 会根据需求文档自动生成function.json与ui/Main.tsx;本文重点介绍页面布局约定、可用组件类型,以及如何在需求文档中显式指定或依赖默认推断。
示例流程
UI 页面是 Skill 工作流中的一环,与 Lua、HTTP、积木配置同步生成:
更完整的开发流程见 适配 Modbus-RTU 设备 或 适配 I/O 设备。
页面布局
dobot-plus 技能生成页面时,采用固定的左右分栏布局:
| 区域 | 位置 | 内容 |
|---|---|---|
| 设备状态 | 左侧 Card | 只读状态展示(读取类功能) |
| 控制面板 | 右侧 Card | 参数输入与操作按钮(写入 / 控制类功能) |
请不要在 Requirements.md 中修改这种布局规则。 变更左右分栏、上下堆叠或多 Tab 等结构会让 Agent 表现不稳定,生成的页面也会变得不可预测。
页面统一使用 antd 作为基础组件库(react@18 + antd@5),根节点为 DobotPlusApp,并通过 MQTT 推送实时刷新左侧状态区。

在 Requirements.md 中指定 UI
在每个功能的说明中,增加一行 UI 交互描述,Agent 会将其映射为 function.json 中的 ui 字段。
推荐写法
在功能章节(如 ### 4.1 SetSpeed — 设置速度)下追加:
### 4.1 SetSpeed — 设置速度
- 操作:写入速度寄存器,取值范围 0~100
- 参数:speed(number,默认 50)
- UI:滑块(Slider)
也可使用简短形式:
- UI:按钮
- UI:只读状态展示
- UI:下拉选择(选项:模式 A / 模式 B / 模式 C)
功能与 UI 的对应关系
| 功能类型 | 典型命名 | 建议 UI | 放置区域 |
|---|---|---|---|
| 无参控制 | StartDevice、OpenGripper | Button | 右侧控制区 |
| 带参写入 | SetSpeed、SetForce | Slider / Input / Select | 右侧控制区 |
| 枚举选择 | SetMode、SetChannel | Select / Radio / Dropdown | 右侧控制区 |
| 布尔开关 | EnableVacuum | Switch / Checkbox | 右侧控制区 |
| 状态读取 | GetStartStatus、GetPosition | Tag / Text / Table | 左侧状态区 |
| 文件操作 | ImportConfig | Upload | 右侧控制区 |
读取类功能还需在 Agent 分解时分配 keyWord(英文 camelCase 名词,如 startStatus),用于 MQTT 状态推送与页面绑定。写入类功能的 keyWord 为空字符串。
组件类型
以下组件类型与 function.json 中 ui 字段的枚举值一一对应。
展示类组件
用于左侧「设备状态」区域,对应读取类、无用户输入的功能。
| 组件 | ui 值 | 适用场景 | Requirements.md 示例 |
|---|---|---|---|
| 只读文本 | 无固定枚举,由 Agent 选用 tag 或 Statistic 展示 | 数值、字符串等单一状态 | UI:只读文本 / UI:只读状态展示 |
| Tag | tag | 布尔或枚举状态,需颜色区分 | UI:Tag 标签(1=运行中,0=已停止) |
| Table | table | 多行、多字段状态列表 | UI:表格展示各通道状态 |
控制类组件
用于右侧「控制面板」区域。带参数的功能在表单中渲染控件;ui 为 button 的功能统一 排列在表单底部按钮区。
| 组件 | ui 值 | 适用场景 | Requirements.md 示例 |
|---|---|---|---|
| Input | input | 数值或文本参数输入 | UI:输入框(范围 0~255) |
| Slider | slider | 连续数值调节(速度、力度等) | UI:滑块(0~100) |
| Select | select | 多选一,选项较多 | UI:下拉选择(选项:A / B / C) |
| Dropdown | dropdown | 下拉菜单式选择 | UI:Dropdown 下拉菜单 |
| Radio | radio | 少量互斥选项 | UI:单选(开 / 关 / 自动) |
| Switch | switch | 布尔开关 | UI:开关 |
| Checkbox | checkbox | 布尔勾选 | UI:复选框 |
| Button | button | 无参即时操作(启动、停止、复位) | UI:按钮 |
| Upload | upload | 文件导入 | UI:文件上传 |
默认推断规则
若功能说明中未显式指定 UI 类型,Agent 会根据功能语义与参数类型进行推断:
| 功能特征 | 默认 UI |
|---|---|
| 无参数的控制 / 触发操作 | Button |
| 带 number 类型参数,且有明确范围 | Slider |
| 带 number / string 参数,无范围或需精确输入 | Input |