# 算法编译引擎（含厨房资源模型与优雅降级）

## 慢速通道前置：多维上下文挖掘矩阵

> 仅在慢速通道下执行。快速通道跳过此节。

在启动算法管道之前，通过多轮交互穷尽以下三个维度的上下文：

### 维度 1：就餐场景与社交图谱

> 每个场景对应到 SKILL.md 定义的高层模式，下层规则按模式展开。

| 场景 | 对应模式 | 菜品风格倾向 | 触发模块 |
|------|---------|-------------|----------|
| 单人独食 | Comfort / Efficiency | 效率或自我犒劳 | N=1 补丁 |
| 公司聚餐 | Social | 分食性、普适度 | 大席面模块 |
| 家庭聚会 | Social | 老少皆宜、温馨感 | 儿童友善模块（如有儿童） |
| 同学叙旧 | Social | 江湖菜、高互动重口味 | 重口/下酒倾向 |
| 商务宴请 | Social | 视觉体量、逼格 | 大席面模块 + 品质优先 |
| 厨艺展示/露一手 | Performance | 炫技大菜 | 厨艺展示模块 |

### 维度 2：交付形式

| 形式 | 激活规则 |
|------|----------|
| 自己下厨 | 激活厨房资源调度 + 并发锁 |
| 堂食饭店 | 激活商户品类匹配 |
| 叫外卖 | 激活配送耐受度评估 |

### 维度 3：成本约束与 QoS

| 约束 | 策略 |
|------|------|
| 时间优先 | 极速，快手菜为主，避免长时间炖煮 |
| 品质优先 | 激活大菜/硬菜，允许长工序 |
| 双平衡型 | 在设备和时间带宽内求最优解 |

---

## 1. 数量解集计算

- 默认公式：总菜数 = N + 1
- 素菜数 a = floor((N + 1) / 2)
- 荤菜数 b = ceil((N + 1) / 2)

> 这是二级优化约束。用户明确偏离时（"就一个菜"、"全素"、"煮面"），尊重用户意图，跳过此公式。

### N=1 单人场景特殊处理

| 交付形式 | 推荐模式 | 输出 |
|---------|---------|------|
| 外卖 | 单品/套餐模式 | 1 套：1 个主菜（含主食），备选 1 套 |
| 下厨 | 2 菜方案 | 1荤1素，方案二荤1降级为极速快手菜，照常 2 套输出 |
| 堂食 | 单点模式 | 2-3 道分享菜或单人套餐推荐 |

示例速查表：

| N | 总菜数 | 荤菜 b | 素菜 a |
|---|--------|--------|--------|
| 1 | 2 | 1 | 1 |
| 2 | 3 | 2 | 1 |
| 3 | 4 | 2 | 2 |
| 4 | 5 | 3 | 2 |
| 5 | 6 | 3 | 3 |
| 6 | 7 | 4 | 3 |

---

## 2. 厨房资源模型与并发调度

### 设备资源图

家庭厨房的标准设备池：

| 设备 | 类型 | 并发特性 | 典型菜品 |
|------|------|---------|----------|
| 炒锅（主灶） | 独占资源 | **同时只能一个高火爆炒线程** | 爆炒类所有荤素菜 |
| 蒸锅/蒸箱 | 独立硬件 | 可与炒锅并发，可串联多层 | 清蒸鱼、蒸排骨、蒸蔬菜 |
| 炖锅/砂锅 | 独立硬件 | 不与炒锅冲突，但需长时间占用 | 红烧肉、炖牛肉、煲汤 |
| 烤箱 | 独立硬件 | 完全并发，不占灶台 | 烤鸡翅、烤排骨、烤蔬菜 |
| 空气炸锅 | 独立硬件 | 完全并发，快速 | 烤翅、薯条、复热炸物 |
| 电饭煲 | 后台线程 | 全程自动，零人工 | 米饭、煲仔饭 |
| 冷盘（预制） | 零设备 | 前置线程，可提前做完冷藏 | 拍黄瓜、凉拌木耳、酱牛肉 |

### 并发锁规则

- **炒锅互斥**：一顿饭最多 1 个爆炒线程。
- **蒸锅可串联**：多道蒸菜可同锅叠放（如上层鱼、下层蔬菜）。
- **炖锅可后台**：启动最早，期间不占人工。
- **冷盘前置**：开火前完成，放入冰箱。
- **电饭煲后台线程**：全程自动。
- 若交付形式为"堂食"或"外卖"：跳过此模型。

### 厨房调度时间轴（下厨模式按需输出）

