Zum Inhalt springen

Wie Aufgaben-Apps 'morgen um 9 Uhr' verstehen

Eine kurze Tour durch die natürlichsprachige Datumsanalyse, die Regex-Tricks dahinter und warum On-Device-KI verändert, was möglich ist.

8 Min. Lesezeit

Tippe „E-Mail an Sam morgen um 9 Uhr" in eine gute Aufgaben-App und eines von zwei Dingen sollte passieren. Entweder bekommst du die Aufgabe als sauberes Objekt mit dem Titel „E-Mail an Sam" und einem Fälligkeitsdatum für 9:00 Uhr am folgenden Tag zurück, oder die App macht nichts und du musst einen Datum-Picker ausfüllen. Der Unterschied zwischen diesen beiden Ergebnissen bestimmt, ob du die App tatsächlich verwendest.

Natürlichsprachige Datumsanalyse existiert seit Jahrzehnten. Sie trieb Quicksilver an. Sie trieb Fantastical an. Heute treibt sie praktisch jede Produktivitäts-App an, die es wert ist, ausgeliefert zu werden. Aber die Art, wie sie unter der Haube funktioniert, hat sich in den letzten zwei oder drei Jahren auf interessante Weise verändert, und das Ergebnis ist, dass 2026 das erste Jahr ist, in dem diese Technologie für Englisch in den meisten Apps wirklich gelöst ist und in anderen Sprachen gut zu funktionieren beginnt.

Dieser Beitrag ist eine Tour durch die Funktionsweise.

Die grundlegende Form des Problems

Ein Nutzer tippt einen Satz. Die App muss:

  1. Entscheiden, ob der Satz überhaupt ein Datum enthält.
  2. Wenn ja, den Textabschnitt finden, der sich auf das Datum bezieht.
  3. Diesen Abschnitt in ein absolutes Datum und eine Uhrzeit auflösen.
  4. Den Datumsabschnitt aus dem Satz entfernen, sodass der verbleibende Text nur der Aufgabentitel ist.

Jeder dieser Schritte hat seine eigenen Fehlerquellen. Die meisten frühen Implementierungen waren im ersten Schritt fragil und erzeugten falsch positive Ergebnisse. „Die 15 Berichte abholen" sollte kein Fälligkeitsdatum für den 15. des Monats erhalten. „3 Äpfel kaufen" sollte nicht als irgendein Drei-etwas interpretiert werden. „E-Mail an Sam bei IBM" pinnt wahrscheinlich die Zeit nicht auf „bei I.B.M."

Die klassische Strategie sind reguläre Ausdrücke. Sie sind überraschend gut darin. Eine Handvoll sorgfältig geschriebener Muster kann über 90 % der Datums-Phrasen erkennen, die Menschen tatsächlich in Aufgaben-Apps tippen:

  • \bin\s+(a|an|\d+|some|several)\s+(min|minute|minutes|hour|hours|hr|hrs|day|days|week|weeks|month|months)\b
  • \b\d{1,2}(:\d{2})?\s*(am|pm)\b
  • \b(tomorrow|today|tonight|noon|midnight)\b
  • \b(monday|tuesday|wednesday|thursday|friday|saturday|sunday)\b

Kombiniere fünfzehn oder zwanzig dieser Muster und du deckst den langen Schwanz ab. Dann verknüpfst du die Treffer: Ein Tag-Wort plus ein Zeit-Wort wird zu einem spezifischen Moment. Ein Wochentagsname ohne Qualifier bedeutet „das nächste Vorkommen dieses Wochentags". Ein bloßes Zeit-Wort ohne Tag bedeutet heute.

Wo Regex scheitert

Regex stößt bei drei Arten von Eingaben an eine Wand:

  1. Vage Phrasen. „Irgendwann nächste Woche" ist ein Datum, aber kein spezifisches.
  2. Mehrdeutigkeit. „Freitagnachmittag" könnte 14:00 oder 16:00 Uhr sein, je nach Konvention.
  3. Rechtschreibfehler und Umgangssprache. „mrg um 9" ist für einen Menschen lesbar, aber nicht für einen strengen Regex ohne viele Varianten.

Lange Zeit haben Aufgaben-Apps bei diesen einfach die Schultern gezuckt. Wenn du „mrg um 9" getippt hast, hast du nichts bekommen. Wenn du „gleich morgen früh" getippt hast, hast du nichts bekommen. Der Nutzer lernte, die formale Version zu tippen.

Die interessante Entwicklung des letzten Jahres ist, dass On-Device-Sprachmodelle diese Fälle jetzt behandeln können, ohne etwas über das Netzwerk zu senden. Apples Foundation-Models-Framework, seit macOS 26 verfügbar, liefert ein Modell, das lokal läuft und schnell genug ist, als Fallback zu dienen, wenn Regex scheitert. Google hat ein ähnliches Angebot auf Android. Das resultierende Muster sieht so aus:

Two-stage parsing pipeline Diagram showing a sentence flowing through a fast regex stage. If regex matches, the result emits immediately. If not, the sentence is forwarded to an on-device language model fallback that emits a structured result. User input "in 30 minutes" Regex stage ~17 patterns, <1ms match Structured result due: 2:30 PM no match On-device model Foundation Models, ~50ms
Die zweistufige Pipeline, die TodoBar und ähnliche Apps verwenden. Der schnelle Pfad behandelt den Normalfall in unter einer Millisekunde. Das Modell behandelt den langen Schwanz.

