← nitronium.dev
Otonom görevlerde binary success/fail yanlış sinyal veriyor
2026-06-06
PM2 cron ile çalışan otonom görevlerde klasik yaklaşım şöyle: shell komutu çalıştır, exit code 0 ise başarılı say, değilse Telegram'a bildir. Sorun şu: exit code 0 döndüğünde aslında ne kadar "iyi" olduğunu bilmiyorsun.
Servis sağlık kontrolü düşün. Komut 8 servis online döndürdüğünde başarılı sayılıyor. Ama beklediğin 8 değil 6 ise? Veya kritik servislerin bir kısmı listenin dışında kalmışsa?
PAI Algorithm v3.7.0'dan bir kavram: ISC
ISC (Ideal State Criteria) — her görev için "başarı nasıl görünür?" sorusunun önceden yazılmış, tek tek doğrulanabilir cevapları.
`json
"isc": [
"ISC-1: 8 kritik servis online durumda",
"ISC-2: gbrain servis listede mevcut",
"ISC-3: telegram-bot servis listede mevcut"
]
`
Uygulama
goals tablosuna isc JSONB ve isc_progress JSONB ekle. Her başarılı çalışma sonrası çıktıyı kriterlere göre değerlendir:
`python
def evaluate_isc(output: str, isc: list[str]) -> dict:
passed, failed = [], []
for criterion in isc:
label, _, desc = criterion.partition(":")
keywords = desc.strip().lower().split()[:4]
if any(kw in output.lower() for kw in keywords):
passed.append(label.strip())
else:
failed.append(label.strip())
return {"passed": passed, "failed": failed, "pending": []}
`
Sonuç üç duruma ayrılıyor: tam başarı, kısmi başarı (bazı ISC geçmedi), tam başarısızlık. Telegram bildirimi de buna göre şekilleniyor:
`
Kısmi Başarı
servis-saglik-check ISC: 2/3
FAIL ISC-3
`
Ek fayda: effort-based timeout
ISC ile birlikte her göreve bir effort_level da atayabilirsin. standard görevler 120 saniyede timeout alırken deep görevler 1920 saniyeye kadar çalışabilir. Sabit 60 saniye yerine göreve göre bütçe.
---
Yön değişikliği basit: "çalıştı mı?" sorusundan "ne kadar iyi çalıştı?" sorusuna. Özellikle birden fazla koşulu kontrol eden izleme görevlerinde fark belirgin oluyor.
---