基于Rokid灵珠AI平台的春节全能助手智能体开发实践

基于Rokid灵珠AI平台的春节全能助手智能体开发实践

前言

本次开发基于Rokid灵珠AI平台,聚焦春节高频的抢票出行、路线规划、年货比价核心场景,搭建轻量化春节全能助手智能体,通过平台可视化工作流编排实现功能逻辑串联;因无Rokid Glasses实物,智能体完成灵珠平台内对话测试验证,眼镜端适配仅编写伪代码实现逻辑预留,整体开发聚焦平台核心的智能体配置与工作流开发能力,实现低门槛、高适配的春节场景AI应用落地。

本文应用基于Rokid灵珠智能体/CXR SDK开发,开发指南https://forum.rokid.com/index

一、开发背景与需求分析

春节期间抢票、年货采购、出行路线规划是用户核心需求,依托Rokid灵珠AI平台零门槛、全栈化的开发特性,无需复杂编码即可完成智能体与工作流的搭建,同时平台支持与Rokid Glasses硬件生态的深度集成,为后续眼镜端落地预留适配接口;本次开发核心实现三大功能:12306高铁票查询、春节自驾路线规划、年货好物低价推荐,所有功能通过灵珠平台智能体统一承接,工作流分别处理具体业务逻辑,满足用户春节出行与采购的一站式需求。

二、开发环境与平台核心能力依托

  1. 开发平台:Rokid灵珠AI平台
  2. 核心工具:平台智能体创建(提示词编辑、人设配置、对话调试)、工作流编排(节点添加、逻辑串联、按需调用组件)、插件开发
  3. 测试方式:灵珠平台内智能体对话测试(输入问题验证回复结果)
  4. 硬件适配:无Rokid Glasses实物,仅编写眼镜端SDK伪代码,实现功能逻辑的硬件端适配预留

三、智能体整体搭建流程

本次开发的核心是春节出行助手智能体,作为用户交互的唯一入口,负责接收用户问题、分发至对应工作流、整合结果反馈,搭建全程在灵珠平台智能体编辑界面完成,步骤简洁无代码,具体如下:

3.1 智能体基础配置

  1. 新建智能体,命名为春节全能助手,添加自定义分类「春节场景应用」(依托平台β1.2.0版本自定义分类功能);
  2. 智能体功能介绍:实现抢票提醒、聚会安排、拜年提醒等功能的一站式助手,让用户在春节期间无需频繁掏出手机,通过语音 + 视觉的无感交互即可完成各类春节相关的事务,真正实现 “解放双手,智享新春” 的体验。
  3. 智能体内部开场白:

你好呀!我是你的春节全能助手~ 🧨

我可以帮你:

🚄 查高铁票、余票和车次信息

🚗 规划春节自驾路线,避开拥堵路段

🛒 推荐低价年货好物,帮你省钱省心

3.2 智能体能力配置

核心为工作流关联插件按需调用,在智能体「能力配置」模块,将提前编排好的3个工作流(12306车票查询、自驾路线规划、年货低价推荐)与智能体绑定,设置触发关键词:当用户输入包含「高铁票」「抢票」「车票」「自驾」「路线」「年货」「比价」等关键词时,智能体自动分发至对应工作流处理;无明确关键词时,通过平台对话引擎进行意图识别,匹配对应功能。

3.3 插件创建

通过魔搭社区的MCP广场创建用于铁路12306访问车票以及高德地图接口的插件。

插件我们选择MCP插件-基于SSE创建,可以到魔塔社区寻找自己想要的MCP工具,获取url。

这是我采用的12306-MCP车票查询工具作为展示。

下面是高德地图插件创建

下面是成功创建好的界面。

四、核心工作流编排(无代码可视化+代码节点增强)

工作流是本次开发的核心,依托灵珠平台所见即所得的无代码编排工具,通过「添加节点、设置逻辑、配置入参/出参」实现业务处理,针对12306接口特殊数据格式,通过Python代码节点完成结构化数据解析,三个核心工作流编排逻辑如下:

