全屋一句话联动: 端到端具身交互智能落地 的智能家居规划师方案拆解
·
我有个朋友去年装修,全屋智能砸了小六万。结果媳妇一句"晚上起夜别开大灯",他打开 App 翻了四层菜单,对着一堆"触发条件—执行动作"的英文缩写发了半小时呆,最后还是摸黑去开床头那盏。六万块买了个"能连手机",没买到"会过日子"——设备是散的,生活是整的,缺的不是又一个 App,而是一个听得懂人话、还能真替他把这些散家伙收拾利落的规划管家。小满就是干这个的:她像个跟你算过账的实在人,问的是日子怎么过而不是设备型号,一句"我早上七点起,怕吵醒我妈",她直接翻成"卧室灯渐亮、客厅保持熄、窗帘开到三成"。而她和"给你出个建议清单"的助手最大的分水岭,是建议谁会给,把建议变成"你家那盏灯现在真的会因为你起夜而亮起来"才难——她把自然语言先编译成一份可读、可回滚的场景 DSL,再一边讲解、一边真的把规则写进网关。

// 自然语言 → 场景编排 DSL(先规划,不直接操作设备)
const scene = await xiaoman.planScene(`
老人晚上起夜,从卧室到卫生间这条走廊,脚一落地灯就亮,
亮度低一点别晃眼,人走后两分钟自动关。`);
// scene = { trigger: { device:'bedroom_motion', window:'22:30-06:00' },
// actions: [{ target:'corridor_light', op:'on', brightness:15 }],
// autoOff: { after:'2min' } }
// 边讲解边下发:speak 与设备 action 并行,讲解说到哪、设备配到哪
async function deployScene(scene, gw) {
for (const step of xiaoman.narrate(scene)) { // 生成口播分句
xiaoman.speak(step.text, { isStart: step.first, isEnd: step.last,
action: 'Present' }); // 数字人实时讲解
if (step.apply) {
const ok = await gw.writeRule(step.dslFragment); // 真的写进网关
log.push({ scene: scene.name, frag: step.dslFragment, ok });
}
}
}
// Barge-in:用户插话即刻停当前讲解,接住需求后重排场景
xiaoman.onUserInterrupt(async (text) => {
xiaoman.interrupt(); // 底层停当前口播,回到待机
const patch = await xiaoman.revise(currentScene, text); // 增量改 DSL
// patch → 给 corridor_light 增加 fadeOut: { to: 0, over: '30s' }
await redeployOnly(applyPatch(currentScene, patch)); // 只重下发变化的设备
xiaoman.speak(`改好了,改成先缓 ${'30'} 秒慢慢暗,不是一下子黑。`,
{ action: 'Nod' });
});
// 边讲解边下发:speak 与设备 action 并行,讲解说到哪、设备配到哪
async function deployScene(scene, gw) {
for (const step of xiaoman.narrate(scene)) { // 生成口播分句
xiaoman.speak(step.text, { isStart: step.first, isEnd: step.last,
action: 'Present' }); // 数字人实时讲解
if (step.apply) {
const ok = await gw.writeRule(step.dslFragment); // 真的写进网关
log.push({ scene: scene.name, frag: step.dslFragment, ok });
}
}
}
// Barge-in:用户插话即刻停当前讲解,接住需求后重排场景
xiaoman.onUserInterrupt(async (text) => {
xiaoman.interrupt(); // 底层停当前口播,回到待机
const patch = await xiaoman.revise(currentScene, text); // 增量改 DSL
// patch → 给 corridor_light 增加 fadeOut: { to: 0, over: '30s' }
await redeployOnly(applyPatch(currentScene, patch)); // 只重下发变化的设备
xiaoman.speak(`改好了,改成先缓 ${'30'} 秒慢慢暗,不是一下子黑。`,
{ action: 'Nod' });
});```
配完她还会回头验一句"你下来走一趟试试,脚落地看亮不亮"。更实在的是可回滚、可增量:哪一天你插一句"我媳妇怕黑,别两分钟关,关之前先缓三十秒慢慢暗",她能立刻停下当前讲解,认得"只改了走廊这盏灯",只重下发变化那台,别的一律不动。这套"听人话 → 译成蓝图 → 动手配好 → 一句话打断重排"的循环跑在端侧渲染上,所以普通宽带也开口快、被打断停得住。说到底,智能不在"连了多少台设备",而在有没有谁把你的日子听进去、还肯动手替你收拾利落。
---
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)