Iman Suherman — Building solutions. Delivering impact.

Artikel

Agent On Rails: hentikan forever-loop tanpa menjaga terminal

Kami menyetujui AOR-006 dan AOR-009: eskalasi model yang cerdas, watchdog lingkungan, state task milik engine, dan run report yang tahan lama — lalu menerbitkan cerita yang sama di situs produk.

Diperbarui 13 Sep 20268 menit baca
Agent On RailsDelivery AITata kelola
Agent On Rails — dari retry forever-loop ke DONE, dengan eskalasi model cerdas dan watchdog lingkungan

Coding agent itu kuat. Mereka juga jago membuang malam: memperbaiki penolakan yang sama lima belas kali, atau duduk di langkah npm/Gradle yang macet sementara tidak ada yang mengawasi. Agent On Rails ada supaya delivery tetap di jalur — spesifikasi sebagai otoritas, evidence sebelum done, manusia di gerbang merge.

Masalah dogfood

Dua mode kegagalan terus muncul saat kami dogfood Agent On Rails pada dirinya sendiri dan pada pekerjaan multi-repo yang nyata:

  • Forever-loop palsu: lima siklus fix↔review yang masing-masing memperbaiki bug berbeda dibunuh sebagai “max attempts,” padahal itu delivery yang normal.
  • Forever-loop sejati: model yang sama terus “memperbaiki” penolakan yang sama saat operator sedang offline.
  • Lingkungan macet: perangkat terputus, Gradle hung, npm hung — dan model yang lebih pintar tidak membantu.

Loading diagram…

Retry buta tetap macet. On Rails: deteksi kelas kegagalan, eskalasi atau pulihkan, lalu terus bergerak ke DONE.

Apa yang kami setujui

Setelah review backend terhadap CLI, engine, runtime, dan control plane, kami mengubah temuan itu menjadi kontrak control-plane yang disetujui — bukan kode prototype diam-diam. Spesifikasi AOR-006 (eskalasi model) dan AOR-009 (runtime AI Team tanpa penjagaan) kini berstatus approved di main.

Eskalasi cerdas (Opsi A)

Agent On Rails memutuskan verdict loop dari failure signature — bukan dari penghitung attempt yang kasar.

Loading diagram…

Opsi A: naik tangga model hanya jika signature macet berulang — bug berbeda tetap normal_progress.
  • Bug berbeda antar siklus → normal_progress (aman bahkan di 5+ siklus).
  • Signature macet yang sama → forever_loop, lalu naik tangga model: tier 1 → 2 → 3 → manusia.
  • Batas strike signature yang sama hanya plafon keamanan tambahan — bukan penghenti utama.

Watchdog: lingkungan bukan masalah model

Loading diagram…

Watchdog menghentikan langkah env yang hung, melanjutkan kerja independen, lalu mengeluarkan run report tahan lama.
  1. 01Deteksi kemacetan (timeout / tidak ada heartbeat).
  2. 02Beritahu manusia segera.
  3. 03Hentikan langkah yang macet; tandai blocked_environment.
  4. 04Lanjutkan pekerjaan siap yang independen.
  5. 05Saat wave idle, keluarkan run report — HUMAN_REQUIRED hanya jika acceptance yang blocking masih tersisa.

Klasifikasi perintah spesifik dulu: ./gradlew test memakai timeout test, bukan timeout perangkat lima menit hanya karena binary-nya gradlew.

Run report dan state milik engine

Setiap wave orkestrasi harus menghasilkan run report tahan lama yang bisa dibaca manusia tanpa memutar ulang log agent. Key wajib (array kosong boleh; key hilang tidak valid):

yaml
run_report:
  spec_id: AOR-00N
  terminal_status: final_review | human_required | in_progress
  completed: []
  blocked_environment: []
  skipped_due_to_deps: []
  coding_failures: []
  human_actions_needed: []
  notifications_sent: []

Engine adalah satu-satunya penulis report itu. Pemanggil mendaftarkan task (POST /v1/tasks), menjalankannya, dan mengirim event — mereka tidak merekonstruksi counter eskalasi.

Loading diagram…

Cara potongan Phase 1 saling terkait: watchdog dan eskalasi mengisi state milik engine; manusia tetap di gerbang merge.

Phase 1 vs AI Team penuh

Backend sudah punya potongan keputusan yang kuat (decide eskalasi, konsep watchdog). Phase 1 membuat potongan itu koheren: klasifikasi Gradle, task API bersama, history persisten, semantik Opsi A, RunReport lengkap. Loop Manager penuh (implementor ↔ reviewer ↔ fixer tanpa rantai manual) adalah Phase 2+ — tetap diatur spesifikasi yang sama yang sudah disetujui.

Di situs marketing

  • Home dan docs kini menjelaskan eskalasi Opsi A, semantik env watchdog, dan run report.
  • Rentang spesifikasi di halaman docs adalah AOR-001 … AOR-009.
  • Unduhan di hero: macOS (.dmg), Windows (.msi), Linux (docs build-from-source) — masing-masing dengan ikon.

Tautan

Apa selanjutnya

  1. Implementasi Phase 1 di engine, runtime, dan CLI sesuai kontrak yang disetujui.
  2. Buktikan happy path tanpa penjagaan dan fixture env-block + continue-independent.
  3. Pertahankan FINAL_REVIEW / merge hanya untuk manusia — agent menyiapkan; orang yang memutuskan.

Intinya: Agent On Rails bukan “chat IDE lain.” Ia adalah sistem delivery yang dikelola. Minggu ini kami membuat kontrak eskalasi dan watchdog eksplisit, disetujui, dan publik — supaya pekerjaan implementasi berikutnya punya jalur yang jelas.

← Semua artikel

Agent On Rails: hentikan forever-loop tanpa menjaga terminal · suherman.net