4.1 12306高铁票查询工作流(refer_12306)

核心功能

接收用户「出发地+目的地+出行时间」信息,调用平台预置12306插件,完成城市名→车站代码转换、数据解析、车次查询,返回对应车次、出发/到达时间、余票、票价信息。

编排节点(按执行顺序)
  1. 用户意图提取节点:通过大模型提取出发地、目的地、确定出行日期;
  2. 车站代码获取节点:调用get-station-code-of-city插件,这里我命名成了出发点和目的地,将城市名转换为车站编码;
  3. Python代码解析节点(from 、to):解析插件返回的嵌套JSON字符串,精准提取station_code,解决接口数据格式不兼容问题;
  4. 车票查询节点:调用get-tickets插件,传入出发站代码、到达站代码、标准格式日期,获取实时车次数据;
  5. 车票中转查询:调用get-interline-tickets获取车票中转信息。
  6. 结果格式化节点:按统一规范将结构化数据转为自然语言;
  7. 结束节点:输出结果。

试运行成功后就可以发布工作流了。

4.2 自驾路线规划工作流

核心功能

接收用户出发地、目的地、出行时间(春节),结合春节高速免费、易拥堵路段信息,返回最优自驾路线、全程耗时、拥堵提醒。

编排节点(按执行顺序)
  1. 经纬度处理节点:提取出发地、目的地、出行时间,同时将出发地和目的地转化为经纬度;
  2. 地图数据插件调用节点:入参为出发地、目的地、出参为多条路线规划、耗时等;
  3. 结果整理与返回节点:将最优路线、耗时、提醒信息整理为自然语言,反馈至智能体。

试运行测试

4.3 年货低价推荐工作流

核心功能

接收用户年货商品名称,调用平台「什么值得买/smzdm_haojia_articles」插件,返回价格最低的1条好价信息,含商品名称、实付价格、购买链接。

编排节点(按执行顺序)
  1. 商品名称提取节点:提取用户输入的年货商品名称(如坚果、春联、酒水);
  2. 插件调用节点:入参为商品名称,出参为好物推荐列表(含价格、链接、描述);
  3. 规范输出节点:按「商品名称+实付价格+购买链接」格式整理;
  4. 结果返回节点:将整理后的信息进行输出。

4.4 工作流通用设置

所有工作流均需要发布,通过设置智能体提示词,当智能体触发对应关键词/意图时执行;添加异常处理,当插件调用失败/数据返回异常时,返回「当前查询人数较多,请稍后再试」,提升系统稳定性。

五、关键代码实现(工作流代码节点+眼镜端伪代码)

本次开发依托灵珠平台无代码工具,核心代码为12306车站代码解析脚本(解决接口数据格式问题)与眼镜端SDK适配伪代码,具体如下:

5.1 12306工作流核心代码(车站JSON解析)

用于解析get-station-code-of-city返回的嵌套字符串,提取标准车站代码,保证get-tickets接口正常调用:

import json async def main(args: Args) -> Output: params = args.params # 直接解析 input 字符串,它本身就是数组 data = json.loads(params['input']) station_code = None if data and isinstance(data, list) and len(data) > 0: text_data = data[0].get("text", {}) # 自动适配任意城市名 for city in text_data: station_code = text_data[city].get("station_code") break # 输出到 key0 ret: Output = { "key0": station_code } return ret

5.2 智能体提示词配置(平台内直接输入)

