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 |
| 餐飲計畫、從網址匯入食譜、使用 MCP 伺服器 | references/mcp.md |
每種模式的 ACTIONS 格式相同:references/actions.md。
該檔案僅在進入第二階段時才閱讀。
每當 mcp-mealie MCP 伺服器連線時,請閱讀 references/mcp.md —
這會改變其他所有模式收集資料的方式。
工具
scripts/mealie_ctx.py 封裝了所有 API 呼叫。請勿閱讀其原始碼,使用 --help 呼叫即可。
路徑是相對於此技能目錄,而非工作目錄 — 每次呼叫前都需加上前綴,否則無法找到指令:
python .agents/skills/mealie/scripts/mealie_ctx.py <指令>
setup [--check] 檢查連線,儲存憑證
index [--refresh] 建立本機食譜索引
audit <what> [--limit N] 食品 單位 標籤 分類
工具 食譜 連結 擴充欄位
ctx recipe <slug> [--search T] 食譜 + 符合的食品 + 組織器
[--full] 完整未縮減 JSON,很少需要
ctx <what> [--limit N] [--group G] 食品 單位 分類 標籤 工具
食譜集 飲食
usage <kind> <id> 使用某食品/單位/分類/標籤/工具的食譜
convert "<數量>" [...] 非公制數量 -> 公制 + Original: 註記;也處理華氏溫度和英寸
rules [--init] 此執行個體的內部規則
seed labels|units|all [--out F] 固定詞彙的動作檔
apply <file> [--slug S] [--dry-run]
首次 audit 呼叫會建立索引(遍歷所有食譜一次,根據執行個體大小可能需要一些時間)。之後的每次 audit 都會從該索引讀取資料。每次透過 apply 寫入後,索引會被丟棄並重建。
其中三個工具取代了您原本可能以手動、不精確方式完成的工作:
convert包含密度表和四捨五入規則,並回傳Original:註記。切勿自行換算英制數量。rules印出此執行個體的決策 — 地區設定、分類軸線、容器假設、用於解析裸食材的表格(pepper->black pepper [ground])。在建立或重新命名任何東西之前閱讀,並加入一行規則,而不是對相同問題做兩次判斷。seed寫入固定詞彙 — 29 個含分區顏色的標籤、公制單位集 — 以 ACTIONS 檔案形式輸出,跳過已存在的部分。
apply 將每個動作記錄到 .mealie.changelog.jsonl,包含其所覆寫的狀態;拒絕會縮短列表欄位的 patch_recipe,以及為 Mealie 1.x 寫入的食譜集內容(只使用一個 queryFilterString,從不使用 tags/categories/tools/requireAll*),並對計畫進行語法檢查 — 若出現非公制單位則會致命錯誤。--dry-run 執行相同的檢查。詳情請見 references/actions.md。
上下文指令(ctx)已回傳過濾後的資料。切勿不加過濾地載入完整表格,切勿手動建立食譜迴圈 — 那是索引的用途。
環境變數:MEALIE_URL、MEALIE_TOKEN — 也會讀取 MEALIE_API_TOKEN(mcp-mealie 對 token 的名稱)、MEALIE_BASE_URL 和 MEALIE_API_KEY。若未設定,腳本會依序從工作目錄下的 .mealie.env 和 .env 檔案讀取。任何指令若找不到這些設定,會以提示執行 setup 的方式中止。
腳本需要網路連線才能存取執行個體。在沙箱環境中,即使 URL 和 Token 正確,呼叫也可能因連線錯誤而失敗 — 這是環境的權限問題,而非配置錯誤。請告知使用者並讓他們允許該呼叫。切勿以自行編寫的 HTTP 腳本來繞過此問題:mealie_ctx.py 是通往 API 的唯一路徑,其他路徑既沒有順序防護也沒有試執行。如果 MCP 伺服器已連線,其呼叫會透過伺服器進行,不受此影響。
setup --check 僅測試配置,您可以自行安全執行 — 在會話開始、連線狀態不明時使用一次。單純的 setup 會提示輸入 URL 和 Token,必須由使用者(而非您)執行:請要求使用者操作並等待。切勿在對話中要求 Token,也不得自行將 Token 寫入檔案。
如果 mcp-mealie MCP 伺服器已連線,請改用該伺服器進行分析:它會在伺服器端回答稽核問題,因此不需建立索引,而且它涵蓋了此腳本刻意缺少的功能 — 餐飲計畫、從網址匯入食譜、互動式食譜搜尋。腳本仍負責有序批次處理:需要 ORDER 或對整個批次進行試執行的計畫,仍然透過 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。
若操作中止,請勿嘗試推測性修復 — 回報已達到的狀態並詢問下一步。