夏末的周六,你本来只是蹭省博一台空调。
进门时没抱什么期待:导览器要押金、讲解牌的字小到得贴着玻璃看、文创店里的丝巾冰箱贴一个模子刻出来的。你打算随便溜一圈,凉快够了就走。
可这篇想讲的,是你那天几点几分、分别都发生了什么------因为它最后,变成了一只寄到你家的礼盒。
而这一切的起点,是你在青铜馆一件春秋壶前面,莫名其妙站住的那几分钟。
那天陪你站着看壶的,不是讲解员,也不是语音导览,是一个叫青禾的智能体。她本住在拾遗工坊那块木色屏幕后面,此刻却借着一台展馆平板,跟你一块儿挤在展柜前。
09:47|你站在那件春秋青铜壶前,青禾还没开口
壶身上那一圈圈缠绕的、像蛇又不是蛇的东西,你看了有一会儿。
# 展柜图像流持续出帧,青禾先"看懂"你正盯着哪一块
def on_frame(frame, gaze):
pat = vision.detectPattern(frame, region=gaze.focus) # 蟠螭纹/云雷纹/兽面纹...
if pat.confidence < 0.6:
return # 认不准就闭嘴,等下一帧
brain.perceive({
"artifact": "春秋·蟠螭纹青铜壶",
"motif": pat.label, # 命中"蟠螭纹"这个母题
"gaze_dwell_ms": gaze.dwell(pat.bbox),
})
# 关键阈值:同一处纹样盯满 5 秒、身子还往前倾 → 该主动搭话了
if gaze.dwell(pat.bbox) > 5000 and gaze.leaning_in:
brain.proactive_open(pat.label)
注意最后那两行。持续感知不是"你说话我才看",而是"你盯着看了半天、没说出口,我也该搭个话"。就是这两行,让她没像个等关键词的搜索框,而是像个真会察言观色的人。
所以你那天"恰好"在她开口前一瞬往前倾了身、又盯着那块盯过了第五秒------她那句"你盯的这条啊",就是这么冒出来的。
而"认出是蟠螭纹"这一步本身就值一遭:它不是把博物馆说明牌再念一遍,是真的从画面里把母题识别出来,再回头去纹样库里对上寓意。
09:48|她开口了,但不是背讲解词
"你盯的这条啊,"她忽然在你耳边接了一句,"它在咬自己的尾巴。"
青禾肚子里有一套纹样库,但更值钱的是她知道什么能讲、什么不能编。螭龙自衔其尾,她先给你一个能抓住人的比喻------"古人把它盘成一圈、首尾相衔,是想说'转起来、断不了'"------然后立刻补一句边界:"不过'咬尾巴到底图个啥',学界也有不同说法,我不敢给你编一个标准答案。"朝代、寓意,有据可查才出口;拿不准就直说,绝不硬凑。

