Rohe Gesprächsprotokolle werden in großem Maßstab unlesbar. Nach einigen Monaten intensiver Nutzung starrt man auf Hunderttausende Zeilen von Hin und Her. Die Suche danach ist langsam; das Lesen ist unmöglich. Ein Obsidian-Vault hingegen bietet Ihnen ein strukturiertes Langzeitgedächtnis: bidirektionale Links, Tags und eine Graph-Ansicht, die Verbindungen sichtbar macht. Die Lücke zwischen beiden ist offensichtlich. Sie zu schließen, erfordert Automatisierung.
Ich habe eine kleine Pipeline gebaut, die diese Lücke jede Nacht schließt. Sie führt drei Schritte nacheinander aus, ganz ohne manuelles Eingreifen. Erstens werden die neuesten Gesprächsexporte gesammelt und auf ihren aktuellen Stand gebracht. Zweitens werden die vorangegangenen 28 Stunden des rohen Dialogs durch Claude destilliert, wobei strukturierte Zusammenfassungen direkt in den Obsidian-Vault eingefügt werden. Dieses 28-Stunden-Fenster ist bewusst gewählt; es deckt den gesamten vorangegangenen Tag plus einen kleinen Puffer für Verzögerungen ab. Drittens wird alles gesichert, indem die Änderungen in ein privates Repository committet und gepusht werden, das sowohl als Offline-Speicher als auch als Versicherung gegen versehentliches Löschen dient. Die gesamte Kette muss langweilig und zuverlässig sein. Langweilige Automatisierung ist das Ziel.
Wenn macOS Ihr Skript lautlos beendet
Der größte Feind eines nächtlichen Jobs ist kein dramatischer Absturz. Es ist das Schweigen.
Unter macOS steht der Ordner „Dokumente“ unter dem Schutz von TCC, dem Datenschutz-Subsystem, das den Zugriff auf sensible Orte regelt. Wenn Sie Ihr Skript über launchd planen, kann das System den Prozess einfach blockieren, ohne einen Fehler auszugeben, den Sie bemerken würden. Ihre Logdatei bleibt leer. Ihr Vault wird nie aktualisiert. Der Job ist fehlgeschlagen, aber Sie entdecken die Lücke erst Tage später, wenn Sie merken, dass Ihre Notizen veraltet sind.
Ich handhabe dies mit einer strengen Preflight-Routine. Bevor die eigentliche Arbeit beginnt, versucht das Skript eine harmlose Schreiboperation innerhalb des Zielverzeichnisses. Wenn macOS dies verweigert, wird der Fehler sofort erkannt und eine deutliche Desktop-Benachrichtigung ausgelöst. Es gibt kein stilles Beenden. Als Nächstes muss dem Shell-Interpreter selbst in den Systemeinstellungen der „Festplattenvollzugriff“ (Full Disk Access) gewährt werden. Diese Berechtigung ist sehr weitreichend, daher minimiere ich das Risiko, indem ich alle Automatisierungsskripte vollständig außerhalb des geschützten Dokumente-Ordnerbaums halte. Sie liegen in einem separaten Verzeichnis an anderer Stelle, und der Pfad zum Vault wird explizit angegeben. Diese Kombination aus Früherkennung, lautstarken Warnungen und sorgfältiger Ordnerplatzierung behebt das Szenario des lautlosen Sterbens.
Design für Ruhezustand, Timeouts und eingefrorene Jobs
Laptops gehen in den Ruhezustand. Netzwerke haben Aussetzer. API-Aufrufe hängen. Ein einzelner eingefrorener Job sollte nicht das gesamte System auf unbestimmte Zeit blockieren.
Ich verwende vier praktische Mechanismen, um die Pipeline stabil zu halten.
Mehrere Zeitfenster. Anstatt alles auf einen einzigen Durchlauf am frühen Morgen zu setzen, versucht der Scheduler zu verschiedenen Zeiten über den Tag verteilt erneut, den Job auszuführen. Wenn der Computer im Morgengrauen geschlossen war, wird der Durchlauf im Nachmittagsfenster noch erfasst.
Erledigungs-Marker. Wenn ein Durchlauf erfolgreich ist, hinterlässt er einen klaren Wegweiser. Der nächste geplante Versuch prüft zuerst auf diesen Marker. Wenn die Arbeit bereits abgeschlossen ist, beendet sich das Skript innerhalb von Sekunden sauber. Dies verhindert unnötige API-Aufrufe und redundante Verarbeitung.
Dateisperren durch mkdir. Um überlappende Ausführungen zu vermeiden, verwende ich eine Verzeichnis-basierte Sperre. Das Erstellen eines Verzeichnisses ist auf lokalen Dateisystemen atomar, sodass zwei gleichzeitige Jobs nicht denselben Sperrpfad beanspruchen können. Wenn das Verzeichnis bereits existiert, bricht die zweite Instanz sofort ab. Wenn die erste fertig ist, wird das Verzeichnis entfernt. Dies ist leichter als PID-Dateien und schwieriger
