Mealie 维护
始终遵循三个阶段:分析 -> 计划 -> 执行。 未经明确批准,不得写入任何内容。 切勿在单个计划中混合两种不同类型的任务。
选择模式并阅读对应的参考文档
只阅读当前模式对应的参考文档,不要阅读所有文档:
| 任务 | 参考文档 |
|---|---|
| 清理食谱、解析食材、填充字段 | references/recipes.md |
| 食品:缺口、匹配、重复 | references/foods.md |
| 单位:缺口、重复、转换为公制 | references/units.md |
| 购物清单标签:调色板、缺口、轴线 | references/labels.md |
| 整合分类、标签、工具 | references/organizers.md |
| 创建或重做食谱手册 | references/cookbooks.md |
| 重复食谱、断行的食材、失效链接、饮食标签 | references/maintenance.md |
食谱、食品和单位上的 extras 字段 | references/extras.md |
| 膳食计划、从 URL 导入食谱、使用 MCP 服务器 | references/mcp.md |
所有模式的动作格式相同:references/actions.md。
仅在计划阶段二(计划)开始时阅读该文件。
每当 mcp-mealie MCP 服务器连接时,阅读 references/mcp.md ——
它会改变所有其他模式获取数据的方式。
工具
scripts/mealie_ctx.py 封装了所有 API 调用。不要阅读其源代码,
使用 --help 调用它。
路径相对于此技能目录,而不是工作目录—— 每次调用都必须包含其前缀,否则找不到命令:
python .agents/skills/mealie/scripts/mealie_ctx.py <command>
setup [--check] 检查连接,存储凭据
index [--refresh] 构建本地食谱索引
audit <what> [--limit N] 食品 单位 标签 分类 标签
工具 食谱 链接 extra
ctx recipe <slug> [--search T] 食谱 + 匹配的食品 + 组织者
[--full] 未删节的 JSON,很少需要
ctx <what> [--limit N] [--group G] 食品 单位 分类 标签 工具
食谱手册 饮食
usage <kind> <id> 使用了某个食品/单位/分类/标签/工具的食谱
convert "<amount>" [...] 非公制数量 -> 公制 + Original: 注释;也处理 °F 和英寸
rules [--init] 此实例的内部规则
seed labels|units|all [--out F] 用于固定词表的动作
apply <file> [--slug S] [--dry-run]
第一次 audit 调用会构建索引(遍历所有食谱一次,取决于实例大小,可能需要一些时间)。
之后的每次审计都从该索引读取。
每次执行写入操作(apply)后,索引会被丢弃并重新构建。
以下三个命令可以替代你本可能手工完成(而且通常做不好)的操作:
convert持有密度表和舍入规则,并返回Original:注释。切勿在心中换算英制数量。rules打印此实例的决策——区域设置、分类轴线、容器假设、解析裸食品的表格(pepper->black pepper [ground])。在创建或重命名任何内容之前阅读它,并且添加一行规则,而不是两次决定同一个问题。seed将固定词表(29 个标签及其区域颜色、公制单位集)写入一个动作文件,跳过已存在的内容。
apply 会将每个操作与它所覆盖的状态一起记录到 .mealie.changelog.jsonl 中,拒绝那些会缩短列表字段的 patch_recipe 以及为 Mealie 1.x 编写的食谱手册负载(一个 queryFilterString,绝不能是 tags/categories/tools/requireAll*),并且会检查计划——如果包含非公制单位则会致命报错。--dry-run 执行相同的检查。详细信息请参阅 references/actions.md。
上下文命令已经返回过滤后的数据。切勿未经过滤地加载完整表格,也切勿手动构建食谱循环——这就是索引的作用。
环境变量:MEALIE_URL、MEALIE_TOKEN——也会读取 MEALIE_API_TOKEN(mcp-mealie 中用于令牌的名称)、MEALIE_BASE_URL 和 MEALIE_API_KEY。如果它们都未设置,脚本会从工作目录下的 .mealie.env 和 .env 文件中读取。任何命令如果找不到这些值,都会终止运行并提示使用 setup。
脚本需要网络访问实例。在沙盒环境中,即使 URL 和令牌正确,调用也可能因连接错误而失败——这是环境权限问题,不是配置错误。请说明情况,让用户允许该调用。切勿使用手写的 HTTP 脚本绕过此问题:mealie_ctx.py 是访问 API 的唯一途径,第二个途径既没有写入顺序保护也没有 dry run 功能。当 MCP 服务器连接时,其调用通过服务器进行,不受此影响。
setup --check 仅探测配置,可以安全运行——当连接状态不明时,在会话开始时使用一次。而普通的 setup 会提示输入 URL 和令牌,必须由用户运行,而不是由你运行:询问用户并等待。切勿在聊天中要求输入令牌,也切勿自己将其写入文件。
如果 mcp-mealie MCP 服务器已连接,请改为使用它进行分析:它在服务器端回答审计问题,因此根本不会构建本地索引,并且它涵盖了这个脚本特意缺少的功能——膳食计划、从 URL 导入食谱、交互式食谱搜索。脚本保留有序批处理:需要 ORDER 或需要对整个数据集进行 dry run 的计划仍然通过 actions.json 和 apply 执行。请先阅读 references/mcp.md。
输出风格:洞穴人
如果 caveman 技能可用,请为这个工作流激活它。审计、计划和报告都是冗长的表格输出——正是压缩能带来好处的情况。如果没有该技能:正常回答,但保持简洁——使用表格而不是散文,不要重复工具已经打印过的内容。
只有聊天输出被压缩——分析、计划、报告、你的临时评论。以下两种情况保留完整的 ${CONTENT_LANG} 散文:
- 所有写入 Mealie 的内容,即
actions.json中的所有内容。这是数据库内容,不是聊天内容;请参阅references/actions.md。 - 关于破坏性操作的警告、不确定时的提问以及批准确认问题。对于需要重写 14 个食谱的合并操作,清晰明确比节省几个 token 更重要。
所有模式的通用规则
不杜撰任何东西:食材、数量和步骤只能被结构化、翻译和纠正,绝不能添加或删除。现有的正确值保持不变。
所有内容使用 ${CONTENT_LANG};已确立的烹饪术语(sous-vide, roux, ganache)保持原样。使用公制单位。
在报告中标记估算值。有疑问时,留空字段而不是猜测。
在创建前先搜索——对于食品、单位以及组织者都是如此。同时检查拼写变体、单复数形式和外语等效词。
在计划中明确标记破坏性操作(merge_*、delete_organizer、retag_recipe),注明受影响的食谱数量,并指出这些操作无法撤销。
保持批次较小:每次运行最多处理 25 个食品/单位缺口或 5 个重复项/组织者组。食谱有自己的规则——对于食材、步骤和注释,每个计划处理一个食谱;对于字段级别的更改,可以是任意数量;请参阅 references/recipes.md。
出现中止时,不要尝试推测性修复——报告已到达的状态并询问。