当你难过的时候,AI 该推荐什么菜?
如果一个聊天机器人能感受到你的悲伤,然后推荐一碗热粥——这不是科幻,而是心旅小馆(SoulSync Bistro)正在做的事。
这个插件是 SoulSync 情感引擎的「美食伴侣」,通过截取 LLM 回复分析情绪,然后从本地 4000 道菜谱中推荐合适的美食。所有数据本地存储,运行时零网络依赖。
核心架构:情绪到美食映射
心旅小馆定义了 5 种情绪与美食的映射关系:
情绪 | 主题 | 示例方向 |
|---|---|---|
喜悦 | 庆祝餐 | 硬菜、烤焗、虾、牛排 |
悲伤 | 治愈甜品 | 甜品、粥、汤、软糯 |
愤怒 | 释放辣味 | 川菜、香辣、下饭 |
焦虑 | 安神清淡 | 清淡、蒸、粥、汤 |
期待 | 创意尝鲜 | 日式、意式、法式、异国 |
本地菜谱引擎
菜谱引擎是核心组件,关键设计:
Bigram 倒排索引:搜索时先取交集候选,再精确校验
情绪索引:mood_hint_index 预计算,O(1) 判断菜是否适配当前情绪
LRU 缓存:search 和 match_mood 结果缓存 512 条
# 情绪适配判断:O(1) 索引查询
def is_mood_match(self, recipe, emotion):
idx = self._id2idx.get(id(recipe))
if idx is not None:
return idx in self._mood_hint_index.get(emotion, ())
return emotion in (recipe.get('mood_hint') or [])python反馈闭环与口味档案
心旅小馆实现了完整的反馈闭环:
推荐去重:3 天内不重复推荐同一道菜
个人反馈:/好吃 +0.1、/不好吃 -0.3,权重随天数衰减
口味档案:忌口(不吃香菜/海鲜/辣)硬排除,偏好(喜欢面食/烧烤/清淡)+0.15/项加权
季节加权:春笋/绿豆/羊肉等时令食材命中 +0.1~0.2
食材反查
通过 /家里有 鸡蛋,番茄 指令,按手头食材反查可做菜:
80+ 别名匹配:西红柿与番茄、五花肉与猪肉等
基础调味料豁免:盐/糖/油/葱姜蒜不计入缺失
覆盖度降序:齐活菜优先,缺不超过 3 项标注
「鱼香肉丝不会被海鲜忌口误伤」——通过 name_hits 索引加豁免词机制,实现了精准的语义匹配。
性能数据
指标 | 数值 |
|---|---|
总菜谱 | 4000 道 |
食材反查延迟 | 小于 10ms/次(v1.8 优化后) |
标签覆盖 | 100%(4000/4000 道) |
情绪标注 | 喜悦/悲伤/愤怒/焦虑/期待 五类全覆盖 |
© 2026 Yahajiang. 本文采用 CC BY-NC-SA 4.0 许可协议,转载需注明出处。