ai
Catatan teknis seputar web development, DevOps, dan integrasi AI.
68 artikel
- 00.09ai
Versi Sama, Isi Beda: Rebase Skill Claude Code yang Drift
File skill lokal dan upstream sama-sama tertulis 2.2.1, tapi isinya sudah berbeda jauh. Pelajaran cara me-rebase skill tanpa mewarisi drift.
TL;DR: Dugaan saya salah banget: versi sama di frontmatter ternyata nggak jamin isinya sama, salinan lokal SKILL.md udah ditulis ulang sampai doktrin keamanannya kebalik. Jadi filenya direbase biar identik sama upstream, terus semua aturan lokal dipindah ke references dan script wrapper. Pelajarannya, jangan percaya angka versi, selalu byte-compare, dan taruh tambahan di lapisan atas.
#claude-code#hermes-agent#agent-skills - 09.43ai
Instruksi tersembunyi di file media tetap data, bukan perintah
Pipeline ingest media wajib membawa kalimat pembajakan verbatim sebagai data. Justru itulah bukti file tidak pernah bertindak jadi perintah.
TL;DR: Tengah malam penulis ngetes pipeline ingest media pake audio sintesis sendiri yang isinya perintah injeksi prompt. Alih-alih dibuang, kalimat berbahayanya justru wajib utuh di transkrip dan dilabel untrusted, soalnya bahayanya bukan teksnya, tapi waktu teks berubah jadi instruksi. Model transkripsinya dibikin stub aja, yang diuji kontrak datanya, dibuktikan lewat asersi.
#prompt-injection#llm-security#whisper - 07.31ai
Runner Verifikasi Golden File: Agen Dilarang Jadi Hakim Sendiri
Skor 70/0/0 bikin saya yakin pipeline agen sudah deterministik. Ternyata temperature 0 pun nggak menjamin apa-apa; satu-satunya saksi cuma diff golden.
TL;DR: Awalnya sempat senyum karena skor 70/0/0, kira pipeline udah deterministik padahal nggak. Skor itu cuma bukti runner verifikasinya bekerja, soalnya temp 0 pun model masih bisa ngeluarin output beda gara-gara batch invariance. Jadi verdict mesti diambil dari diff artefak lawan golden file, bukan dari omongan si agen.
#ai-agents#testing#evaluation - 02.54ai
MP4 valid yang nggak akan pernah tertranscribe
File video bisa saja valid tapi tak punya audio. Aksi skip nonstate membuat barisnya tetap kelihatan dan menahan pipeline sampai ada keputusan.
TL;DR: File MP4-nya valid, cuma isinya nggak ada track audio sama sekali, jadi asumsi video pasti punya suara itu salah. Sekarang ffprobe dicek duluan sebelum ekstraksi, hasil flag audio_track disimpan di meta.json, dan kalau nggak ada audio barisnya di-skip tapi tetap keliatan, bukan ditandai selesai. Frame video diekstrak pakai fps konstan plus timestamp, audionya jadi WAV mono 16kHz.
#ffmpeg#whisper#ffprobe - 01.07ai
Dua rumpun kegagalan transcribe yang akhirnya saya pisah
Pipeline transkripsi saya mati diam-diam di tengah window. Ternyata hang itu exception yang harus ditangkap, dan tiap kegagalan punya pemiliknya sendiri.
TL;DR: Proses transkrip yang hang itu ternyata nggak mati diam, cuma exception TimeoutExpired yang luput ditangkap. Kegagalannya dipetakan jadi dua rumpun: infrastruktur (exit 5, cukup retry) dan file rusak (exit 6, dicatat terus attempt-nya dinaikkan). File rusak dicoba max 3 kali lalu di-skip, tapi statusnya non-state jadi tetap ngeblok pipeline sampai manusia yang memutuskan.
#whisper#ffmpeg#python - 00.10ai
Rem biaya Claude Code ternyata bukan di limit turn
Kupikir --max-turns cukup buat nahan biaya delegasi. Ternyata flag itu cuma ngitung putaran; yang benar-benar nahan dolar adalah --max-budget-usd.
TL;DR: Penulis ngira --max-turns bisa nahan biaya Claude Code, ternyata cuma nahan jumlah putaran, bukan uang. Tesnya, tugas selesai di satu turn senilai 0.045 dolar tanpa nyentuh cap dua, sedangkan --max-budget-usd beneran menghentikan proses begitu biaya lewat batas. Jadi buat nahan tagihan, pasang cap dalam dolar, limit turn cukup buat nahan loop muter-muter.
#claude-code#cli#llm - 23.26ai
Filter transkrip itu proyeksi, bukan parameter
Mengubah aturan filter nggak harus menjalankan ulang whisper. Filter itu proyeksi dari stdout yang udah tersimpan, distamp sha256 tiap aturan berubah.
TL;DR: Ganti aturan filter kata kasar bikin penulis hampir re-run whisper buat semua file audio, padahal boros banget. Ternyata filter cuma proyeksi dari output whisper yang udah tersimpan, jadi yang diulang cukup proyeksinya aja, bukan transkripsinya. Solusinya: simpan raw output, tempel filter_version berupa hash sha256 di frontmatter, refilter selesai detikan tanpa panggil model.
#python#whisper#idempotency - 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