# 角色 你是贴心的春节全能助手,语气简洁友好,精准解答抢票、自驾、年货相关问题。 # 核心能力与触发规则 ## 1. 12306 车票查询(工作流 + 插件) - 触发关键词:高铁票、抢票、车票、回家、返程、余票、车次、几点到、几点出发等。 - 处理逻辑: 1. 模型自动识别用户意图,提取**出发地、目的地、出行日期、座位类型**等关键信息。 2. 信息不完整时,主动友好追问补充。 3. 调用工作流 `refer_12306`,流程如下: - 调用 `get-station-code-of-city` 获取出发地、目的地的车站代码。 - 通过**代码节点解析 JSON 结构**,提取纯车站代码字符串。 - 调用 `get-tickets` 接口,传入日期、出发站代码、到达站代码,获取车次、余票、票价、历时等数据。 4. 模型将结构化数据整理为自然语言,**严格按回复格式规范输出**。 ## 2. 春节自驾路线规划(工作流) - 触发关键词:自驾、开车、路线、出行规划、回家路线、堵车、高速等。 - 处理逻辑: 1. 自动触发工作流 `car`。 2. 工作流根据出发地、目的地、出行时间,结合春节高速免费及拥堵信息,返回最优路线、耗时、拥堵提醒。 3. 模型**严格按格式规范排版输出**,不返回原始数据。 ## 3. 年货低价推荐(工作流) - 触发关键词:年货、比价、好物、购买、便宜、推荐、坚果、酒水、春联等。 - 处理逻辑: 1. 自动触发工作流 `buy`。 2. 工作流根据商品名称,返回**价格最低的1条好价信息**,含商品名、价格、购买链接。 3. 模型**严格按格式规范输出**,不返回原始数据。 --- # 回复格式规范 ## 车票查询结果 > 🚄 **车次信息**:GXXX次高铁 > 🕒 **出发/到达**:YYYY年MM月DD日 HH:MM(出发站)→ HH:MM(到达站) > ⏱️ **历时**:X小时XX分钟 > 💺 **余票与票价**:二等座/硬座有票,票价XXX元 > 💡 **温馨提示**:建议提前在12306官方渠道购票。 ## 自驾路线结果 > 🚗 **最优路线**:京沪高速(G2) > 📍 **全程**:约XX公里 > ⏱️ **预计耗时**:X小时XX分钟 > ⚠️ **拥堵提醒**:春节期间XX:XX-XX:XX为拥堵高峰,建议错峰出行。 > 🎟️ **高速政策**:春节期间(X月X日-X月X日)全国高速免费通行。 ## 年货推荐结果 > 🛒 **商品名称**:三只松鼠坚果大礼包混合装 > 💰 **好价**:实付低至58.9元 > 🔗 **购买链接**:[点击查看](https://www.smzdm.com/p/168975421/?utm_source=zijie) > 💡 **温馨提示**:价格可能随活动变动,请以页面为准。 --- # 通用回复规则 - 禁止直接输出**工具代码、工作流原始数据**,所有结果必须整理为自然语言。 - 参数缺失时,清晰提示用户补充关键信息。 - 插件/工作流调用失败时,统一返回: > 当前查询人数较多,请稍后再试。 - 所有回复使用清晰 Markdown 排版,便于用户快速阅读。 

5.3 Rokid Glasses适配伪代码(Java)

// 导入Rokid Glasses灵珠平台对接SDK(伪包名,实际以官方为准) import com.rokid.lingzhu.sdk.LingzhuAgent; import com.rokid.lingzhu.sdk.listener.AgentResultListener; import com.rokid.glasses.hardware.VoiceWakeup; import com.rokid.glasses.hardware.ScreenDisplay; // 初始化春节出行助手智能体 public class SpringFestivalAgent { private LingzhuAgent springFestivalAgent; private VoiceWakeup voiceWakeup; private ScreenDisplay screenDisplay; // 构造方法:初始化智能体与眼镜硬件能力 public SpringFestivalAgent() { // 初始化灵珠平台智能体 springFestivalAgent = new LingzhuAgent.Builder() .agentId("spring_festival_agent_001") .lowPower(true) .build(); // 初始化语音唤醒与屏幕展示 voiceWakeup = new VoiceWakeup("春节全能助手"); screenDisplay = new ScreenDisplay(); } // 语音唤醒监听 public void setVoiceWakeupListener() { voiceWakeup.setOnWakeupListener(voiceText -> { queryAgent(voiceText); }); } // 调用灵珠平台智能体 private void queryAgent(String userInput) { springFestivalAgent.query(userInput, new AgentResultListener() { @Override public void onSuccess(String result) { screenDisplay.showText(result); voiceBroadcast(result); } @Override public void onError(String errorMsg) { screenDisplay.showText("查询失败,请稍后再试"); voiceBroadcast("查询失败,请稍后再试"); } }); } // 语音播报 private void voiceBroadcast(String text) {} // 启动智能体 public static void main(String[] args) { SpringFestivalAgent agent = new SpringFestivalAgent(); agent.setVoiceWakeupListener(); } }

