Claude Code (noch) nicht bereit für Unternehmenseinsatz
Am in Software Engineering | Keine Kommentare »
Tags: KI, OpenSource, Python
Ich bin ein paar Schritte weiter mit der Entwicklung meiner Personensuche anhand von Gesichtern. Ich kann inzwischen anhand eines Gesichts nach weiteren Bildern mit diesem Gesicht suchen. Der Wechsel von meinem Hauptrechner auf einen Laptop hat mich dabei vor unerwartete Probleme gestellt…
Aktueller Stand PhotoAIdent
Inzwischen habe ich weitere rund 10 Stunden in die Entwicklung von PhotoAIdent mittels Claude Code investiert. Wobei ich die meiste Zeit natürlich keine aktive Aufgabe hatte, sondern mich auf wichtigere Dinge wie Wäsche aufhängen konzentrieren konnte, während Claude vor sich hingewerkelt hat.

Bei einfachen Aufgaben ist Claude meist nach ein paar Minuten fertig. Größere Features, wie die Suche von Personen anhand von bereits gelabelten Gesichtern, können hingegen schon mal eine halbe Stunde dauern.
Aufgehört hatte ich beim letzten Mal damit, dass man unbekannte Gesichter einer Person zuordnen konnte. Neu in PhotoAIdent sind nun folgende Features:
- Suche nach allen Fotos, in denen das Gesicht einer Person vorkommt
- Labeln von Gesichtern eines bestimmten Fotos
- Verwaltung von Personen (etwa falsch zugeordnete Fotos löschen)
- Altersgruppen für das Gesicht einer Person, da sich das Aussehen ja über Jahrzehnte ändert (insbesondere in der Kindheit)
- ein About Dialog mit Links zur GitHub Seite und Angabe der verwendeten OpenSource Bibliotheken
- Auslesen und Speichern von Exif Bildinformationen
- Indizierung neuer Bilder bei Programmstart
- stabilerer Übersetzungsprozess für das UI
- Lauffähigkeit unter MacOS
- Löschen von temporären Dateien wie Thumbnails, wenn man ein anderes Verzeichnis für die Fotosammlung auswählt
Die vollständige Liste findet man in den Commit Messages der letzten Tage auf GitHub.

Ich habe für das PhotoAIdent Repo zusätzlich die statische Code Analyse von SonarCloud aktiviert. Die dabei gefunden Probleme habe ich per API in eine JSON Datei exportiert und dann von Claude beheben lassen. Inzwischen gibt es aber wieder ein paar neue Probleme.
Verteiltes Arbeiten mit Claude Code
Die größte Überraschung für mich war, dass beim Wechsel des Rechners Claude sein Wissen verloren hat. Natürlich hat er wieder die CLAUDE.md Datei eingelesen, aber in dieser speichert er eben nicht das gesamte Wissen, etwa wenn ich ihn ermahne, immer für vollständige Tests zu sorgen. Diese Sachen legt Claude in eigenen Dateien ab, die nicht im Repo gespeichert sind. Dadurch wird es sehr schwer, dass sich Claude auf verschiedenen Rechnern oder bei verschiedenen Entwicklern gleich verhält.

Momentan wirkt Claude Code so, als ob es für einen einzelnen Vibe Coder entwickelt wurde. Natürlich gibt es schon diverse Erweiterungen, um dieses Gedächtnis zwischen Rechnern zu synchronisieren, aber das ist natürlich alles irgendwie Pfusch. Hier muss Anthropic schnell nachliefern!
Token sparen
Die Rechenzeit wird in Token abgerechnet. Je nach Abostufe sind verschiedene Kontingente enthalten. Die Kontingente sind aktuell noch sehr begrenzt, da die KI Anbieter nicht mit dem Ausbau der notwendigen Kapazitäten hinterher kommen.
Deshalb muss man versuchen, Tokens zu sparen. Jedes Wort, was an Claude gesendet oder von Claude erzeugt wird, verbraucht Token. Die wichtigste Maßnahme ist es, Claude ein Werkzeug zum direkten Lesen von Quellcode zu geben, da Claude sonst grep und cat nutzt, um Dateien zu finden und zu lesen. Das ist natürlich höchst ineffizient.
Ich habe deshalb in die Entwicklungsabhängigkeiten Pyright aufgenommen und in Claude das Python Language Server Plugin konfiguriert. Damit kann Claude direkt Dateien oder sogar einzelne Funktionen im Quellcode lesen. Das spart sehr viele Tokens.
Ein weiteres wichtiges Werkzeug ist das offizielle Git Plugin, damit Claude direkt zum Beispiel Commits erzeugen kann. Weitere Plugins, wie eine lokale KI Suche, habe ich noch nicht ausprobiert.
Tokens kann ich auch dadurch sparen, dass ich die Ausgabe von eingesetzten Werkzeugen reduziere. So lasse ich inzwischen alle Werkzeuge für statische Code Analyse, Quelltextformatierung und Testautomatisierung im Leise Modus („–quiet“) laufen. Die Werkzeuge sollen nur noch melden, wenn es ein Problem gibt.
Über einen Hook führt Claude jetzt immer eine Quelltextformatierung mittels black aus. Dadurch passiert es viel seltener, dass er beim Abschließen einer Aufgabe noch manuell den Quelltext umformatieren muss.
Generell würde ich mir aber von Claude viel mehr Intelligenz erwarten, wenn es um das Sparen von Token geht. Warum kann er nicht selbst prüfen, welche Programmiersprache verwendet wird und ob ein passender Language Server zur Verfügung steht? Und auch ein Werkzeug zur Quelltextformatierung könnte er direkt selbst vorschlagen. So muss jeder Entwickler diese Sachen selbst herausfinden.
Nächster Schritt
Momentan ist die PhotoAIdent noch nicht sehr schön und gut nutzbar. Deshalb möchte ich nun versuchen, ein paar Wireframes zu malen und Claude die Oberfläche anhand dieser Bilder umbauen lassen. Auch ich will ich dann endlich eine vernünftige Suchseite einbauen, damit man gezielt nach Personen suchen kann. Auch eine Suche auf einer Karte ist dann möglich. Die notwendigen GPS Informationen habe ich ja schon aus den Bildern extrahiert und in meiner Datenbank gespeichert.