Ham konuşma günlükleri ölçek büyüdükçe okunamaz hale gelir. Birkaç aylık yoğun kullanımdan sonra, yüz binlerce satırlık karşılıklı konuşmaların ortasında kalırsınız. Bunları aramak yavaştır; okumak ise imkansızdır. Buna karşılık bir Obsidian kasası size yapılandırılmış uzun vadeli bellek sunar: çift yönlü bağlantılar, etiketler ve bağlantıları gün yüzüne çıkaran bir grafik görünümü. İkisi arasındaki fark barizdir. Bu farkı kapatmak otomasyon gerektirir.

Her gece bu farkı kapatan küçük bir pipeline kurdum. Hiçbir manuel müdahale gerektirmeden sırasıyla üç adım çalıştırıyor. İlk olarak, en son konuşma dışa aktarmalarını topluyor ve onları güncel durumlarına getiriyor. İkinci olarak, önceki 28 saatlik ham diyaloğu Claude aracılığıyla damıtıyor ve yapılandırılmış özetleri doğrudan Obsidian kasasına ekliyor. 28 saatlik bu pencere bilinçli bir seçimdir; bir önceki tam günü ve gecikmeler için küçük bir tamponu kapsar. Üçüncü olarak, tüm değişiklikleri commit edip push ederek özel bir depoya (repository) yedekliyor; bu depo hem çevrimdışı depolama hem de kazara silinmeye karşı bir sigorta görevi görüyor. Tüm zincirin sıkıcı ve güvenilir olması gerekir. Hedef, sıkıcı otomasyondur.

macOS Betiğinizi Sessizce Öldürdüğünde

Gece çalışan bir işin en büyük düşmanı dramatik bir çökme değildir. Sessizliktir.

macOS'ta Documents klasörü, hassas konumlara erişimi denetleyen gizlilik alt sistemi olan TCC'nin koruması altındadır. Eğer betiğinizi launchd aracılığıyla planlarsanız, sistem fark edeceğiniz bir hata vermeden süreci doğrudan engelleyebilir. Günlük dosyanız boş kalır. Kasanız asla güncellenmez. İş başarısız olmuştur ancak aradaki boşluğu ancak günler sonra notlarınızın güncelliğini yitirdiğini fark ettiğinizde anlarsınız.

Bunu sıkı bir hazırlık rutiniyle yönetiyorum. Ana çalışma başlamadan önce betik, hedef dizin içinde zararsız bir yazma işlemi yapmayı dener. Eğer macOS buna izin vermezse, hata hemen yakalanır ve belirgin bir masaüstü bildirimi gönderilir. Sessiz bir çıkış yoktur. Ardından, kabuk yorumlayıcısının (shell interpreter) kendisi için Sistem Ayarları'ndan Tam Disk Erişimi (Full Disk Access) verilmesi gerekir. Bu izin çok kapsamlıdır, bu yüzden tüm otomasyon betiklerini korunan Documents klasörü ağacının tamamen dışında tutarak maruziyeti en aza indiriyorum. Betikler başka bir yerdeki özel bir dizinde yaşar ve kasa yolu açıkça belirtilir. Erken tespit, gürültülü uyarılar ve dikkatli klasör yerleşimi kombinasyonu, bu sessiz ölüm senaryosunu çözer.

Uyku Modu, Zaman Aşımı ve Donan İşler İçin Tasarım

Dizüstü bilgisayarlar uyku moduna geçer. Ağlarda aksamalar olur. API çağrıları asılı kalır. Tek bir donan iş, tüm sistemi süresiz olarak kilitlememelidir.

Pipeline'ı kararlı tutmak için dört pratik mekanizma kullanıyorum.

Birden fazla zaman dilimi. Her şeyi sabahın erken saatlerindeki tek bir çalıştırmaya bağlamak yerine, zamanlayıcı gün boyunca farklı noktalarda tekrar deneme yapar. Eğer makine şafak vaktinde kapalıysa, öğleden sonraki pencere işi yakalar.

Tamamlandı işaretçileri. Bir çalıştırma başarılı olduğunda, geride net bir iz bırakır. Bir sonraki planlanmış deneme önce bu işaretçiyi kontrol eder. Eğer iş zaten tamamlanmışsa, saniyeler içinde temiz bir şekilde çıkar. Bu, gereksiz API çağrılarını ve mükerrer işlemleri önler.

mkdir aracılığıyla dosya kilitleri. Çakışan yürütmeleri önlemek için dizin tabanlı bir kilit kullanıyorum. Yerel dosya sistemlerinde bir dizin oluşturmak atomiktir, bu nedenle iki eşzamanlı iş aynı kilit yolunu talep edemez. Eğer dizin zaten mevcutsa, ikinci örnek anında iptal edilir. İlki bittiğinde dizini siler. Bu, PID dosyalarından daha hafiftir ve daha zordur