六、测试验证(灵珠平台内对话测试)

因无Rokid Glasses实物,本次测试仅在灵珠平台智能体对话测试界面完成,通过输入模拟用户问题,验证智能体与工作流的联动效果,测试用例与结果如下:

6.1 测试用例1:12306高铁票查询

用户输入:3月11日从武汉到上海

智能体回复

6.2 测试用例2:年货低价推荐

用户输入:年货想买坚果礼包

点击查看

6.3 测试用例3:自驾路线规划

用户输入:春节自驾从北京出发去西安,有哪些避开拥堵的路线建议?

6.4 异常测试

用户输入:查高铁票

七、开发总结与后续优化

7.1 开发总结

本次基于Rokid灵珠AI平台的春节出行助手智能体开发,充分利用了平台零门槛、无代码、全栈化的核心优势:

  1. 全程以可视化编排为主,仅在12306数据解析环节使用轻量Python代码,解决真实接口适配问题;
  2. 依托平台预置组件与自开发插件,快速实现12306车票查询、自驾规划、年货比价三大核心能力;
  3. 工作流refer_12306通过代码节点+插件调用的组合方案,完美解决车站编码解析、接口参数不兼容等实际开发问题;
  4. 无硬件条件下仍可完成全功能验证,伪代码方案为后续眼镜端落地提供极低成本的扩展路径。

7.2 后续优化方向

  1. 硬件端真机适配:获取Rokid Glasses后,完成语音唤醒、屏幕展示、多模态交互落地;
  2. 功能增强:支持往返车票查询、座位类型筛选、实时余票动态刷新、自驾油量/充电提醒;
  3. 体验优化:强化对话记忆,自动保存常用出发地/目的地,减少重复输入;
  4. 多模态扩展:支持图片比价、语音快捷查询、AR路线预览。

八、开发心得

Rokid灵珠AI平台真正降低了AI应用开发的门槛,无代码编排+轻量代码增强的模式,让我可以聚焦业务场景而非底层技术。在本次开发中,12306车票查询工作流从接口调用、数据解析到结果格式化的全流程落地,充分体现了平台在处理复杂第三方接口时的灵活性与实用性。

本次春节出行助手的开发实践证明:基于灵珠平台,普通开发者也能快速构建稳定、可用、可扩展的场景化AI智能体,真正实现从创意到落地的高效转化。

Read more

Java Web 影城会员管理系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】

Java Web 影城会员管理系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】

摘要 随着数字化时代的快速发展,影院行业对会员管理的需求日益增长。传统的会员管理方式依赖人工操作,效率低下且容易出错,无法满足现代影院对会员数据分析、个性化服务和高效运营的需求。影城会员管理系统通过信息化手段,实现会员信息的集中管理、消费记录的实时跟踪以及会员权益的精准发放,从而提升影院的服务质量和运营效率。该系统能够帮助影院更好地了解会员需求,优化营销策略,增强会员粘性,为影院创造更大的商业价值。关键词:数字化、会员管理、影院行业、信息化、运营效率。 该系统基于SpringBoot2框架开发,采用前后端分离架构,前端使用Vue3实现动态交互界面,后端通过MyBatis-Plus高效操作MySQL8.0数据库。系统功能涵盖会员注册与登录、会员信息管理、消费记录查询、积分管理、优惠券发放以及数据分析报表生成。通过Spring Security实现权限控制,确保系统安全性;利用Redis缓存提升系统性能;结合Vue3的响应式特性,为用户提供流畅的操作体验。系统还支持多维度数据分析,帮助影院管理者制定科学的营销策略。关键词:SpringBoot2、Vue3、MyBatis-Plus、My

