{"id":"4921f583-297b-41d7-a3b6-60852cf63180","slug":"cookhero","kind":"mcp","name":"CookHero","summary":"CookHero是一个基于 LLM + RAG + Agent + 多模态的智能饮食与烹饪管理平台，支持智能菜谱查询、个性化饮食计划、AI 饮食记录、营养分析、Web 搜索增强，以及可扩展的 ReAct Agent / Subagent 工具体系，帮助厨房新手轻松成为“烹饪英雄”。","owner":"Decade-qiu","repoUrl":"https://github.com/Decade-qiu/CookHero","license":"Apache-2.0","licenseTier":"permissive","trust":"community","stars":628,"match":null,"fewStars":false,"format":"mcp","createdAt":null,"addedAt":"2026-10-14T05:37:26.177Z","logoUrl":"https://avatars.githubusercontent.com/u/74434779?u=b4ada4b5ac965c55a15fe9cb4f5a6ac2ee103daf&v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["search","databases"],"tags":["ai-chatbot","cooking-assistant","langchain","milvus","rag","web-search","agent","subagents"],"runtime":"binary","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-14T05:47:36.162Z","sample":false,"url":"https://conduits.dev/tools/cookhero","language":"Python","transports":["stdio"],"install":{},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"<div align=\"center\">\n\n<img src=\"./docs/image.png\" alt=\"CookHero Logo\" width=\"512\" />\n\n**智能烹饪与饮食管理助手 · 你的个性化饮食英雄**\n\n[![Python](https://img.shields.io/badge/Python-3.12+-blue.svg)](https://www.python.org/)\n[![FastAPI](https://img.shields.io/badge/FastAPI-0.122-009688.svg)](https://fastapi.tiangolo.com/)\n[![LangChain](https://img.shields.io/badge/LangChain-1.1-green.svg)](https://www.langchain.com/)\n[![Milvus](https://img.shields.io/badge/Milvus-2.6-orange.svg)](https://milvus.io/)\n[![NeMo Guardrails](https://img.shields.io/badge/NeMo%20Guardrails-0.12-76B900.svg)](https://github.com/NVIDIA/NeMo-Guardrails)\n[![RAGAS](https://img.shields.io/badge/RAGAS-0.2-purple.svg)](https://docs.ragas.io/)\n[![License](https://img.shields.io/badge/License-APACHE%202.0-blue.svg)](LICENSE)\n\n简体中文 | [English](./docs/README_EN.md)\n\n---\n\n</div>\n\n<div align=\"center\">\n<p align=\"center\">\n  <img src=\"./docs/agent.jpg\" width=\"48%\">\n  <img src=\"./docs/demo_2x.gif\" width=\"48%\"/>\n  <img src=\"./docs/diet.jpg\" width=\"48%\">\n  <img src=\"./docs/statistics.jpg\" width=\"48%\">\n</p>\n</div>\n\n---\n\n## 📖 项目简介\n\n**CookHero**（烹饪英雄）是一个融合 LLM、RAG、Agent、多模态与营养数据分析的个性化饮食管理平台。它不仅是菜谱库，更是一位能陪你做计划、做记录、看数据、给建议的“饮食管理英雄助手”，帮助你把烹饪与健康目标变成可执行的日常。\n\n- 🔍 **智能问答**：解答烹饪技巧、食材搭配、营养知识等问题\n- 🍽️ **个性化推荐**：根据口味、目标和限制提供更贴合的菜品选择\n- 🗓️ **饮食计划**：按周规划三餐与加餐，形成可执行的饮食节奏\n- 🧾 **AI 记录**：文字/图片一键记录，自动估算热量与宏量营养\n- 📊 **营养分析**：每日/每周统计与计划偏差分析，持续优化习惯\n- 🧠 **深度理解**：多轮对话理解用户意图，输出精准行动建议\n- 🌐 **实时搜索**：结合 Web 搜索获取最新烹饪资讯和趋势\n\nCookHero 面向厨房新手、健身/减脂/控糖人群、健康饮食倡导者、过敏体质用户及家庭场景，致力于让烹饪更专业、更智能、更可持续。\n\n> 内部自带的食谱来源于[Anduin2017/HowToCook](https://github.com/Anduin2017/HowToCook)，感谢该项目的贡献者！\n\n---\n\n## ⚡ 技术亮点\n\n- **LLM + RAG 混合检索**：向量 + BM25 + Reranker 组合，配合多级缓存提速\n- **Agent ToolHub**：ReAct 推理 + 工具调用，支持 MCP 动态扩展\n- **Subagent 专家体系**：内置 + 用户自定义子代理，按需启用与编排\n- **多模态解析**：图片识别与饮食记录联动，覆盖烹饪与记录场景\n- **评估与可观测性**：RAGAS 质量评估 + LLM 使用统计 + 可视化看板\n- **安全与合规**：提示词注入防护、速率限制、结构化审计日志\n- **现代化全栈**：FastAPI + React + PostgreSQL + Milvus + Redis + MinIO\n\n## ✨ 核心功能\n\n### 1. Agent 智能饮食管家\n- **ReAct 模式**：实现推理 + 行动循环，支持自主决策和工具调用\n- **多模态支持**：支持上传图片，图片自动上传到 imgbb 持久化存储\n- **用户画像集成**：自动读取用户画像和长期指令，提供个性化饮食管理服务\n- **Subagent 子代理**：内置/自定义专家可作为工具被调用，独立 system prompt 与工具集\n- **Subagent 管理**：个人中心创建/启用/禁用，工具选择器支持 Agents 面板\n- **内置工具**：\n  - 饮食工具：计划管理、饮食记录、营养分析\n  - 知识库检索：调用内置 RAG 检索并返回可引用来源\n  - Web 搜索：集成 Tavily 搜索引擎，联网查询实时信息\n  - AI 图片生成：基于 DALL-E 3 等模型生成图片，自动上传到 imgbb 持久化\n  - 计算器：数学计算\n  - 日期时间：获取当前时间、时区转换\n- **MCP 协议支持**：支持用户自定义 MCP 服务器并配置鉴权头\n- **可扩展架构**：通过 AgentHub 统一管理 Agent、Tool 和 Provider\n- **上下文压缩**：自动压缩长对话历史，减少 Token 消耗\n- **实时反馈**：SSE 事件流，实时展示工具调用过程和结果\n- **执行追踪**：主 Agent 与 Subagent 轨迹分层展示，支持调试分析\n- **工具选择**：前端可动态选择工具与子代理\n\n### 2. 饮食计划与记录\n- 周视图管理早餐/午餐/晚餐/加餐，形成可执行的饮食计划\n- 计划餐次自动汇总热量与宏量营养\n- 一键标记已吃，计划自动转化为真实记录\n- AI 解析文字/图片饮食描述，自动估算营养信息\n- 支持餐次更新、复制与备注管理\n\n### 3. 营养分析与目标追踪\n- 每日/每周营养总览（热量、蛋白、脂肪、碳水）\n- 计划 vs 实际偏差分析，识别饮食习惯波动\n- 目标管理：卡路里/蛋白/脂肪/碳水目标\n- 数据来源标记：手动、AI 文本、AI 图片\n\n### 4. 智能对话式菜谱查询\n- 自然语言理解用户需求（如\"我想做一道低脂高蛋白的晚餐\"）\n- 支持多轮对话，记录上下文历史\n- 自动识别用户意图（查询、推荐、闲聊等）\n- 流式响应，支持实时显示生成内容\n\n### 5. 个性化知识库\n- 用户可上传私人食谱，系统自动分析并索引\n- 全局食谱库（来自 [HowToCook](https://github.com/Anduin2017/HowToCook)）与个人食谱融合查询\n- 支持 Markdown 格式食谱的智能解析\n\n### 6. 混合检索与重排序\n- **向量检索**：语义相似度匹配（基于 Milvus）\n- **BM25 检索**：关键词精确匹配\n- **元数据过滤**：根据烹饪时间、难度、营养成分等筛选\n- **智能重排序**：使用 Reranker 模型（如 Qwen3-Reranker）对结果二次精排\n- **多级缓存**：Redis + Milvus 双层缓存，提升响应速度\n\n### 7. 多模态支持\n- **图片识别**：支持上传食材/菜品/饮食图片进行智能识别\n- **意图理解**：结合图片和文字理解用户完整意图\n- **多种场景**：菜品识别、食材识别、烹饪指导、饮食记录、食谱查询\n- **灵活接入**：支持 OpenAI 兼容的视觉模型 API\n- **图片限制**：最多 4 张、单张 10MB（Agent/饮食记录场景）\n\n### 8. RAG 评估系统\n- **质量监控**：基于 RAGAS 框架的自动化评估\n- **核心指标**：忠实度（Faithfulness）、答案相关性（Answer Relevancy）\n- **异步评估**：后台异步执行，不影响响应速度\n- **趋势分析**：支持评估趋势查看和质量告警\n- **数据持久化**：评估结果存储于 PostgreSQL\n\n### 9. LLM 使用统计\n- **实时监控**：跟踪每个请求的 Token 使用量\n- **性能指标**：记录响应时间、思考时间、生成时间\n- **统计分析**：按用户、会话、模块统计使用情况\n- **工具追踪**：记录 Agent 工具调用名称\n- **可视化展示**：前端提供 LLM 统计数据页面\n\n### 10. 安全防护体系\n- **多层防护**：输入验证 → 模式检测 → LLM 深度检测\n- **提示词注入防护**：基于规则和 AI 的双重检测机制\n- **速率限制**：Redis 滑动窗口算法，按端点类型区分限制\n- **账户安全**：登录失败锁定、JWT 过期策略、安全响应头\n- **敏感数据保护**：日志脱敏、API Key 过滤\n- **安全审计**：结构化 JSON 审计日志，支持 SIEM 系统对接\n\n> 📖 详细安全架构请参阅 [安全策略文档](docs/SECURITY.md)\n\n---\n\n## 🚀 快速开始\n\n### 前置要求\n\n- **Python**：>= 3.12\n- **Node.js**：>= 18\n- **Docker** 和 **Docker Compose**（推荐）\n\n### 方法一：Docker 一键部署（推荐）\n\n1. **克隆项目**\n   ```bash\n   git clone https://github.com/Decade-qiu/CookHero.git\n   cd CookHero\n   ```\n\n2. **配置环境变量**\n   ```bash\n   cp .env.example .env\n   # 编辑 .env 文件，填入必要的 API Key\n   ```\n\n3. **启动基础设施**\n   ```bash\n   cd deployments\n   docker-compose up -d\n   ```\n   这将启动：\n   - PostgreSQL (端口 5432)\n   - Redis (端口 6379)\n   - Milvus (端口 19530)\n   - MinIO (端口 9001)\n   - Etcd (内部使用)\n\n4. **安装 Python 依赖并启动后端**\n   ```bash\n   cd ..\n   python -m venv .venv\n   source .venv/bin/activate  # Windows: .venv\\Scripts\\activate\n   pip install -r requirements.txt\n   \n   # 初始化数据库\n   python -m scripts.howtocook_loader\n   \n   # 启动后端服务\n   uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload\n   ```\n\n5. **启动前端**\n   ```bash\n   cd frontend\n   npm install\n   npm run dev\n   ```\n\n6. **访问应用**\n   - 前端：http://localhost:5173\n   - 饮食管理：http://localhost:5173/diet\n   - 后端 API：http://localhost:8000\n   - API 文档：http://localhost:8000/docs\n\n---\n\n## ⚙️ 配置说明\n\n### 1. 环境变量 (`.env`)\n\n创建 `.env` 文件（参考 `.env.example`）：\n\n```env\n# ==================== LLM API 配置 ====================\n# 主 API Key（所有模块的默认 Key）\nLLM_API_KEY=your_main_api_key\n\n# 快速模型 API Key（用于意图识别、查询改写等）\nFAST_LLM_API_KEY=your_fast_model_api_key\n\n# 视觉模型 API Key（用于多模态分析）\nVISION_API_KEY=your_vision_model_api_key\n\n# Reranker API Key（用于结果重排序）\nRERANKER_API_KEY=your_reranker_api_key\n\n# ==================== 数据库配置 ====================\nDATABASE_PASSWORD=your_postgres_password\n\n# Redis 密码（可选）\nREDIS_PASSWORD=your_redis_password\n\n# Milvus 认证（可选）\nMILVUS_USER=root\nMILVUS_PASSWORD=your_milvus_password\n\n# ==================== Web 搜索 ====================\nWEB_SEARCH_API_KEY=your_tavily_api_key\n\n# ==================== MCP 集成 ====================\n# 高德地图 MCP 服务 API Key\nAMAP_API_KEY=your_amap_api_key\n\n# ==================== 图片生成 ====================\n# OpenAI 兼容的图片生成 API Key（DALL-E 3 等）\nIMAGE_GENERATION_API_KEY=your_openai_api_key\n# imgbb 图床 API Key（用于图片持久化存储）\nIMGBB_STORAGE_API_KEY=your_imgbb_api_key\n\n# ==================== 安全认证 ====================\nJWT_SECRET_KEY=your_secure_jwt_secret_key\nJWT_ALGORITHM=HS256\n\n# 访问令牌过期时间（分钟）\nACCESS_TOKEN_EXPIRE_MINUTES=60\n\n# 刷新令牌过期时间（天）\nREFRESH_TOKEN_EXPIRE_DAYS=7\n\n# ==================== 速率限制 ====================\nRATE_LIMIT_ENABLED=true\nRATE_LIMIT_LOGIN_PER_MINUTE=5\nRATE_LIMIT_CONVERSATION_PER_MINUTE=30\nRATE_LIMIT_GLOBAL_PER_MINUTE=100\n\n# ==================== 账户安全 ====================\nLOGIN_MAX_FAILED_ATTEMPTS=5\nLOGIN_LOCKOUT_MINUTES=15\nMAX_MESSAGE_LENGTH=10000\nMAX_IMAGE_SIZE_MB=5\nPROMPT_GUARD_ENABLED=true\n```\n\n### 2. 主配置文件 (`config.yml`)\n\n`config.yml` 包含应用的核心配置：\n\n```yaml\n# LLM 提供商配置（分层：fast / normal / vision）\nllm:\n  fast:    # 快速模型（低延迟）\n  normal:  # 标准模型\n  vision:  # 视觉模型（多模态）\n\n# 数据路径\npaths:\n  base_data_path: \"data/HowToCook\"\n\n# 嵌入模型\nembedding:\n  model_name: \"BAAI/bge-small-zh-v1.5\"\n\n# 向量存储\nvector_store:\n  type: \"milvus\"\n  collection_names:\n    recipes: \"cook_hero_recipes\"\n    personal: \"cook_hero_personal_docs\"\n\n# 检索配置\nretrieval:\n  top_k: 9\n  score_threshold: 0.2\n  ranker_type: \"weighted\"\n  ranker_weights: [0.8, 0.2]\n\n# 重排序配置\nreranker:\n  enabled: true\n  model_name: \"Qwen/Qwen3-Reranker-8B\"\n\n# 缓存配置\ncache:\n  enabled: true\n  ttl: 3600\n  l2_enabled: true\n  similarity_threshold: 0.92\n\n# Web 搜索配置\nweb_search:\n  enabled: true\n  max_results: 6\n\n# 视觉/多模态配置\nvision:\n  model:\n    enabled: true\n    model_name: \"Qwen/QVQ-72B-Preview\"\n\n# 评估配置\nevaluation:\n  enabled: true\n  async_mode: true\n  sample_rate: 1.0\n\n# MCP 配置\nmcp:\n  amap:\n    enabled: true\n\n# 图片生成配置\nimage_generation:\n  enabled: true\n  model: \"dall-e-3\"\n\n# 图片存储配置（imgbb）\nimage_storage:\n  enabled: true\n\n# 数据库连接\ndatabase:\n  postgres:\n    host: \"localhost\"\n    port: 5432\n  redis:\n    host: \"localhost\"\n    port: 6379\n  milvus:\n    host: \"localhost\"\n    port: 19530\n```\n\n详细配置说明见 `config.yml` 文件中的注释。\n\n---\n\n## 🗺️ 未来规划 (Roadmap)\n\n- [x] **多模态支持**：食材图片识别、菜品识别 ✅\n- [x] **RAG 评估系统**：基于 RAGAS 的质量监控 ✅\n- [x] **安全防护体系**：输入验证、提示词注入防护、速率限制 ✅\n- [x] **LLM 使用统计**：Token 监控、性能分析页面 ✅\n- [x] **Agent 智能模式**：ReAct 推理、工具调用、会话管理 ✅\n- [x] **Subagent 专家体系**：内置与自定义子代理、可视化追踪 ✅\n- [x] **MCP 协议支持**：远程工具加载、高德地图集成 ✅\n- [x] **AI 图片生成**：DALL-E 3 集成、imgbb 持久化存储 ✅\n- [x] **饮食计划与记录**：周计划、已吃标记、AI 记录 ✅\n- [x] **营养分析与目标追踪**：每日/每周摘要、偏差分析 ✅\n- [ ] **语音交互**：语音输入查询、语音播报步骤\n- [ ] **社区功能**：用户分享、评分、评论\n- [ ] **智能食材管理**：冰箱清单、食材过期提醒\n- [ ] **AR 烹饪指导**：增强现实辅助烹饪\n- [ ] **更多 Agent 工具**：食谱搜索、营养计算、购物清单生成\n\n---\n\n## 🤝 贡献指南\n\n欢迎贡献代码、提出问题或建议！\n\n1. Fork 本项目\n2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)\n3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)\n4. 推送到分支 (`git push origin feature/AmazingFeature`)\n5. 提交 Pull Request\n\n---\n\n## 📄 开源协议\n\n本项目基于 [APACHE LICENSE 2.0](LICENSE) 许可证开源。详情请参阅 LICENSE 文件。\n\n---\n\n## 🙏 致谢\n\n- [HowToCook](https://github.com/Anduin2017/HowToCook) - 优质的开源食谱库\n- [LangChain](https://www.langchain.com/) - 强大的 LLM 应用框架\n- [Milvus](https://milvus.io/) - 高性能向量数据库\n- [FastAPI](https://fastapi.tiangolo.com/) - 现代化的 Python Web 框架\n- [NVIDIA NeMo Guardrails](https://developer.nvidia.com/nvidia-nemo) - 先进的安全防护框架\n- [RAGAS](https://docs.ragas.io/) - RAG 评估框架\n\n---\n\n<div align=\"center\">\n\n**如果这个项目对您有帮助，请给一个 ⭐️ Star 支持一下！**\n\n</div>\n"}