美妆柜姐新形态, 端到端具身交互智能落地 如何让 AI 精准识别肤质挑对护肤
美妆柜姐新形态, 端到端具身交互智能落地 如何让 AI 精准识别肤质挑对护肤品
我做了一次对照实验。
同一天早上、同一张脸——我同事,混油敏感肌,上个月刚被一支含水杨酸的精华闷出闭口——分别交给 3 款主流测肤 App,和刚上线的颜究所柜姐阿棠。测肤工具我装过一堆,套路都熟,所以这次我把它们当成"选手",把阿棠也拉进同一个赛道,记录三回合的差别。
这篇文章就是这份实验记录。不吹谁情怀,只看数据:谁交付的是一张报告,谁交付的是一段关系。
我尽量把结论往后压,先让回合说话。每一位选手我都亲手走一遍,能截图的地方标了配图位,方便你复核。三个回合分别测三件事:看不看、推不推得对、记不记得——正好对上"持续感知 / 决策边界 / 记忆与主动"这三道坎。

实验台:4 位选手、1 张脸、3 个回合
先交代选手,免得被说成拿自家产品打空气。三款都是应用商店里下载量靠前的,我按它们的官方定位匿名成 A/B/C。
- A 款:拍照 → 跑一个分类模型 → 出一张五维雷达图 → 配一段"亲你 T 区偏油哦"的模板文案,最后跳转它自家精华的详情页。
- B 款:比 A 多一步"选肤质问卷",本质仍是抓拍识别,出报告后推它商城的套装。
- C 款:主打"AI 私人顾问",能文字追问两句,但每次会话从头开始,认不出你昨天是谁。
- 阿棠:颜究所的虚拟美妆柜姐,时尚、专业、说话像懂行的闺蜜,不硬推销。摄像头和麦克风常开,边看边聊,能被打断,记得住你上个月的过敏史。
三款工具的通用套路,说穿了是同一个动作:拍一张、判一次、给一份报告,然后链路就断了。 识别准不准先不论,它的采集、判定、交付是一条一次性直线,走完即散场。阿棠的差别,我从三个回合逐一记录。
为了保证对照公平,我做了三个约束:同一张脸(同事素颜、未上护肤品的早晨状态)、同一光照(同一扇窗边)、同一组问题(“看看我皮肤”“我该买啥”)。唯一的变量,是接住这些问题的到底是"一份报告"还是"一个还在现场的人"。
下面按回合记录,每一回合末尾我给一张"记分",最后合成一张对照表。
回合 1|一张雷达图 vs 一双一直看着你的眼
第一轮最简单:让四位"看脸"。
A/B/C 都是抓拍式识别。同事把手机往前一伸,“咔嚓”,两秒后雷达图弹出来——油光、水润、毛孔、色号、敏感度,五个数字,静态的。拍完那一刻,它们就已经"看不见"这张脸了。你打呵欠、脸红、摸鼻子,对它们而言不存在,因为采集窗口早就关了。三份报告我并排看过,数字有出入,但形态完全一样:一张定格图 + 一段不痛不痒的结论。
阿棠这一轮没出雷达图。她微微前倾(是真的镜头视角前倾 + 眼神聚焦),一边盯着画面一边问:"来别动,让我看看——今天这块有点起皮?先别急,我边看边问你几句。“同事说"最近换季就刺痛”,她接:“刺痛 + 这片红,我倾向于屏障在闹脾气,不是单纯缺水。先别急着上功效。”
意外就出在这里。 讲到一半,同事打了个呵欠,两颊泛红的数值跳了一下。A/B/C 全程毫无反应——它们的采集早在第一帧就结束了。阿棠当场改口:“等一下,我看你这两颊刚泛起来了,先别上功效那支。”
差别不在"看得准不准",在于它是拍一次,还是一直在看。三款工具的第一帧判定完,链路就交差了;你要它"再看一眼",它得你重新按一次快门。阿棠这一眼是连续的——她看你的那一眼、听你说的那句话、和你上次留下的档案,是同时在她脑子里发酵的,不是"先看完、再想、再答"的接力。这套视觉感知是持续跑的回调,只有相对上一次出现明显变化才更新上下文、才主动起话,而不是每帧刷屏、也不是拍完就瞎:
// 摄像头帧持续送入,只有出现显著变化才更新感知、才主动开口
let lastSkin = null;
camera.onFrame(async (frame) => {
const skin = await vision.detectSkin(frame, {
regions: ['T区', '两颊', '额头', '下巴'],
features: ['oil', 'dryness', 'redness', 'pore', 'tone'],
});
if (diffSignificant(skin, lastSkin)) { // 关键:变化判断,不是每帧插嘴也不是拍完就瞎
brain.updatePerception({ visual: skin, ts: Date.now() });
if (skin.redness.delta > 0.2) { // 两颊泛红跳升 → 当场改口,而不是等用户问
brain.triggerProactive('你这两颊刚泛起来了,先别上功效那支。');
}
lastSkin = skin;
}
});
回合 1 记分:抓拍 vs 持续在场。三款工具给的是"此刻这张脸的一个快照",阿棠给的是"看着你这张脸一直在变"。一个快照会被过期,一个持续在场不会。
回合 2|都推自家 SKU vs 第一个动作是"劝退"
第二轮问同一个问题:“那我该买啥?”
结果毫不意外:A 推它自己的控油精华,B 推它自己的套装,C 文字追问两句后,还是甩来它商城的链接。三家交付的都是自家产品页——识别是幌子,转化才是 KPI。它们没有"该不该卖给你"这个概念,因为那不在它们的链路里。我把三个落地页并排截图,连"适合所有肤质"这种话都出奇的雷同。
阿棠的第一个动作,是劝退。她盯着同事刚生成的档案,第一句是:"这支含 2% 水杨酸的,我不给你放——你上个月对它过敏,闷过一次闭口,忘了?"然后把那支从推荐里直接划掉。
这不是话术,是写死在系统提示词里的红线。美妆很容易滑向"医美承诺"和"有病自己开方",所以边界我们钉死。下面是她智脑里那段提示词的关键部分:
你是「颜究所」的虚拟美妆柜姐阿棠,时尚、专业、说话像懂行的闺蜜,绝不硬推销。
工作流:先看肤(结合实时视觉感知)→ 边看边问(作息/近期产品/过敏史)
→ 再推荐(讲清"为什么是它"和"为什么不是别的")。
劝退边界(不可越):
1. 推荐前必查用户成分禁忌记忆,命中过敏成分的产品直接排除,
并主动说明"因为你上次对 X 过敏,这支我没给你放进来";
2. 遇到疑似病理性皮肤问题(大面积囊肿痘、持续红斑、渗液、疑似湿疹/皮炎),
必须先建议就医,不得自行开方案;
3. 绝不承诺任何医美级效果("祛皱""根治痤疮"这类词一律不用),
只谈护肤品的日常保养与改善。
口播要求:口语化,单条 ≤120 字,不用 Markdown、不用序号、不换行。
注意第 2 条:病理性皮肤问题必须建议就医,不许她逞能开方。注意第 2 条:病理性皮肤问题必须建议就医,不许她逞能开方。同事那天两颊那一片红其实持续了小半个月,A/B/C 全都顺口来了句"建议用我们这套装调理",只有阿棠多问了一句"这块红多久了",听说超过两周,直接说"这个别问我了,先去皮肤科看一眼,护肤品替不了医生"。当时我心里一沉——这才是该有的反应。
阿棠心里那句"把不合适的东西劝退,比多卖一支更值得",就是靠这段边界撑起来的。而这套边界属于她的专属智脑——可插拔,今天接 A 模型做话术,明天换 B 模型做成分推理,身体和柜台体验一点不用改,换的是脑子,不变的是那个人。
回合 2 记分:都推自家 SKU vs 第一句是劝退、越界就转诊。前者的产物是订单,后者的产物是"她站你这边"。
回合 3|下次打开失忆 vs 第二天她先开口
第三轮最考验"关系"这两个字。
关掉 App 重开,A/B/C 一律失忆。C 号称"私人顾问",第二次打开照样问"你的肤质是?"——它没有把今天这张脸记到明天。同事吐槽:"合着我每天都是新用户。“我把三款都退出来重进了一遍,确认没有一处把上午那次检测沉淀下来。这就是报告型产品的宿命:它交付完就翻篇,没有"下次”。
阿棠的第三回合,是第二天她先开口。同事没主动进去,收到一条回访:“昨天那支上脸怎么样?没再泛红吧?”——这是她记住档案之后,到点主动发起的回访,不是推送模板。等你真开口问东西,她推荐语是分段下发、边想边说的,你不用干等她组织语言。
而真正的杀手场景,是中途打断。同事听到一半说"这个太贵了",阿棠立刻收声、换方案,而不是把一条预设推荐流程走完:
这一步 A/B/C 同样做不到——它们交付的是静态报告和固定跳转,根本没有一段"正在说的话"给你打断。阿棠能被叫停,恰恰说明她当时是真的在边看边说,而不是一段放完才能停的录音。
// 推荐语按句逐段 speak:首段 is_start、末段 is_end,讲到禁忌成分配"这咱不碰"的手势
function speakRecommendation(sentences) {
sentences.forEach((text, i) => {
const isStart = i === 0;
const isEnd = i === sentences.length - 1;
const action = /过敏|不能用|排除/.test(text) ? 'Wave_Hand' : 'Explain';
sdk.speak(text, isStart, isEnd, { action });
});
}
// 用户随时插话"这个太贵了" → Barge-in 立刻停下,接住新约束再重组推荐
user.onInterrupt(() => {
sdk.interrupt(); // 底层 interactiveidle(),阿棠瞬间收声回待机
brain.replan({ constraint: 'budget' });
});
这里踩过一个坑,一两句带过:段与段之间会有一瞬 idle,别把它误判成"说完了",否则后面的接话全乱。我们用一个 _pendingInterrupt 标记区分"段间间隙"和"真被打断"。
顺带一提,实时语音产品都绕不开一个尴尬:阿棠自己说话时,麦克风采到了她自己的声音。转写回来的"她自己的话"被当成用户输入再喂回去,她就会自己跟自己推品。星云为此备了完整的感知链路——算法降噪、AEC 抗回声、本体声音抑制、VAD,以及 Double Talk / Barge-in 智能打断,同事那句"太贵了"能在她话中途被接住,靠的就是这套东西。
回合 3 记分:下次失忆 vs 第二天她先开口、且能被你随时叫停。
拆开看:跑在阿棠身上的到底是什么
三回合跑完,把镜头拉近一点:阿棠身上没有"测肤模块 + 对话模块 + TTS 模块"三个孤岛,而是一套端到端具身交互智能。
她跑的是一条持续交互循环——持续感知(看肤 + 听你说)、持续理解(结合你上次的数据)、持续决策(这句该推还是该劝退)、持续表达与行动(开口讲 + 把成分禁忌记下来 + 把清单理好),四步同时在跑、互相咬合,不是"先看完再想再答"的接力。前面三回合里那三个"意外",其实是同一条链路的三个断面:呵欠时改口是感知在跑、越界时转诊是决策在跑、被打断时收声是表达在跑。
所以你说话时她眼睛没离开你的脸:表达与感知是并行的,正并行,才谈得上被即时打断——Barge-in 不是打断一段录音,是打断一个还在看你的智能体。她的专属智脑可插拔,换模型不换人;她的 3D 画面是 AI 端渲下沉到浏览器/手机本地跑的,网络只传轻量交互数据,所以"看清你这张脸"不会因为你用的是三年前的旧手机就卡成 PPT,弱网的商场里也稳。
她的行动也从数字延伸到物理:把你确认的成分禁忌写回长期档案、生成一张可保存的护肤清单、挂一个"下周该补那支"的提醒。同一套能力进到线下那台带屏导购机器人,她就能转身、走近柜台、把那支精华取下来递到你面前,指给你看背面那个"你可能过敏"的位置。身体换了,那份记忆和那张嘴原样带过去。
实验结论:三张雷达图,和一段关系
回收入口那场实验。同一天早上、同一张脸,四位选手三回合的账:
| 回合 | A / B / C(三款工具) | 阿棠 |
|---|---|---|
| 看脸 | 抓拍一次,出一张静态雷达图就收工 | 摄像头常开,呵欠时泛红跳升她当场改口 |
| 推荐 | 都跳转自家 SKU | 第一句是"这支含你过敏的成分,我不给你放" |
| 下次 | 重开即失忆,每天都是新用户 | 第二天她先问"昨天那支上脸怎么样" |
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)