Ruwe gespreklogs worden onleesbaar op grote schaal. Na een paar maanden intensief gebruik sta je voor honderdduizenden regels heen-en-weer gesprekken. Het doorzoeken ervan is traag; het lezen ervan is onmogelijk. Een Obsidian-vault biedt daarentegen een gestructureerd langetermijngeheugen: bidirectionele links, tags en een graph view die verbindingen zichtbaar maakt. Het gat tussen die twee is overduidelijk. Het dichten ervan vereist automatisering.
Ik heb een kleine pipeline gebouwd die dat gat elke nacht overbrugt. Het voert drie stappen opeenvolgend uit, zonder handmatige tussenkomst. Ten eerste verzamelt het de nieuwste gespreksexports en ververst deze naar hun huidige staat. Ten tweede distilleert het de voorgaande 28 uur aan ruwe dialoog via Claude, waarbij gestructureerde samenvattingen direct in de Obsidian-vault worden toegevoegd. Dat venster van 28 uur is bewust gekozen; het dekt de volledige vorige dag plus een kleine buffer voor vertragingen. Ten derde maakt het alles een back-up door de wijzigingen te committen en te pushen naar een privé-repository, die zowel dient als offline opslag als verzekering tegen per ongeluk verwijderen. De hele keten moet saai en betrouwbaar zijn. Het doel is saaie automatisering.
Wanneer macOS je script stilletjes doodt
De grootste vijand van een nachtelijke taak is geen dramatische crash. Het is de stilte.
Op macOS staat de Documents-map onder de bescherming van TCC, het privacy-subsysteem dat de toegang tot gevoelige locaties bewaakt. Als je je script plant via launchd, kan het systeem het proces simpelweg blokkeren zonder een foutmelding te geven die je opmerkt. Je logbestand blijft leeg. Je vault wordt nooit bijgewerkt. De taak is mislukt, maar je ontdekt het gat pas dagen later wanneer je beseft dat je notities verouderd zijn.
Ik los dit op met een strikte preflight-routine. Voordat het hoofdwerk begint, probeert het script een onschadelijke schrijfactie uit te voeren in de doelmap. Als macOS dit weigert, wordt de fout onmiddellijk opgevangen en wordt er een luid desktopbericht verzonden. Er is geen stille afsluiting. Vervolgens moet de shell-interpreter zelf 'Full Disk Access' krijgen in de Systeeminstellingen. Die toestemming is erg algemeen, dus ik minimaliseer de blootstelling door alle automatiseringsscripts volledig buiten de beschermde Documents-mapboom te houden. Ze staan in een speciale map elders, en het vault-pad wordt expliciet vermeld. Die combinatie van vroege detectie, luidruchtige meldingen en zorgvuldige mappenplaatsing lost het scenario van de stille dood op.
Ontwerpen voor slaapstand, time-outs en vastgelopen taken
Laptops gaan in slaapstand. Netwerken haperen. API-aanroepen blijven hangen. Een enkele vastgelopen taak mag het hele systeem niet onbeperkt ophouden.
Ik gebruik vier praktische mechanismen om de pipeline stabiel te houden.
Meerdere tijdsloten. In plaats van alles in te zetten op één enkele run in de vroege ochtend, probeert de scheduler het op verschillende momenten gedurende de dag opnieuw. Als de machine bij zonsopgang dicht zat, vangt het middagvenster het nog steeds op.
Voltooiingsmarkeringen. Wanneer een run slaagt, laat het een duidelijk spoor achter. De volgende geplande poging controleert eerst op die markering. Als het werk al voltooid is, sluit het binnen enkele seconden netjes af. Dit voorkomt onnodige API-aanroepen en redundante verwerking.
File locks via mkdir. Om overlappende uitvoeringen te voorkomen, gebruik ik een lock op basis van een map. Het aanmaken van een map is atomair op lokale bestandssystemen, waardoor twee gelijktijdige taken niet hetzelfde lock-pad kunnen opeisen. Als de map al bestaat, wordt de tweede instantie onmiddellijk afgebroken. Wanneer de eerste klaar is, wordt de map verwijderd. Dit is lichter dan PID-bestanden en moeilijker
