用途:为 AI 聊天界面创建可交互组件(widget),支持按钮、表单与双向操作,适合构建带可点击组件和实体标注的智能体 UI。
主要能力:
- 组件模板:用 ListView、ListViewItem、Row、Col、Box、Text、Title、Image、Icon、Button 等组件定义可复用布局。
- 动作处理:动作分 client 与 server 两类。client 由前端 onAction 回调处理,用于导航、本地状态;server 由后端 action() 方法处理,用于数据变更、组件替换。
- 组件生命周期:智能体工具生成组件并 yield WidgetItem,组件在聊天中渲染,用户点击动作后分发处理,可选替换为更新后的状态。
- 实体标注:通过 entities.onTagSearch 与 onClick 支持 @提及实体。
- 编辑器工具:通过 composer.tools 让用户选择不同 AI 模式,后端按 tool_choice 路由到不同 agent。
使用方式:前端用 useChatKit 配置 api(url、domainKey)、widgets.onAction、entities、composer 等;后端继承 ChatKitServer 实现 action(),可 yield ThreadItemReplacedEvent、ThreadItemDoneEvent、ClientEffectEvent。验证运行:python3 scripts/verify.py,预期输出 ✓ building-chat-widgets skill ready。
限制与注意:动作对象用 action.payload 而非 action.arguments;context 参数已是 RequestContext,勿再包装;合成用户消息需包含 id、thread_id、created_at 等必填字段,内容类型用 type="input_text";同一动作不要在 client 与 server 重复处理。若验证失败,检查 references/ 是否含 widget-patterns.md。