冰箱剩菜怎么煮?云厨用端到端智能体教你做菜
冰箱里的尴尬时刻:有菜,但不会做
下班回家,打开冰箱,里面孤零零地躺着两个番茄、三个鸡蛋,还有一块不知放了多久的土豆。你站在厨房门口发呆:今晚吃什么?
这时候,如果旁边站着一位经验丰富的老师傅,他可能会瞥一眼冰箱,随口说:“做个番茄炒蛋吧,十分钟搞定,蛋液凝固就盛出来,别炒老了。”
以前,这种场景只存在于想象里。现在,一个叫“云厨”的 AI 应用试图还原这个体验。它不是那种让你搜“番茄炒蛋做法”,然后弹出一堆图文链接的传统菜谱 APP。它是一个长在屏幕里的数字人,能听懂你选了哪些食材,能判断该推荐哪道菜,更能用语音一步步带着你做。当你手忙脚乱地问“红烧肉糖色炒过头了怎么办”时,它能立刻回应,而不是让你去翻评论區。
这背后并不是什么魔法,而是一套被称为“端到端具身交互智能”的技术方案。简单来说,就是把听(ASR)、想(大模型)、说(TTS)和演(数字人渲染)全部打包进一个 SDK 里,让 AI 的反应速度从几秒缩短到半秒以内。
为什么传统菜谱 APP 让人没耐心?
如果要自己拼凑一个“AI 烹饪助手”,大多数开发者的第一反应是找四个供应商:
- 找个菜谱数据库接口;
- 接一个大模型 API 用来回答问题;
- 接一个语音合成(TTS)服务;
- 再找一个数字人驱动引擎。
这四套系统各自为政。代码里得写大量的“胶水逻辑”来同步状态:用户说完话,先传给 ASR 转文字,再发给大模型生成回复,再把回复发给 TTS 转音频,最后驱动数字人对口型。这一圈下来,延迟通常在 1.5 到 3 秒。
在厨房里,3 秒是很漫长的。油锅里的烟可能已经冒起来了,你问“火是不是太大了”,等三秒后 AI 才慢悠悠地说“请调小火力”,菜可能已经糊了。更麻烦的是,传统架构很难处理“打断”。当 AI 正在播报长篇大论时,它通常听不到你的新指令,因为麦克风通道被占用了,或者状态机还没切换回来。
这就是典型的“非端到端”困境:感知、决策、表达被割裂成独立的阶段,中间充满了等待和同步的损耗。
一个 SDK 解决的“端到端”难题
云厨的做法不同。它基于魔珐星云的 XingyunAvatarAgent SDK 构建。核心业务代码不到 200 行,前端对接只需要三步:提供一个显示数字人的容器、注册几个回调函数、调用 agent.ask() 发送消息。
在这个架构里,ASR、大模型推理、TTS 和数字人渲染都在 SDK 内部闭环完成。对开发者来说,不需要关心语音识别什么时候结束,也不需要手动触发语音合成。SDK 内部维护着一个持续运行的状态机,感知和理解是并行处理的。
这意味着,云厨可以一边讲解“下一步加入生抽”,一边监听用户有没有插话。如果用户突然问“没有生抽可以用老抽吗”,智能体能立即中断当前的播报,优先处理这个新问题。这种“随时打断、随时追问”的能力,才是厨房场景下真正有用的交互。
配置一个 AI 厨师,比想象中简单
在魔珐星云的控制台上,创建一个 AI 厨师并不需要从头训练模型。整个过程更像是在组装一台精密的仪器,各个模块都可以独立配置。
首先是形象与场景。云厨选择了一位看起来耐心、专业的厨师形象,背景设定为简洁温暖的厨房,色调与前端的奶油基底风格保持一致。这不仅仅是为了好看,统一的视觉风格能降低用户的认知负荷,让人感觉更放松。
其次是音色与表演。AI 的声音不能太机械,也不能太激昂。云厨选用了温暖清晰、语速适中的音色。更重要的是“表演配置”——这不是简单的口型同步,而是包括语气、表情、手势、头部动作在内的多模态表达。比如,在讲解“小火慢炖”时,数字人的语气温柔舒缓;在提醒“注意火候”时,语气会变得关切且紧凑。这些细节都来自配置层的统一生成。
最后是大脑与耳朵。平台支持可插拔的架构,ASR 可以选择 Xmov 自研、豆包或腾讯的服务,大模型也可以灵活切换。这种设计保证了即使某家供应商的服务波动,整个交互流程依然稳定,只需在后台替换模块即可,前端代码无需改动。
代码层面:如何保证连接稳定?
对于前端开发者来说,最头疼的往往不是功能实现,而是各种异常情况的处理。云厨在 src/services/avatar.ts 中展示了一些实用的工程化细节。
懒加载与超时兜底
SDK 脚本是通过懒加载注入的,避免阻塞页面首屏渲染。代码中设置了一个 15 秒的超时定时器,如果脚本加载失败或超时,会主动清理资源并抛出错误,而不是让页面一直卡在白屏状态。
script.src = 'https://media.xingyun3d.com/xingyun3d/general/litesdk/xmovAvatar_e2e@latest.js'
const timer = setTimeout(() => {
script.remove();
reject(new Error('厨师 SDK 加载超时'))
}, 15000)Generation 令牌机制
在网络不稳定的情况下,用户可能会频繁点击“重连”。如果不加控制,旧连接的回调和新连接的回调可能会交叉执行,导致界面状态混乱。云厨使用了一个递增的 generation 令牌。每次发起新连接时,令牌加一。所有的回调函数在执行前,都会检查当前的令牌是否与最新连接一致。如果不一致,直接丢弃该回调。这种简单的机制有效避免了状态污染。
连接即问候
一旦连接成功,系统会立即调用 agent.ask(),附带一段精心设计的系统提示词(System Prompt),让云厨主动向用户问好,并引导用户勾选食材。这一步不仅提升了用户体验,也确保了数字人在空闲状态下有一个明确的初始状态,避免字幕残留或状态不明。
厨师的人设:不只是回答问题
AI 厨师好不好用,很大程度上取决于它的“人设”。云厨的系统提示词非常具体,它不仅仅是一个问答机器,更被设定为一位“站在你旁边的厨房老师傅”。
提示词中明确规定了几条行为准则:
- 步骤化教学:讲菜谱必须分步,每一步都要说明做什么、用什么火候、需要多久。不能说“煮一会儿”,而要说“小火慢炖 60 分钟”。
- 术语通俗化:遇到“焯水”、“勾芡”等专业术语,首次出现时必须用括号标注通俗解释,比如“焯水(开水烫一下)”。
- 控制篇幅:每次回应控制在 3-5 句话,结尾留一个轻微的追问邀请。这是为了适应厨房快节奏的环境,用户没时间听长篇大论。
- 边界意识:明确告知用户这是科普演示,菜谱为家常做法,不提供专业营养建议。
这种人设约束,让 AI 的回答更加落地,减少了幻觉和废话,更符合真实烹饪场景的需求。
食材匹配:本地算法比大模型更快
虽然大模型很强大,但在某些场景下,传统的本地算法反而更高效。云厨内置了 6 道家常菜谱和 24 种常见食材。当用户在界面上勾选食材时,系统使用一个简单的本地匹配算法,计算每道菜谱的命中数量,并按匹配度降序排列。
export function matchRecipes(selectedIngredientIds: string[]): Recipe[] {
if (selectedIngredientIds.length === 0) return RECIPES.slice(0, 3)
return RECIPES
.map(recipe => {
const matchCount = recipe.ingredientIds.filter(id => selectedIngredientIds.includes(id)).length
return { recipe, matchCount }
})
.filter(x => x.matchCount > 0)
.sort((a, b) => b.matchCount - a.matchCount)
.map(x => x.recipe)
}如果你选了番茄和鸡蛋,番茄炒蛋会立刻排在第一位。这个过程在本地毫秒级完成,不需要等待网络请求,用户体验极其流畅。只有当用户点击“请云厨讲讲这步”或提出具体问题时,才会触发云端的大模型推理。
此时,系统会将当前的菜谱、步骤编号、操作说明、火候、计时等上下文信息打包,连同用户的问题一起发送给大模型。这样,AI 就能基于完整的上下文给出精准的建议,而不是泛泛而谈。
视觉设计:治愈系的厨房氛围
技术是骨架,视觉是皮肤。云厨采用了“奶油基底 + 番茄红”的配色方案。背景色选用暖色奶油(#fefcf8),强调色使用番茄红(#e63946),点缀色使用罗勒绿(#2d6a4f)和柠檬黄(#ffd60a)。字体选用 Segoe UI 搭配苹方/微软雅黑,整体营造出一种温暖、治愈的厨房氛围。
界面布局采用三栏式设计:
- 左栏:冰箱食材区,24 种食材分为蔬菜、肉类、蛋奶、调料、主食五类,用户通过勾选模拟从冰箱拿菜的动作。
- 中栏:核心烹饪区,上方显示推荐的菜谱卡片,下方是分步烹饪流。每一步都清晰标注了火候颜色标签(大火红、中火黄、小火绿、关火灰)和倒计时器。
- 右栏:AI 厨师面板,数字人在这里实时互动,下方提供快捷问题按钮,方便用户一键追问。
这种布局将信息层级梳理得非常清晰,用户在烹饪过程中,视线主要集中在中栏的操作指引上,遇到问题时自然转向右栏寻求 AI 帮助,符合人的直觉操作习惯。
结语:让每一间厨房都有 AI 厨师
云厨的案例证明,端到端具身交互智能不仅仅是一个技术概念,它确实能解决具体场景下的痛点。在厨房里,速度和自然交互比什么都重要。
通过一个 SDK 打通听、想、说、演的全链路,云厨实现了低于 500ms 的首字响应和自然的打断能力。这让 AI 从一个冷冰冰的查询工具,变成了一个能感知、能理解、能表达的“具身”助手。
未来,这个数字人厨师不仅可以存在于网页端,还可以迁移到厨房智能屏、甚至人形机器人上。载体在变,但核心的烹饪教学能力和交互体验可以无缝复用。或许不久之后,每个家庭的厨房里,真的都会有一位随叫随到的 AI 老师傅。