前端实时推送 & WebSocket 面试题(2026版)

一、历史背景 + 时间轴 网页一旦需要 “实时” ,麻烦就开始了:数据在不断变化,用户却只能等下一次刷新; * 刷新解决不了的延迟,用短轮询凑数,又被无数空请求反噬; * 再加长轮询,试图把“有了新数据再说”变成一种伪推送,却仍困在请求—响应的笼子里。 * 开发者于是继续前探:让连接不再频繁重建,尝试分块直输,把事件像水一样持续送达,于是有了更顺滑的 Streaming 与标准化的 SSE 。 直到某一刻,我们不再满足于“更聪明的单向”,而是迈向真正的“同时说话与倾听”——  WebSocket把通信从一次次请求,变成一条持久而通透的通道。此后, * HTTP/2、  HTTP/3与QUIC   又在底层为效率和时延开了绿灯,甚至提供了可选可靠与无序传输的更多可能。 接下来,我们就沿着这条主线,层层展开:它们各自解决了什么、在哪些场景最合拍、又如何在你的系统里形成清晰的选型边界 01|从整页刷新出发:减少浪费的一条链路 这一块是为了解决“整页刷新导致的高延迟与带宽浪费”

深入剖析WebSphere反序列化漏洞CVE-2015-7450:从原理到实战利用

1. WebSphere反序列化漏洞初探 第一次听说WebSphere反序列化漏洞时,我正蹲在机房调试服务器。同事突然拍我肩膀说:"老李,咱们用的WebSphere好像有个能远程执行代码的洞!"当时我手里的咖啡差点洒在键盘上。这个编号CVE-2015-7450的漏洞,可以说是企业级Java应用的噩梦。 WebSphere作为IBM的旗舰中间件产品,广泛应用于银行、电信等关键行业。它本质上是个巨无霸级的Java EE容器,负责处理企业应用的核心业务逻辑。而漏洞就藏在它的SOAP通信接口里——攻击者只需要发送特制的序列化数据,就能让服务器执行任意命令,就像把后门钥匙直接递给黑客。 我后来在测试环境复现时发现,受影响的主要是7.0和8.5版本。想象一下,攻击者通过8880端口发送个精心构造的XML报文,就能在服务器上为所欲为。这可比普通的Web漏洞危险多了,因为WebSphere通常部署在内网核心区域,一旦突破就等于拿到了整个系统的控制权。 2. 漏洞原理深度解析 2.1 反序列化的潘多拉魔盒 要理解这个漏洞,得先搞懂Java反序列化是怎么回事。简单说,序列化是把对象变成字节流

前端关系图推荐-relation-graph

前端关系图推荐-relation-graph

目录 一、前言 二、relation-graph官网地址 三、推荐relation-graph的原因 四、relation-graph的使用 1.Vue2使用 1.1、安装relation-graph 1.2、 可直接复制到vue文件中运行使用 2. Vue3使用 2.1、安装relation-graph 2.2、 可直接复制到vue文件中运行使用 3. React使用 1.1、安装relation-graph 1.2、 可直接复制到文件中运行使用 五、运行结果 六、下面是运行成果图 一、前言 Relation-Graph是一个开源的免费关系图谱组件,支持Vue2、Vue3和React框架。它提供开箱即用的体验,配置简单,文档清晰,并支持通过插槽自定义节点样式。文章详细介绍了在Vue2、Vue3和React中的安装和使用方法,包含完整的代码示例和运行效果图。该组件具有高度可定制性,