Der schnelle Pfad deckt den 90%-Fall ab. Das Modell behandelt den Rest. Keine Stufe sendet den Text des Nutzers über das Netzwerk. Datenschutz und Geschwindigkeit werden beide gewahrt.

Warum „in 2 Stunden" schwieriger ist als es aussieht

Die Phrase „in 2 Stunden" sieht einfach aus. Das ist sie nicht.

Der Nutzer könnte eines der folgenden meinen:

  • 2 Stunden ab jetzt, auf die Minute.
  • 2 Stunden ab jetzt, auf die nächsten 15 Minuten gerundet für Sauberkeit.
  • 2 Stunden ab jetzt, aber wenn das in die markierten Schlafstunden des Nutzers fällt, am nächsten Morgen.
  • 2 Stunden ab Beginn der nächsten Stunde („in 2 Stunden", um 13:55 Uhr gesagt, könnte 16:00 Uhr bedeuten, nicht 15:55 Uhr).

Die meisten Apps treffen eine Entscheidung und bleiben dabei. Am häufigsten ist „2 Stunden ab jetzt, auf die Minute", was Eleganz gegen Vorhersagbarkeit tauscht. Ein Nutzer, der um 13:23 Uhr „in 2 Stunden" getippt hat, bekommt um 15:23 Uhr eine Benachrichtigung. Er lernt, ganze Zahlen zu tippen, wenn er saubere Zeiten möchte.

Warum „morgen" standardmäßig 9 Uhr ist

Wenn du „morgen" ohne Uhrzeit tippst, muss eine App eine Uhrzeit wählen. Die Konvention hat sich auf 9:00 Uhr in fast jeder App auf dem Markt konvergiert. Warum?

Weil die Kosten des falschen Ratens asymmetrisch sind. Wenn die App 9 Uhr wählt und du 11 Uhr wolltest, kannst du schnell anpassen, wenn du es bemerkst. Wenn die App Mitternacht oder eine andere zufällige Stunde wählt, bekommst du eine Benachrichtigung, während du schläfst, oder du verpasst sie ganz. 9 Uhr ist der sichere Standard für fast jede Art von Arbeitsaufgabe.

Einige Apps standardisieren auf 8 Uhr. Einige verwenden die Tageszeit, zu der du die Aufgabe getippt hast („du hast es um 14 Uhr gesagt, also meinst du wahrscheinlich 14 Uhr morgen"). Letzteres ist clever, aber unzuverlässig, weil die meisten Menschen, die um 14 Uhr eine Aufgabe tippen, dies während des Arbeitstages für Aufgaben tun, die sie an einem zukünftigen Arbeitstag erledigen möchten, nicht exakt um 14 Uhr am nächsten Tag.

Wie das in TodoBar aussieht

TodoBar verwendet das zweistufige Muster, das oben beschrieben wurde. Tippe eine Aufgabe mit einer zeitlichen Phrase und die Regex-Schicht feuert zuerst, in unter einer Millisekunde. Wenn sie ein Datum findet, erscheint die Aufgabe in deiner Liste mit der richtigen Fälligkeit. Wenn die Regex-Schicht die Phrase nicht auflösen kann, macht der On-Device-Foundation-Models-Klassifikator einen Versuch, mit einer typischen Latenz von etwa 50 Millisekunden. In jedem Fall verlässt kein Text deinen Mac.

Die Muster, die die Regex-Schicht erkennt, sind auf der Support-Seite dokumentiert. Als schnelle Referenz funktionieren all diese:

  • „in 30 Minuten"
  • „in 2 Stunden"
  • „in ein paar Stunden"
  • „morgen"
  • „morgen um 9 Uhr"
  • „heute Abend"
  • „heute Abend um 20 Uhr"
  • „nächsten Freitag"
  • „Freitag um 17 Uhr"
  • „12. Mai"
  • „12. Mai um 14 Uhr"
  • „am 15."
  • „in 3 Tagen"
  • „1 Woche ab jetzt"
  • „gleich morgen früh"

Wenn du etwas tippst, das der Parser nicht behandeln kann, wird die Aufgabe trotzdem ohne Fälligkeitsdatum hinzugefügt, und du kannst manuell eines über den Glocken-Button der Zeile anhängen. Der Fehlermodus des Parsers ist „kein Datum angehängt", nicht „Aufgabe verloren".

Wohin das alles führt

Die nächste interessante Grenze ist mehrsprachiges Parsen. Spanische Phrasen wie „mañana a las 9" sollten genauso gut funktionieren wie das englische Äquivalent, und in Apps, die Lokalisierung ernst nehmen, tun sie das zunehmend. Apples On-Device-Modell verarbeitet Spanisch in unseren internen Tests gut. Derselbe Ansatz wird für Französisch, Deutsch, Japanisch und wahrscheinlich die meisten großen Sprachen innerhalb des nächsten Jahres funktionieren.

Alle Teile sind vorhanden. Was früher eine teure Cloud-Anfrage war, ist jetzt ein lokaler Funktionsaufruf, der 50 Millisekunden dauert. Die Tatsache, dass eine Indie-Aufgaben-App das ausliefern kann, kostenlos, ohne nutzerbezogene Inferenzrechnung, ist die eigentliche Geschichte.

TodoBar ist eine freundliche Menüleisten-Aufgabenliste für macOS. Natürliche Fälligkeitsdaten, globaler Hotkey, iCloud-Sync. Einmal zahlen, für immer deins.

TodoBar im App Store holen