ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

HowToCook 仓库原则解读:如何把菜谱构建成机器可读、可二次开发的基础设施

2026/9/30 8:05:30 拓冰建站 浏览量
HowToCook 仓库原则解读:如何把菜谱构建成机器可读、可二次开发的基础设施 文档教程【免费下载链接】HowToCookProgrammers guide about how to cook at home.项目地址https://gitcode.com/GitHub_Trending/ho/HowToCook点击查看免费下载导读HowToCook程序员做饭指南 是一个由社区驱动的开源菜谱仓库其独特之处在于它把菜谱当作数据而非文章来维护追求形式化、可机读、可复用。本文以仓库根目录下的 CODE_OF_CONDUCT.md 为骨架结合 .github/manual_lint.js 校验器、示例菜模板 与 LICENSE系统解读 HowToCook 的四大仓库原则弱协议、尽可能形式化、非商业、AI 友好及其在源码中的落地方式。读完本文你将理解为什么该仓库能被网站、小程序、MCP 工具甚至 AI 模型二次开发以及如何按同一套规范贡献菜谱。为什么维护这个仓库从精准菜谱到生命管理系统CODE_OF_CONDUCT.md 开篇记录了作者 Anduin2017 维护仓库的动机健身 App、手环、医疗平台、买菜平台、外卖平台、智能冰箱等基础设施彼此缺乏沟通能力用户需要花费大量精力在它们之间周旋计算。文档设想了一个理想的生命管理体系——当医生建议50 天减肥 15 斤时各类应用能够联动自动设计健身计划、计算应吃的饭菜、自动补货、避免过期、推荐食谱、核算热量摄入与消耗并根据体重秤数据持续矫正。在这一宏大设想中HowToCook 的定位被明确为一句话提供一份足够精准的菜谱。文档强调对于额外的附加功能开发、可视化、智能化、平台对接、饮食产业等均可引用这个仓库中的菜谱进行二次开发。也就是说菜谱本身不是终点而是整套生命健康系统里一块可靠又强大的螺丝钉——它的核心价值是数据准确性与可机器处理性。这正是理解仓库全部设计原则的出发点。仓库原则总览CODE_OF_CONDUCT.md 将发展原则归纳为维持精准的特点尽可能在保证阅读的同时统一格式方便二次开发并细化为四条可执行的原则原则核心主张在仓库中的落地证据弱协议坚持宽松许可协议允许商业与非商业使用、复制、修改、分发LICENSE 采用公有领域 Unlicense尽可能形式化统一菜谱文件格式避免不精准尤其是计算机无法理解的单位和操作.github/manual_lint.js 强制格式校验非商业永不插入广告避免耦合特定品牌使用易取得的原材料菜谱中品牌仅为可选推荐如 示例菜模板AI 友好允许社区使用仓库训练任何类型的 AI并允许商业使用衍生作品生态与 README 中 MCP 类工具下面逐一展开。弱协议以公有领域授权释放复用限制弱协议原则的目标是让商业公司、饭店、企业或科研机构能够无障碍地引用这个仓库。文档明确声明任何人都可以自由复制、修改、发布、使用、编译、出售或以菜谱的形式或菜的形式分发无论是出于商业目的还是非商业目的以及任何手段。这一原则在仓库中的直接体现是根目录的 LICENSE 文件它采用的正是 Unlicense 公有领域协议作者将软件的全部版权利益奉献给公众放弃所有现在和未来的权利。协议同时附带AS IS免责声明——软件按现状提供不附带任何明示或默示的担保。这意味着二次开发者无需担心授权费用或分发限制下游产品可以自由地将菜谱嵌入 App、小程序、网站甚至商用系统仓库因此更适合扮演基础设施角色而非封闭的私有内容源。值得注意的是HowToCook 的目标读者并不仅限于人类文档中写道这份菜谱更多的不是给人类阅读的而是更多的可能会被机器处理。弱协议正是为了给机器处理扫清法律障碍。尽可能形式化让菜谱可以被计算机理解尽可能形式化是 HowToCook 区别于普通菜谱博客的核心原则包含三层要求统一菜谱的文件格式、避免不精准尤其是计算机无法理解的单位和操作、保持清晰的目录结构。清晰的目录结构仓库在dishes/目录下按食材类别组织菜谱包括素菜、荤菜、水产、早餐、主食、半成品加工、汤与粥、饮料、酱料和其它材料、甜品等分类每个菜谱通常独占一个子目录例如 小龙虾、清蒸鲈鱼。此外tips/目录存放厨房准备、食品安全等通用知识tips/learn/与tips/advanced/存放从入门到进阶的烹饪技法。这种稳定的路径结构本身就具备可被程序枚举和索引的数据特征。强制统一的文件格式manual_lint.js 校验器仓库用脚本强制保障格式统一。根目录 package.json 的lint脚本串联了 textlint、markdownlint 与自定义校验scripts: { build: node ./.github/readme-generate.js, manuallint: node .github/manual_lint.js, textlint: textlint . --fix, markdownlint: markdownlint ./dishes ./tips, lint: npm run textlint npm run markdownlint npm run manuallint echo Lint finished. All passed. }其中 .github/manual_lint.js 是自定义的菜谱规范校验器对dishes/**/*.md逐文件执行十余项检查。以下是它实际强制的关键规则含源码行号定位文件名规则菜谱文件名不能包含空格manual_lint.js保证路径可被稳定引用主标题与章节结构主标题必须是# 菜名的做法且必须严格包含四个二级章节## 必备原料和工具、## 计算、## 操作、## 附加内容manual_lint.js。这保证了每个菜谱都是同样的数据 schema元信息主标题与第一个二级标题之间必须包含预估烹饪难度★...★1-5 颗星与预估卡路里XXX大卡manual_lint.js为机器提供可比较的难度与热量数据操作章节必须使用有序列表1. 2. 3.逐条编号禁止使用无序列表manual_lint.js确保操作顺序可被程序按序号执行禁止非精准词汇适量、少许、左右、min均不被允许min因存在多重含义被建议改为分钟勺、杯这类容器单位也被禁止必须给出克g或毫升mlmanual_lint.js。这正是文档所说避免计算机无法理解的单位的代码级实现禁止人称代词菜谱中不得出现你我manual_lint.js保持描述的中立与可复用描述长度约束菜谱介绍必须在 30-300 字之间并包含菜品特点、营养价值、难度和制作时长manual_lint.js图片规范图片 alt 文本必须包含具体菜名不得使用成品效果图摆盘等泛称或拼音缩写manual_lint.js同时校验引用的图片文件真实存在manual_lint.js统一收尾文案每个菜谱末尾必须保留如果您遵循本指南的制作流程而发现有问题或可以改进的流程请提出 Issue 或 Pull request 。manual_lint.js文件大小限制所有文件不得超过 1MBmanual_lint.js避免仓库过度膨胀。此外菜谱中不允许出现 HTML 注释模板文件除外manual_lint.js保证内容纯净。模板即规范示例菜示例菜模板 是上述规则的活文档也是贡献者写新菜谱时复制的起点。它通过注释给出了完整的填写指南预估烹饪难度采用 1-5 星分级每级对应明确的耗时与经验要求示例菜.md必备原料和工具列出必需原料帮助读者快速判断手边材料是否足够燃气灶、饮用水、锅等已在厨房采购部分提及的基础物资不重复列出计算章节要求给出每份的量或计算公式对于大小不一的食材必须给出质量参考对于可自行斟酌加量的食材必须给出建议范围且明确要求请不要使用有大有小的容器作为单位统一使用毫升示例菜.md操作章节禁止适量少量中量适当等模糊词汇凡需等待的步骤必须给出时间公式或结束判断标准如等待直至咖喱融化外观呈粘稠状态示例菜.md。这一模板直接对应了文档中按照同一份菜谱做菜不同的人也能得到几乎相同的结果的目标——形式化是为了消除歧义、保证可复现。形式化的实际效果以两份菜谱为例仓库中的真实菜谱充分体现了上述规则的产出效果小龙虾.md 在计算章节给出两斤小龙虾的完整量化清单油 70 毫升、香叶两片、八角一个、桂皮 3 克、青花椒 10 克、子弹头辣椒 5 克、姜 30 克、蒜 7 瓣、郫县豆瓣 30 克、黄豆酱 30 克、啤酒 500 毫升、生抽 30 毫升、盐 10 克所有关键原料均有可执行的数量清蒸鲈鱼.md 在操作章节严格使用有序列表从切姜丝到淋热油共 11 步并对鱼肚内塞姜葱白等关键手法给出明确说明。这些菜谱可以被搜索引擎、菜谱 App 甚至 AI Agent 直接解析为原料清单 量化步骤的结构化数据。非商业无广告、不绑定品牌、易取材非商业原则有三条具体承诺CODE_OF_CONDUCT.md永不插入广告HowToCook 将永远不插入广告避免内容被商业流量绑架不耦合特定品牌尽可能避免菜谱中的材料耦合特定品牌防止菜谱依赖某个厂商的产品使用容易取得的原材料尽可能使用容易取得的原材料降低读者的执行门槛。这一原则与弱协议形成互补协议层面放开商业复用内容层面却主动拒绝商业化污染。仓库中的菜谱严格区分必需原料与可选推荐——例如 示例菜模板 在原料清单中写道咖喱块推荐品牌好侍品牌只是降低决策成本的参考而非必需约束。文档同时声明 HowToCook永远不讨论变现问题并承诺永远由社区驱动维护界定了项目的非营利治理基调。AI 友好面向模型的开放训练AI 友好是仓库原则中最具前瞻性的一条社区可以使用这个仓库训练任何类型的 AI并且允许商业使用CODE_OF_CONDUCT.md。从源码结构看这一承诺的可操作性建立在前三条原则之上**弱协议Unlicense**为训练和商用提供了法律上的确定性尽可能形式化为 AI 提供了高质量的结构化训练语料——统一的章节 schema必备原料和工具 / 计算 / 操作 / 附加内容、精确到克和毫升的量化数据、无歧义的操作步骤天然适合被语言模型或任务规划类 Agent 理解与执行非商业确保了语料中不夹带广告噪音和品牌植入。仓库中面向 AI 的衍生工具已成为佐证README 的衍生作品推荐一节收录了 HowToCook-mcp、HowToCook-py-mcp 等 MCP 工具其定位正是让 AI 助手变身私人大厨为一日三餐出谋划策。从仓库结构可以推断这类工具无需处理格式各异的非结构化菜谱直接按固定 schema 读取dishes/下的 Markdown 即可完成检索与执行这正是形式化为 AI 场景带来的直接价值。衍生产物二次开发生态与边界声明CODE_OF_CONDUCT.md 最后指出目前社区中已有许多基于 HowToCook 二次开发的小程序、App、网站等并给出了重要的边界声明——HowToCook 仓库与任何衍生产物没有任何合作关系和知情义务所有衍生产物的行为准则并不受 HowToCook 的行为准则约束也不代表 HowToCook 仓库的价值观。这一声明值得二次开发者仔细阅读一方面仓库欢迎并乐见衍生生态弱协议 AI 友好原则为二次开发扫清障碍另一方面衍生产物的合规性、内容质量与价值观由开发者自行负责与主仓库无关。对想要基于本仓库构建应用如菜谱 App、饮食管理系统、AI 烹饪助手的团队而言这意味着可以放心地引用菜谱数据但需要在自身产品层面自行承担用户协议、内容审核与安全责任。官方还提供了便捷的查看与部署途径菜谱可通过 README.md 中给出的 Docker 镜像aiursoft/howtocookviewer在本地部署为可视化 Web 服务便于直接体验仓库的完整内容。从源码验证原则的落地将文档原则与仓库代码对照可以得到完整的落地验证链路原则文档表述代码/文件证据弱协议自由复制、修改、发布、使用、编译、出售LICENSEUnlicense 公有领域尽可能形式化统一格式、避免不精准单位、清晰目录.github/manual_lint.js、示例菜模板、package.json 的lint脚本非商业不插入广告、不耦合品牌、易取材菜谱中品牌仅作可选推荐如 示例菜模板AI 友好允许训练任何类型 AI、允许商业使用衍生作品生态README 中 MCP 工具与形式化菜谱结构此外.github/workflows/ci.yml 的存在表明校验脚本可在持续集成中自动执行确保每一位贡献者提交的菜谱都符合规范——从仓库结构可以推断PR 合入前会经过格式与内容校验这正是尽可能保证阅读的同时统一格式在工程层面的保障。如何参与遵循同一套规范如果你希望为仓库贡献菜谱或修正现有菜谱按照 README.md 的指引与模板要求复制模板从 示例菜模板 复制文件删除所有注释后按模板结构填写遵守格式规范主标题为# 菜名的做法四个二级章节齐全包含难度星级与卡路里元信息操作步骤使用有序列表所有用量使用克g/毫升ml不使用适量勺杯等模糊单位保持内容纯净不出现 HTML 注释、人称代词图片 alt 文本包含具体菜名且图片真实存在本地校验可运行npm run lint包含 textlint、markdownlint 与 manual_lint自检通过后提交 Pull request。正是这套文档原则 脚本强校验的组合让 HowToCook 在保持人类可读的同时成为一份可以被机器、AI 与各类应用稳定引用的精准菜谱数据源。如果您遵循本指南的制作流程而发现有问题或可以改进的流程请提出 Issue 或 Pull request。赞分享文档教程【免费下载链接】HowToCookProgrammers guide about how to cook at home.项目地址https://gitcode.com/GitHub_Trending/ho/HowToCook点击查看免费下载相关推荐pstack 原则精读Minimize Reader Load 如何把可维护性量化为可测量的阅读负担pstack 原则精读Minimize Reader Load 如何把可维护性量化为可测量的阅读负担 可维护性到底是什么传统答案通常指向行数、圈复杂度、AI 技能AI 插件插件系统AI AgentBoilerplates Wiki 导读用 template.json 清单把基础设施模板变成可配置工作负载Boilerplates Wiki 导读用 template.json 清单把基础设施模板变成可配置工作负载 Boilerplates 是一个面向 homelCLI开发工具代码生成Pulumi模块化开发创建可重用的基础设施组件库Pulumi模块化开发创建可重用的基础设施组件库 Pulumi是一个革命性的基础设施即代码工具它允许开发者使用熟悉的编程语言来定义和管理云基础设施。通过Pu云原生后端开发工具运维创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考