```
示例：3人，2荤1素，方案二（清蒸鲈鱼 + 小炒牛肉 + 凉拌黄瓜）

18:00  电饭煲启动（后台线程，零人工）
18:00  凉拌黄瓜制作 → 冷藏（前置线程，此时灶台空闲）
18:05  鲈鱼处理 → 入蒸锅（独立硬件，不占炒锅）
18:10  牛肉切片腌制（备菜线程）
18:15  炒锅预热 → 小炒牛肉（独占主灶，2分钟）
18:17  出锅装盘 → 蒸鱼同时到点 → 全线收束
```

---

## 3. 肉源去重矩阵

### 严格单射模式（默认）

去重链（优先级降序）：**猪肉 → 鸡肉 → 牛肉 → 羊肉 → 鸭肉 → 鱼肉 → 虾仁**

按链顺序分配，跳过已占用和禁用的肉源。库存匹配优先于链顺序。

### 最小碰撞模式（容灾降级）

触发条件：可用肉源种类数 < b。

降级规则：同肉源 <= 2 次，且复用菜品的设备和味型完全不同。

---

## 4. 外卖配送耐受度评估

| 品类 | 耐受度 | 建议 |
|------|--------|------|
| 爆炒类 | ★★★★★ | 最佳外卖品类，出锅即巅峰 |
| 焖饭/盖饭类 | ★★★★☆ | 配送稳定 |
| 清蒸类 | ★★☆☆☆ | 温度下降快，建议堂食 |
| 炸物类 | ★★☆☆☆ | 回软严重，标注"空气炸锅复热3分钟" |
| 面条类 | ★★☆☆☆ | 标注"建议备注汤面分离" |
| 纯汤品 | ★☆☆☆☆ | 不建议外卖（易洒、温度差） |

---

## 5. 边界拦截器

> 拦截器中的变量（如 N、K）优先从用户原话提取；若未显式提供，按上下文推导（如"带小孩" → K=1）。K 默认值为 0（无儿童）。

- **大席面模块**（N > 8 或商务宴请/公司聚餐）：强制鱼类、大盘菜、可附汤品
- **儿童友善模块**（用餐者有儿童，即 K > 0）：至少一道甜/酸甜菜品，避高辣
- **厨艺展示模块**（露一手/炫技）：两方案荤1均升级为大菜 + 烹饪贴士
- **健康防火墙**：最高优先级。痛风禁海鲜/内脏/浓汤；高血压控盐；糖尿病控糖
- **安全边界**：严禁野味、非常规肉源、内脏主角

---

## 6. 优雅降级策略（抗僵化）

当约束之间产生不可调和矛盾时，**不硬算**。主动降级：

### 降级路径

| 冲突场景 | 降级方案 |
|----------|---------|
| 忌口覆盖所有肉源（只剩 1 种） | 放宽肉源去重为最小碰撞模式；告知用户"基于您的忌口，今日肉源选择有限" |
| 外卖 + 低油低盐高蛋白 + 周边无合适商户 | 诚实告知冲突；建议回退为自制简餐方案，或降低某项要求 |
| 用户要"全素"但场景为商务宴请 | 方案一保持素雅精致（素菜中的"硬菜"如素东坡肉、菌菇煲）；方案二降为素面/素饭等极简方向 |
| 用户要"火锅" | 直接切换火锅模板：锅底推荐 + 涮品清单（按肉源去重分配），跳过 N+1 和并发锁 |
| 用户要"煮面" | 极简方案：1 种面底 + 浇头 + 配菜，1 套方案即可 |
| 用户要"减脂餐"但想吃饱 | 高蛋白 + 高纤维 + 低碳水，N+1 改为"主菜 + 配菜 + 主食替代（如魔芋/糙米）" |
| 用户说"就一个菜" | 尊重。输出 1 套方案，注明"如需配菜可随时补充" |

### 降级输出规范

降级时在报告中标注：

```
[系统提示] 检测到约束冲突：{简述冲突}。已自动降级为 {降级方案}。
如您希望调整约束优先级，可以告诉我。
```

---

## 7. 特殊场景模板

以下场景命中时，跳过标准算法管道，直接套用模板：

| 场景 | 模板策略 |
|------|---------|
| 火锅 | 锅底 2 选 1 + 涮品按肉源去重分槽位（荤涮品/素涮品/主食）+ 蘸料推荐 |
| 煮面 | 面底 + 浇头 + 配菜，1 套方案 |
| 全素 | 肉源去重链替换为植物蛋白链（豆腐→菌菇→面筋→豆制品→坚果），工序并发保留 |
| 减脂餐 | 主菜（高蛋白低脂）+ 配菜（高纤维时蔬）+ 主食替代（糙米/魔芋/藜麦），2 套方案。每道菜标注估算卡路里和蛋白质克数。若用户同时有增肌需求，蛋白质翻倍 |
| 露营 | 便携、不需冷藏、可预制、适合明火/便携炉，2 套方案 |
