automation
Catatan teknis seputar web development, DevOps, dan integrasi AI.
50 artikel
- 21.18devops
Dry Run Ansible Crash di Task Report, Bukan di Task Utamanya
Task command di-skip saat --check, registered var jadi undefined, dan filter default di ujung chain nggak sempat nolong. Tempel default-nya dekat sumbernya.
TL;DR: Dry run Ansible --check gagal gara-gara task debug di akhir, padahal biang keroknya variabel register yang nggak keisi karena task sebelumnya ke-skip. default('?') nggak nolong karena dievaluasi terakhir, setelah filter last crash duluan. Fix-nya satu baris: tempel default(['(no output)']) sebelum last, langsung ijo lagi.
#ansible#automation#devops - 14.13tooling
Guard Konteks Prompt: Menutup Lubang Senyap di Sisi Input
Perakitan konteks yang gagal diam-diam bisa kirim pertanyaan telanjang ke chat AI. Guard dua ambang di sisi input menjaga rantai riset tetap jujur.
TL;DR: Pipeline riset AI bocor diam-diam karena prompt tanpa konteks lolos begitu aja, padahal sisi output udah dijaga ketat. Fix-nya sederhana: fungsi context_present() ngecek prompt minimal 400 karakter atau ada URL, kalo nggak ada cuma nulis warning plus tag context missing di JSON. Sengaja fail-soft, nggak blok, soalnya guard yang kejam malah bikin orang ngabaikin alarm.
#python#automation#llm - 13.11tooling
Scraper Chat AI: Saat Kata 'Sumber' Menipu Gate Selesai
Gate selesai scraper chat AI lolos di jawaban setengah jadi karena satu kata. Empat perbaikan dari satu audit loop polling, dari regex heading sampai clipboard.
TL;DR: Scraper riset sempat ngira jawaban tuntas padahal cuma setengah ditulis, gara-gara gate kegagalan lolos dari kata "Sumber" di tengah prosa. Empat perbaikan lahir dari satu audit: pola kegagalan cuma dicek sebelum jawaban ada, gate tuntas wajib heading "## Sumber" dijangkar, plus diagnostik clipboard. Intinya, kontrak eksplisit lebih tahan banting daripada heuristik longgar.
#python#regex#debugging - 02.28tooling
File .rejected: Keputusan Manusia Kalahkan Status Otomatis
Registri topik riset saya cuma punya status turunan, sampai file .rejected ngasih keputusan manusia tempat di rantai prioritas.
TL;DR: Jadi gini, registri topik riset nggak punya tempat buat keputusan tolak, jadi topik yang udah ditolak manual tetep nongol mulu. Solusinya gampang: bikin file .rejected yang ditulis manual, tool cuma boleh baca dan nampilin alasannya. Ini sejalan sama pola rustup, pyenv, nvm, dan git: mesin boleh usul, tapi keputusan manusia harus dihormati dan kelihatan.
#python#automation#tooling - 11.29ai
Blind Spot Gate Duplikat: Cakupan Vektor dan Batas 0,50
Gate duplikat berbasis cosine similarity cuma sekuat cakupan indeks vektornya. Pelajaran dari blind spot 32 artikel dan angka 0,50 yang dikalibrasi sendiri.
TL;DR: Gate cek duplikat kelihatan normal padahal 32 artikel nggak ke-embed, jadi skornya ngableng tanpa peringatan. Fix-nya backfill indeks plus self-check: judul artikel sendiri harus balikin slug-nya sendiri. Threshold 0,50 juga bukan angka sakral; ukur dulu distribusi skor korpus sendiri, baru taruh garis potong.
#embedding#python#automation - 16.15ai
Otomasi Browser AI: Menitipkan Draft Artikel ke Chat Qwen Gratis
Pengalaman membangun generator draf artikel dari chat.qwen.ai lewat browser otomatis: mekanik, jebakan, dan fallback yang membuatnya layak masuk cron.
#qwen#browser-automation#content-pipeline - 18.37devops
Container Healthy, Browser Mati: Jebakan Migrasi Docker Compose
Status healthy lima jam padahal browser di dalam kontainer mati sejak awal. Pelajaran soal user default, HOME, dan healthcheck dari satu migrasi compose.
#docker#playwright#debugging - 02.50devops
Satu API Key Cuma Bikin Riset Berhenti di 429
Rate limit 429 bikin pipeline riset berhenti. Pelajaran merancang rotasi multi-key: cooldown per status HTTP, single-pass, dan error yang jangan dirotasi.
TL;DR: Satu API key berarti satu batas rate limit, jadi patch ini merotasi beberapa key dengan cooldown berbeda: 429 ditunggu 60 detik, 402 lebih lama, error request seperti 400 dan 404 tidak dirotasi. Rotasinya single-pass agar tidak hang saat semua key cooldown. Rotasi bukan pengganti backoff; rapikan pola request dulu.
#firecrawl#python#automation - 11.30tooling
Login DeepSeek Hilang? Pindahkan Sesi, Jangan Rebuild Profil
Profil Camofox kehilangan login DeepSeek? Saya pindahkan cookies HttpOnly dan userToken localStorage ke profil yang sama, tanpa rebuild.
TL;DR: Sesi login DeepSeek di profil Camofox hilang karena ternyata ada dua lapis yang harus dipulihkan sekaligus: cookie HttpOnly di storage-state.json dan userToken di localStorage. Solusinya migrasi, bukan rebuild: ekspor cookies, dedupe by pasangan name-domain, injeksikan token via tiga skrip, plus keepalive polling tiap lima menit. Ingat, storage state itu kredensial plaintext—jaga seperti password dan regenerasi berkala.
#automation#playwright#deepseek