ByteNoteByteNote

字节笔记本

2026年8月29日

HowToCook:程序员做饭指南,拒绝适量少许

API中转
¥120

网上菜谱最烦的是「适量盐、少许油、炒至熟」。你习惯写代码,这种模糊量落到锅里就只能猜。Anduin2017/HowToCook 把常见家常菜写成 Markdown:原料克数、油毫升、火候时间都写死,仓库还用 lint 卡住格式。GitHub 上大约 10.2 万星,许可证是 Unlicense,主页在 howtocook.aiursoft.com。当前发行版是 1.6.0(2026-05)。

先在网站上看菜

不想 clone 的话,打开可视化站点即可翻分类:素菜、荤菜、水产、早餐、主食、半成品、汤粥、饮料、酱料、甜品。每道菜有预估难度(一到五颗星)和单份卡路里。卡路里是 2026 年 5 月批量加进去的,仓库讨论里写过生成用的是本机跑的 Qwen3.6 35B,当参考值就行,别当营养标签。

分类入口也在 README 里列全了。厨房还不熟的话,先看 tips 目录:厨房准备、焯水、炒与煎、蒸煮凉拌、食品安全、高压锅和空气炸锅。这些是操作课,不是菜谱。

本机 Docker 一份只读站

本机要一份能搜、能看的 Web,官方给了镜像:

bash
docker pull aiursoft/howtocookviewer
docker run -d -p 5000:5000 aiursoft/howtocookviewer

浏览器打开 http://localhost:5000 。镜像默认账号是 admin,默认密码写在 README 里,上线前改掉。第一次启动大约要 30 分钟做索引,别一开容器就觉得挂了。

只读菜谱的话,直接 git clone 看 dishes 目录也行。文件按分类目录放,一道菜一个 Markdown,复杂菜会再套一层同名文件夹放配图。

菜谱长什么样

贡献模板在 dishes/template/示例菜/示例菜.md。四段二级标题是固定的,CI 会核对:

  1. 必备原料和工具:锅、刀、食材名单,可选的单独标。
  2. 计算:先写一份够几人,再按份给出克数或毫升。土豆会写「2 个(每个大约 120g)」,油写 10-15ml,不写「少许」。
  3. 操作:编号步骤。时间、油温、变软这类可验证的状态写进步骤,不要凭手感。
  4. 附加内容:水位线、翻炒注意、参考资料。文末固定一句:流程有问题就开 Issue 或 PR。

主标题必须是「文件名 + 的做法」。文件名不能带空格。主标题和第一个二级标题之间要有难度星级和卡路里两行,例如「预估烹饪难度」后面跟 1 到 5 个星,「预估卡路里」后面跟整数加大卡。lint 脚本在 .github/manual_lint.js,用 glob 扫 dishes 下的 Markdown。标题对不上、少一段、文件超 1MB,PR 会红。

自己写新菜:复制模板目录,改文件名和四段内容,不要自创标题结构。量按「计算」里的单份来,多人就乘份数,别在步骤里再偷偷加一味没列过的料。

给编码代理接上 MCP

仓库 README 列了衍生作品,其中一个是 HowToCook 的 MCP 服务。

Node 版仓库是 worryzyy/HowToCook-mcp,包名 howtocook-mcp。Python 版是 DusKing1/howtocook-py-mcp

Node 版需要 Node 16 以上。Cursor 里可以先全局安装 howtocook-mcp,再在 MCP 配置里加一条:command 用 npx,args 为 -y 和 howtocook-mcp。没装全局时,npx 这条容易报 Failed to create client。

json
{
  "mcpServers": {
    "howtocook-mcp": {
      "command": "npx",
      "args": ["-y", "howtocook-mcp"]
    }
  }
}

工具大概五类:查全库、按分类、按菜名详情、按过敏原和忌口和人数排一周、按人数直接给今日菜单。全库那条上下文很大,日常用分类或菜名。本地可以 clone 后安装依赖再构建,用 node 跑 build/index.js。传输默认 stdio,也可以改成 http 或 sse,端口用 --port。

也可以先打开在线入口 howtocookmcp.weilei.site 试一下。Claude Desktop 还提供 DXT 一键装,仓库 README 里有打包步骤。

贡献时注意

改错别字、补克数、加新菜,直接开 PR。先读仓库的 CONTRIBUTING 和行为守则。新菜从模板复制,跑过 lint 再推。不要在步骤里写「适量」,这正是这个仓库要消掉的东西。

本地没有 Docker 时,clone 后用编辑器搜 dishes 也够用。想给代理用,优先接 MCP,别让模型把整份 README 塞进上下文。

分享: