Bei der Online-Buchung eines Mietwagens verlangt das Formular die Nummer und das Ablaufdatum des Führerscheins. Der Führerschein ist nicht zur Hand. Im letzten Jahr, beim neuen Führerschein, entstanden Fotos von Vorder- und Rückseite, doch die stecken irgendwo zwischen Zehntausenden Fotos auf dem iPhone. Der Wunsch: Comma in eigenen Worten fragen und die beiden Fotos zurückbekommen.
Diese Anleitung zeigt einen Weg dorthin: Lokale Modelle bauen einen Index der Fotos auf, und Comma durchsucht ihn. Es handelt sich um eine Beispielkonfiguration auf einem Mac, nicht um eine eingebaute Funktion von Comma.
Die Mediathek bleibt lokal
Comma braucht keine Kopie der Fotos. Die schwere Arbeit, also den Text in jedem Bild zu lesen und jedes Foto in Vektoren umzuwandeln, erledigen lokale Modelle. Der Agent erhält das Ergebnis einer Suche: einige Foto-IDs, ihre Daten, den darin erkannten Text und, wenn eine Auswahl nötig ist, einen Kontaktbogen mit Miniaturen. Nur die Fotos, die am Ende ausgewählt werden, gelangen in den Chat.
Die Fotos selbst werden weiterhin über iCloud synchronisiert; „lokal“ meint hier die Texterkennung, die Vektoren und den Index nach dem Export. Nutzt Comma ein Cloud-Modell, gehen diese Suchergebnisse und jedes Bild, das Comma ansehen soll, an den gewählten Modellanbieter. Bei einem Dokument wie dem Führerschein enthält der erkannte Text die Nummer und die Adresse. Der Index selbst wird nirgendwohin gesendet. Comma ist Open Source und lässt sich auch auf der eigenen Maschine betreiben.
Den Fotoindex aufbauen
Der Index hängt sich an den Weg, den die Fotos ohnehin nehmen. Auf dem iPhone ändert sich nichts.
Die Einrichtung hat drei Schritte:
Fotos auf den Mac holen. Die Fotos vom iPhone mit iCloud-Fotos auf den Mac synchronisieren und neue Fotos täglich in einen Ordner exportieren.
Mit lokalen Modellen verarbeiten. Den Text in jedem Bild erkennen und das Bild mit Chinese-CLIP und Qwen3-VL-Embedding in Vektoren umwandeln.
In einem lokalen Index speichern. Die Ergebnisse in einer lokalen Datenbank ablegen, dazu ein Befehl für die Suche. In diesem Beispiel heißt der Befehl
lpa.
Was eine Suche liefert
Lokal ist eine Suche ein Befehl. Ein Aufruf kann mehrere Formulierungen enthalten, und die Modelle werden nur einmal geladen. Der Agent macht aus Wörtern wie „letztes Jahr“ einen Datumsbereich.
Jedes Ergebnis zeigt, welche Art von Beleg dahintersteht:
--prefer text stellt Texttreffer nach vorn und eignet sich für Dokumente, Karten und Bildschirmfotos. --prefer picture stellt ähnlich aussehende Bilder nach vorn und eignet sich für eine Katze oder einen Strand. Fast gleiche Fotos, die innerhalb weniger Minuten entstanden sind, belegen nur einen Platz in der Liste; die übrigen hängen darunter.
Sind die obersten Ergebnisse unsicher, rät der Agent nicht. Er legt die Miniaturen der Kandidaten auf einen nummerierten Bogen, höchstens neun, und bittet um eine Auswahl.
Wie die beiden Vektorsätze zusammenwirken, wurde an einer vollständigen Mediathek mit rund 50.000 Fotos kalibriert. Mit Qwen3-VL-Embedding allein landeten die richtigen Antworten, die ein Mensch ausgewählt hatte, weiter hinten als mit Chinese-CLIP allein. Mit zusammengeführten Ranglisten schnitt jeder geprüfte Eintrag mindestens so gut ab wie mit einem der beiden Modelle allein. Auch „Möglich“ gibt es nur, wenn die Ähnlichkeit beider Modelle über der Schwelle liegt: Bei einer Testabfrage sank die Zahl der als „Möglich“ markierten Fotos von 4.970 auf 4. Der Preis: Eine Suche dauert 3,5–6 Sekunden statt etwa 3.
Dieses Beispiel läuft auf einem MacBook Air mit 16 GB Arbeitsspeicher, mit der 2B-Version von Qwen3-VL-Embedding. Auf einer stärkeren Maschine lassen sich größere Qwen-Modelle verwenden:
Ein größeres Vektormodell. Qwen3-VL-Embedding-2B durch Qwen3-VL-Embedding-8B ersetzen. Danach müssen die Vektoren aller Fotos mit dem neuen Modell neu berechnet werden.
Beschreibungen und Schlagwörter für jedes Foto. Zusätzlich Qwen3-VL-4B-Instruct oder Qwen3-VL-8B-Instruct ausführen, um für jedes Foto eine einzeilige Beschreibung und einige Schlagwörter zu schreiben und im Textindex zu speichern. Auf einem MacBook Pro mit 24 GB Arbeitsspeicher läuft zum Beispiel das 8B-Modell mit 8-Bit-Quantisierung. Die Schlagwörter taugen für eine grobe Vorauswahl; dass sie stimmen, ist nicht garantiert.
Und Englisch? Chinese-CLIP wurde vor allem mit chinesischen Bildern und Texten trainiert und ist für englische Abfragen nicht verlässlich. Die beiden anderen Teile sind nicht betroffen: Die Texterkennung liest Chinesisch wie Englisch, und Qwen3-VL-Embedding unterstützt viele Sprachen. Deshalb gehören chinesische und englische Formulierungen in dieselbe Suche, wie im Befehl oben; das lässt sich in einem Skill festhalten. Sind Mediathek und Fragen überwiegend englisch, kann Chinese-CLIP auch durch das ursprüngliche CLIP ersetzt werden, was ebenfalls eine Neuberechnung der Vektoren bedeutet.
Familie und Freunde finden
Fotos gruppiert die Gesichter derselben Person bereits. Der Index nutzt diese Gruppen direkt und macht keine eigene Gesichtserkennung.
Zuerst Personen benennen. Beim ersten Mal wählt der Agent einige Fotostapel aus diesen Gruppen, nummeriert sie und fragt, wer das ist. Erst nach einer Antwort wie „Nummer 3 ist Mama“ merkt er es sich. Eine nicht bestätigte Gruppe gilt als niemand.
Nach Person suchen. Danach berücksichtigt die Suche bei einem Namen nur die Fotos, auf denen diese Person zu sehen ist. Namen lassen sich kombinieren: Bei zwei Namen kommen nur Fotos mit beiden Personen zurück, also gemeinsame Fotos.
Mit anderen Bedingungen kombinieren. Ein Name lässt sich mit Bildinhalt und Zeitraum verbinden, etwa „Fotos von Mama und mir am Strand letztes Jahr“:
Ist ein Name nicht bestätigt oder haben zwei Personen denselben Namen, sagt die Suche das, statt zu raten. Ein falscher Name lässt sich korrigieren, und jede Korrektur lässt sich rückgängig machen.
So werden Videos gefunden
Videos werden getrennt von Fotos durchsucht. Eine normale Suche betrachtet nur Fotos. Soll es etwa das Video sein, in dem das Kind die Geburtstagskerzen auspustet, genügt der Hinweis an Comma, dass ein Video gesucht wird; dann ergänzt Comma die Suche um --source video:
Dahinter stehen drei Schritte:
Einzelbilder entnehmen. Das Video selbst geht nie in ein Modell. Das Indexierungsprogramm entnimmt alle 5 Sekunden ein Einzelbild, höchstens 12 pro Video.
Nach Einzelbildern suchen. Die Einzelbilder durchlaufen dieselbe Verarbeitung wie Fotos: Texterkennung und beide Vektorsätze. Eine Suche vergleicht diese Einzelbilder; passt eines, gilt das ganze Video als gefunden und belegt nur einen Platz in den Ergebnissen.
Das Video senden. Nach der Auswahl sendet der Agent es mit
lpa video.
Vorerst zählt nur das Bild, nicht der Ton. Was in einem Video gesagt wird, lässt sich noch nicht durchsuchen, und Personen in einem Video werden noch nicht erkannt. Die Zahl der Einzelbilder ist begrenzt, sodass etwas, das in einem langen Video nur kurz aufblitzt, unter Umständen nicht gefunden wird.
Wie LocalPhotoAgent aufgebaut ist
Das lpa in dieser Anleitung stammt aus LocalPhotoAgent, einem selbst geschriebenen Indexierungsprogramm, das wir als Open Source veröffentlichen werden. Die Indexierung ist oben beschrieben; zwei Punkte kommen hinzu:
Es lässt sich jederzeit anhalten. Jeder Schritt jedes Fotos wird einzeln festgehalten. Nach einem Abbruch geht es beim nächsten Mal weiter; nach einer geänderten Einstellung läuft nur der betroffene Schritt erneut. Während der Arbeit behält es Arbeitsspeicher, Temperatur und Speicherplatz im Blick und pausiert, sobald ein Wert seine Grenze überschreitet.
Es gibt dem Agenten einige Befehle.
lpa searchsucht,lpa sheeterstellt einen Kontaktbogen,lpa previewsendet Fotos undlpa videosendet Videos. Bei der Suche nach Fotos ruft der Agent sie in dieser Reihenfolge auf:
Comma verbinden
Vorausgesetzt ist, dass LocalPhotoAgent auf dem Mac bereits funktioniert. Die Verbindung hat vier Schritte:
Ein Gerät hinzufügen. In Comma unter Settings > Devices auf Add device klicken, um einen Installationsbefehl zu erhalten.
Den Befehl ausführen. Ihn im Terminal des Macs ausführen, auf dem die Mediathek liegt, um den Comma Connector zu installieren.
Den Zugriff einschalten. Ein neues Gerät steht zunächst auf Off. Erst mit Full kann der Agent
lpaausführen.Einen Skill schreiben. Dem Agenten mitteilen, dass er zuerst sucht, bei Unsicherheit einen Kontaktbogen schickt und Fotos erst nach der Auswahl sendet. Es genügt auch, Comma zu bitten, „einen Skill zu erstellen“.
Danach reicht eine Frage wie in jedem Chat: „Finde die Fotos meines Führerscheins vom letzten Jahr, Vorder- und Rückseite.“
Vertrauen und Grenzen
Der Index liest die Originale nur. Er verschiebt, bearbeitet oder löscht sie nie. Eine Suche berührt die externe Festplatte überhaupt nicht; nur das Erstellen eines Kontaktbogens und das Senden eines Fotos lesen von ihr. Fotos zu verschieben oder zu löschen gehört nicht zu dieser Konfiguration. Allerdings kann der Agent mit dem Zugriff Full auf diesem Mac auch andere Befehle als lpa ausführen.
Ein Texttreffer bedeutet nur, dass die Wörter gefunden wurden, nicht, dass es das gesuchte Foto ist. „Möglich“ ist nur ein Kandidat. Wenn Comma eine Anfrage als erledigt markiert, lohnt ein Blick auf die gesendeten Fotos.
Für den ersten Versuch eignet sich etwa: „Finde die Fotos meines Führerscheins vom letzten Jahr. Zeig mir zuerst den Kontaktbogen und sende, verschiebe oder lösche nichts.“


