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.

7 menit baca
Agent On RailsDelivery AITata kelola

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.

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.

  • 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

  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):

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.

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