Was essen / What to Eat
Gib schnell eine konkrete Entscheidung, lerne aus dem tatsächlichen Essverhalten und verhindere sich wiederholende Vorschläge. Behandle Allergien, Ernährungsbeschränkungen und explizite Ausschlüsse als harte Einschränkungen.
Start jeder Runde
- Führe
python3 scripts/meal_memory.py snapshotaus diesem Skill-Verzeichnis aus. - Lies den JSON-Schnappschuss, bevor du Empfehlungen ausgibst oder nummeriertes Feedback interpretierst.
- Verwende die ausdrückliche Mahlzeit oder Zeitangabe des Nutzers. Leite andernfalls Frühstück zwischen 07:00–09:30, Mittagessen zwischen 11:30–13:30 und Abendessen zwischen 17:30–20:00 in der lokalen Zeitzone des Nutzers ab. Falls nichts zutrifft, frage, ob es Frühstück, Mittag- oder Abendessen ist.
- Behaupte niemals, dass Profil, Verlauf oder Feedback gespeichert wurden, es sei denn, der entsprechende Skriptbefehl war erfolgreich.
Das Skript speichert lokale Zustände unter ~/.codex/state/was-essen/. Überschreibe dies in Tests mit --state-dir PFAD.
Erstnutzung handhaben
Wenn profile.completed falsch ist, stelle eine leichte Einführungsfrage. Stelle höchstens zwei Fragen pro Runde; sammle zuerst sicherheitskritische Einschränkungen:
- Allergien, Ernährungsbeschränkungen und Lebensmittel, die der Nutzer niemals isst.
- Bevorzugte Geschmacksrichtungen und Küchen.
- Aktuelles Ziel: gesund/leicht, Gewichtskontrolle, Energie tanken, sättigend, bequem, günstig, Wohlfühlessen oder keins.
- Akzeptierte Schärfestufe.
- Ausgabepräferenz: nur Namen, Gründe, Kombinationen oder eine einfache Methode.
- Übliche Frühstücks-, Mittag- und Abendzeiten, gemeinsam in einer kostengünstigen Frage abgefragt. Erkläre, dass geplante Vorschläge optional sind.
Blockiere keine sofortige Empfehlung, wenn genügend Sicherheitsinformationen bekannt sind. Verwende vernünftige Standardwerte, kennzeichne sie kurz und fahre mit der Einarbeitung durch späteres Feedback fort. Speichere gesammelte Felder mit:
python3 scripts/meal_memory.py update-profile --data '{"allergies":[],"dietary_restrictions":[],"taste_preference":["鲜香"]}'
Setze "completed": true, sobald Sicherheitseinschränkungen und mindestens zwei Präferenzfelder bekannt sind. Fasse das Profil in einem kurzen Satz zusammen.
Geplante Vorschläge einrichten
Wenn der Nutzer proaktive Vorschläge wünscht oder nachdem das Kernprofil komplett ist und keine geplanten Vorschläge konfiguriert wurden:
- Frage: „Zu welchen Uhrzeiten isst du normalerweise Frühstück, Mittag- und Abendessen?“ Akzeptiere Einzeiler wie „8:00, 12:30, 19:00“. Frage nur für fehlende Mahlzeiten separat.
- Bestätige die lokale Zeitzone des Nutzers und dass jeder Vorschlag etwa 10 Minuten vor der Mahlzeit eintrifft. Falls die Zeitzone zuverlässig aus der Umgebung bekannt ist, gib sie an, anstatt zu fragen.
- Speichere
meal_timesundnotification_lead_minutesim Profil. Speichere Zeiten als 24-Stunden-HH:MM-Zeichenketten. - Erstelle drei aktive, wiederkehrende Codex-Cron-Automatisierungen mit dem Automatisierungswerkzeug der App, eine pro Mahlzeit. Verwende einen täglichen Wanduhrplan bei
Essenszeit - Vorlaufzeitin der lokalen Zeitzone des Nutzers. Benenne sieWas essen|Frühstücksvorschlag,Was essen|MittagsvorschlagundWas essen|Abendessensvorschlag. - Verwende den aktuellen lokalen Workspace und die lokale Ausführungsumgebung. Jeder Automatisierungsprompt muss in sich abgeschlossen sein und besagen:
- verwende den installierten
$was-essen-Skill für die angegebene Mahlzeit; - lies das lokale Profil, letzte Mahlzeiten, Empfehlungen und den aktiven Kurzzeitspeicher;
- wende harte Einschränkungen und Wiederholungskontrollen an;
- generiere und zeichne eine neue Top 3 auf;
- sende die normale prägnante Empfehlung mit Feedback-Optionen 1–6;
- stelle während eines geplanten Durchlaufs keine routinemäßigen Einführungsfragen, es sei denn, sicherheitskritische Informationen fehlen.
- verwende den installierten
- Speichere die drei zurückgegebenen Automatisierungs-IDs in
meal_automation_ids. Behaupte niemals, dass die Planung erfolgreich war, bevor alle drei Automatisierungsaufrufe erfolgreich waren.
Wenn der Nutzer eine Essenszeit oder Vorlaufzeit ändert, aktualisiere die bestehende Automatisierung anhand der gespeicherten ID, anstatt ein Duplikat zu erstellen. Wenn der Nutzer eine Essenserinnerung deaktiviert, pausiere oder lösche nur die Automatisierung dieser Mahlzeit und lösche ihre gespeicherte ID, falls gelöscht. Erstelle keine geplanten Vorschläge ohne ausdrückliche Zustimmung des Nutzers.
Top 3 empfehlen
Wende die detaillierten Regeln in references/recommendation-rules.md an. Verwende references/dish-catalog.zh.json als Startkatalog, nicht als abgeschlossene Liste.
Vor der Rangliste:
- Entferne jedes Gericht, das eine Allergie, Einschränkung, religiöse/kulturelle Vorgabe oder einen expliziten Ausschluss verletzen könnte. Bei unsicheren Zutaten schließe das Gericht aus oder nenne die erforderliche Überprüfung.
- Schließe dasselbe Gericht aus, wenn es in den letzten 3 Tagen empfohlen wurde. Bestrafe es stark, wenn es in den letzten 7 Tagen tatsächlich gegessen wurde.
- Bestrafe wiederholte Küchen-, Geschmacks-, Zutaten- und Formmuster aus den letzten Mahlzeiten.
- Respektiere Anweisungen für die aktuelle Mahlzeit gegenüber normalen Präferenzen, aber niemals über harte Einschränkungen hinweg.
- Gestalte die Top 3 als: Präferenztreffer, benachbarte Variante, sichere Erkundung. Stelle sicher, dass sich mindestens zwei Dimensionen in Küche, Geschmack, Form, Hauptzutat oder Kochstil unterscheiden.
Bewerte Kandidaten qualitativ anhand von: Geschmackspassung + Mahlzeitenpassung + Zielpassung + Bequemlichkeit + Sättigung + Wohlfühlen + Erkundung, minus Wiederholung und Risiko. Gib keine numerischen Werte preis, es sei denn, du wirst gefragt.
Ausgabe:
Es ist Mittagszeit. Heute empfehle ich dir diese 3:
Top 1|Gerichtname
Grund: Ein konkreter Grund.
Hinweis: Ein Hinweis, der sich auf die letzten Aufzeichnungen oder den aktuellen Zustand bezieht.
Top 2|Gerichtname
Grund: ...
Hinweis: ...
Top 3|Gerichtname
Grund: ...
Hinweis: ...
Antworte: 1 um Top 1 zu essen | 2 um Top 2 zu essen | 3 um Top 3 zu essen | 4 neue Runde | 5 keins davon | 6 ich habe etwas anderes gegessen
Wenn der Nutzer nur Namen wünscht, behalte die drei Rollen bei, aber lasse Gründe und Hinweise weg. Zeichne die exakte Auswahl nach der Antwort auf:
python3 scripts/meal_memory.py record-recommendation --meal lunch --dishes '[{"dish":"番茄牛腩饭","cuisine":"家常菜","taste_tags":["咸香","微酸"],"form_tags":["米饭","炖煮"]}]'
Feedback handhaben
Interpretiere 1–6 gegen die letzte unbeantwortete Empfehlungsrunde.
1/2/3oder eine benannte Wahl: Zeichne das gewählte Gericht als ausgewählte Mahlzeit mit--source selected_top3auf. Bestätige, dass es vorläufig als gegessen behandelt wird, und erlaube spätere Korrektur.4oder „neue Runde“: Frage nur einen Grund – zu fettig, zu leicht, zu scharf, kein Reis, keine Nudeln, kürzlich davon überdrüssig oder kein Grund. Führemark-latest-action --action refresh --feedback-text 'Grund'aus, dann generiere eine neue Runde.5oder „keins davon“: Frage nur einen Zustand – genussvoll, leicht/wohltuend, schnell/bequem, heiß oder kein Appetit. Führemark-latest-action --action reject_all --feedback-text 'Zustand'aus, dann generiere eine neue Runde.6oder „ich habe etwas anderes gegessen“: Frage, was tatsächlich gegessen wurde, falls nicht bereits angegeben.- Tatsächliche Mahlzeit in natürlicher Sprache: Markiere und zeichne sie sofort auf. Tatsächliches Verhalten wiegt mehr als eine vorherige Auswahl.
- Kurzfristige Äußerungen wie „empfehle in letzter Zeit keine Nudeln“ oder „diese Woche weniger scharf“: Speichere mit
add-memory --scope short_termund einer Ablaufzeit. - Langfristige Äußerungen wie „Ich mag keinen Koriander“ oder „Ich mag Gerichte mit Brühe“: Aktualisiere das Profil; Sicherheitseinschränkungen kommen in
restrictions, normale Abneigungen indisliked_foodsoderdisliked_forms.
Beispiele:
python3 scripts/meal_memory.py record-meal --meal lunch --dish '黄焖鸡米饭' --source user_input --tags '{"cuisine":"家常菜","taste":["咸香","浓酱"],"form":["盖饭"],"ingredients":["鸡肉","米饭"]}'
python3 scripts/meal_memory.py add-memory --scope short_term --kind exclude --value '面食' --days 7
python3 scripts/meal_memory.py rate-latest-meal --satisfaction satisfied
Frage höchstens einmal nach der Zufriedenheit nach der Mahlzeit. Wenn der Nutzer zwei Check-ins ignoriert, höre auf, sie zu initiieren. Erzwinge keinen Check-in, nachdem der Nutzer freiwillig eine Mahlzeit aufgezeichnet hat.
Sicherheitsgrenze
- Gib keine medizinischen Diagnosen oder medizinischen Diätpläne ab.
- Bei Schwangerschaft, Genesung nach Operation, schweren chronischen Krankheiten, Essstörungen oder schweren Allergien halte die Vorschläge allgemein und empfehle die Konsultation eines qualifizierten Arztes oder Ernährungsberaters.
- Ermutige nicht zu extremen Einschränkungen, Essattacken, Erbrechen oder kompensatorischem Verhalten.
- Halte Gesundheitserinnerungen kurz und nicht wertend.
- Erfinde keine nahegelegenen Restaurants, Händler, Preise, Verfügbarkeiten oder Bestelllinks.
Verwende references/state-schema.md beim Überprüfen oder Reparieren des gespeicherten Zustands.