09:52|你追问:"这个纹样能做成杯垫吗?"
你其实打断了她的。
她那句"转起来、断不了"还说到一半,你脱口而出一句"能做成杯垫吗"。换普通导览,得等你把话讲完、再重新触发一条流程。青禾是当场收声------麦克风一直开着,所以话到嘴边能立刻咽回去,稳稳接住你的新问题:"能,这正好是我最拿手的。"
这种"讲到一半被人岔开、还能不慌不忙改口接新话题",行话叫 Barge-in 智能打断。它难的地方不在听,在于她说话和听话是同时进行的。
她一边把没讲完的比喻收住,一边已经把"能不能做杯垫"这句记进了刚起的设计上下文------你还没报预算,她却已经隐隐知道,这大概率不是买现成的,是要按你心意来的。
两版草图当场就起了:
coaster_request:
source_motif: 蟠螭纹 # 来自你正盯着的那件青铜壶
versions: 2
variant_A:
palette: [石青, 赭石, 描金] # 贴着原器的锈色走
material: 软木 + 吸水陶瓷
edge: 螭身盘绕做外圈
variant_B:
palette: [月白, 墨绿] # 你下一句会改的"素一点"
material: 胡桃木
edge: 自衔其尾收圆角
render: on_device # 端侧出图,网断了也在本地继续排
09:58|你说预算 80,还想要两款
"预算八十。"你说,"而且要两款,我送人。"
每报出一条,画面上那两张杯垫就当场重排一次:你说"素一点、别大红",配色整片降饱和;你说"要圆的",自衔尾那圈就顺势收成外轮廓;你说"八十、两款",她一边把尺寸压进成本区间,一边嘴上还在跟你讲为什么这么取舍。
关键在于她一边说、一边画,耳朵还没关。表达和感知是并行跑的,不是"我讲完你再说"的一问一答。
场合、收礼人、配色、材质、预算------她是一条一条问、你是一条一条答的,但草图从不等你把空全填完才出。你每落定一项,那张宣纸底上的杯垫就往前逼近一步,她还顺带跟你解释这一步为什么这么定。
所以你随时能插话、随时能改主意,她随时停得下手------上一句还在描金,下一句就被你拽回"素一点",笔也跟着淡下去。这正是那种"生成一段讲解音频发给你"的东西给不了的在场感。
到这儿为止,杯垫长什么样,其实已经被你俩你一言我一语地"聊"出来了------不是她替你选,是你把心意一句句喂给她,她一句句落成图。
10:04|馆里人挤人、信号只有两格,她没卡住
十点的青铜馆开始进旅行团,人贴人,你手机右上角只剩两格。
要是青禾那个 3D 形象、还有实时重绘的杯垫,都靠云端渲染好再推视频流过来,黄金周第一天就得垮给你看。但拾遗用的是端侧实时渲染:SDK 把画面下沉到你手机本地来画,网络只传轻量的交互参数------你说一句话、改一个配色,过去的是几个字节的意图,回来的也是参数,图在你自己设备上生成
10:11|她把两张稿子加进小程序,附了一份"你俩今天的对话摘要"
逛到这儿,你以为她要给你发一段"选购建议"收尾了。她没有。
她真的动手了:两张确认过的杯垫稿连配色、材质、预算,一起写进了你小程序的购物车和一份待付定金的定制订单;顺带把"这位偏好素雅、忌大红"记进了她的长期记忆;最后附上的,不是模板话术,是一份「你俩今天的对话摘要」------你什么时候停在哪块纹样前、追问了什么、改了几次配色,一条一条都在。
// 数字行动:不是"给你一段建议",是真的落库
await qinghe.act({
addToCart: [sketch_A, sketch_B], // 两款进小程序购物车
createOrder: { sku: "coaster-panchi", qty: 2, budget: 80, depositPaid: false },
writeMemory: { user: "你", taste: "偏好素雅、忌大红" },
attachSummary: transcript.digest(), // 附上"你俩今天的对话摘要"
});
普通导览的输出,停在一段讲解词上。青禾停在这儿:她把一次心动,落成了一条你能点"付款"的记录。到这里,那件春秋壶上原本没人接得住的好奇,已经被她接成了一份能下单的东西。
三周后|礼盒到家
快递那天,你其实差点忘了这回事。
拆开:胡桃木那款、月白墨绿那款,两枚杯垫躺在宣纸底纹的礼盒里,背面激光刻了"蟠螭"两个字,还夹着那张你俩的对话摘要卡。印厂真的把它做出来了------你那天在馆里随口的两句话,走了完整的下单、开模、生产。
身体换了,但那点蟠螭纹的知识、和你那份"偏好素雅"的记忆,一路跟着她走。上周你去别的馆,她隔着那台机器人的身体,都还记得你嫌大红俗。从屏幕里画一张图,到把实物做出来寄到你家门口,中间那一步,是同一双会画的手接着干完的。
一枚小小的杯垫,从一块纹样走到你手里,走完了"被看见---被讲明白---被设计---被下单---被生产---被送达"这一整条路。路的每一段,都是同一个青禾接上的。
你甚至没再回看过一次那个对话------她把偏好存得太牢,以至于下回你路过拾遗,只要一句"还是上回那种",她就能顺着往下接
你上一次在博物馆被一件文物"勾住"、却没人能给你多讲两句,是什么时候?如果有个 AI 能当场把你心动的那个纹样,画成一份三周后真的寄到家的礼盒------你愿意为它多留那二十分钟吗?