Lewati ke konten utama

Merancang Orchestrator Coding Agentik yang Deterministik

Bagaimana skeleton-parallel bermigrasi dari eksekusi paralel berbasis fase ke loop agent berbasis tugas dengan retry terbatas, checkpoint, dan quality gate.

5 menit baca·Menengah·Konsep·10 Okt 2026
agentic developmentorchestrationquality gatesdeterministic systems

Merancang Orchestrator Coding Agentik yang Deterministik

Apa yang Dibangun​

skeleton-parallel adalah baseline yang dapat digunakan kembali untuk membangun perangkat lunak deterministik dengan agent AI. Versi 1.0 menggantikan orchestrator paralel berbasis fase (run_parallel.sh + config/phases.yaml) dengan CLI agentik berbasis tugas (skeleton run + docs/PLAN.md). Sistem menjalankan tugas implementasi otonom melalui pipeline retry terbatas dengan rollback checkpoint Git dan quality gate otomatis.

Masalah​

Agent AI dapat mengimplementasikan fitur perangkat lunak, tetapi loop agent tanpa batas bersifat non-deterministik, mahal, dan rentan retry tak terbatas. Anda membutuhkan orchestrator yang:

  • Mendefinisikan pekerjaan sebagai tugas diskret yang dapat diverifikasi.
  • Menjalankan agent dengan retry terbatas dan rollback eksplisit.
  • Memvalidasi aturan arsitektur (immutabilitas DTO, batas modul).
  • Berakhir dalam state yang diketahui — sukses, rollback, atau remediation_failed.

Mengapa Masalah Ini Sulit​

  1. Paralelisme vs konteks — agent paralel cepat tetapi merge conflict mahal.
  2. Non-determinisme agent — prompt yang sama dapat menghasilkan kode berbeda.
  3. Drift arsitektur — agent melanggar batas modul tanpa penegakan.
  4. Retry tak terbatas — agent gagal dapat loop selamanya tanpa rollback checkpoint.
  5. Migrasi — proyek yang memakai konfigurasi berbasis fase membutuhkan jalur kompatibilitas.

Model Mental untuk Pemula​

Bayangkan manajer lokasi konstruksi dengan daftar tugas (docs/PLAN.md). Untuk setiap tugas, manajer mengirim pekerja (agent AI) melalui checklist tetap: build → validasi DTO → cek integrasi → jalankan quality gate. Sebelum memulai setiap tugas, manajer menempatkan bendera checkpoint (Git tag). Jika pekerja gagal setelah 5 percobaan, manajer reset ke bendera dan menandai tugas gagal. Lokasi selalu berakhir dalam state yang diketahui.

Persyaratan dan Kendala​

PersyaratanImplementasi v1.0
Definisi pekerjaandocs/PLAN.md dengan seksi ### Task N
OrchestratorCLI skeleton run membaca config/skeleton.yaml
Retry terbatasBatas per tahap di YAML (retries.task_runner, dll.)
Rollback checkpointGit tag sebelum setiap tugas; git reset --hard saat gagal
Quality gatescripts/hooks/quality-gates.sh (spesifik proyek)
Fleksibilitas providerDriver router_http, cli_subscription, sdk_cursor
Kompatibilitas mundurShim run_parallel.sh mendelegasikan ke skeleton run untuk satu rilis

Gambaran Arsitektur​

Tiga mode eksekusi menyeimbangkan kecepatan dan biaya:

ModeParalelismeTerbaik untuk
--parallelPenuh (worktree terpisah)Tugas independen, tekanan deadline
--sequentialTidak ada (konteks bersama)Sensitif biaya, tugas dependen
Default (hybrid)Grup paralel, berurutan dalam grupSebagian besar sesi

Alur Eksekusi​

  1. Operator mendefinisikan tugas di docs/PLAN.md dengan dependensi dan kompleksitas.
  2. skeleton run <task-ids> membuat branch/worktree Git per mode.
  3. Tag checkpoint ditempatkan: checkpoint-<task>-pre.
  4. Pipeline agent dieksekusi per tugas:
    • task-runner — mengimplementasikan tugas (hingga N retry).
    • dto-guardian — memvalidasi immutabilitas contracts/ (STRICT).
    • integration — memeriksa wiring antar-modul.
    • refactor — memperbaiki kegagalan quality gate (retry terbatas).
  5. Saat retry habis: git reset --hard ke checkpoint; tugas ditandai failed.
  6. Tugas sukses di-merge otomatis via strategi union; agent conflict-resolver menangani merge.
  7. Pasca-merge: merge-reviewer memvalidasi alur DTO dan batas modul.
  8. Validasi global menjalankan quality-gates.sh; agent remediation memperbaiki kegagalan.
  9. gh pr create membuka pull request yang dapat direview.

Komponen Penting​

KomponenTanggung jawab
skeleton runTitik masuk CLI orkestrasi tugas
config/skeleton.yamlBatas retry, routing model, driver eksekusi
.skeleton-dev/run-status.jsonPelacakan state per tugas
.skeleton-dev/events.jsonlLog event append-only (rollback, kegagalan)
scripts/hooks/quality-gates.shLint, test, cek arsitektur spesifik proyek
scripts/hooks/setup-env.shInstalasi dependensi per worktree
run_parallel.shShim deprecated → skeleton run

Contoh Implementasi yang Disederhanakan​

Pola retry universal (dari dokumentasi proyek):

execute → validate → fix → re-validate → bounded retry → success OR rollback

Nilai state tugas:

{
"task-1": {
"state": "complete",
"model": "claude-sonnet-4.6",
"exit_code": 0
}
}

State: running → complete | failed | timed_out

Keandalan dan Idempotensi​

  • Penyimpanan state: .skeleton-dev/run-status.json dan events.jsonl.
  • Tahap agent sinkron: Setiap tahap pipeline selesai sebelum yang berikutnya dimulai.
  • Grup tugas paralel: Worktree independen mengisolasi konflik file.
  • Rollback checkpoint: Git tag menyediakan undo deterministik — tanpa state file parsial.
  • Terminasi terjamin: Semua batas retry terbatas; sistem tidak dapat loop selamanya.

Mode Kegagalan​

KegagalanPerilaku
Tugas melebihi batas retryRollback ke checkpoint; tugas paralel lain melanjutkan
Validasi DTO gagal (STRICT)Rollback; perubahan DTO tidak pernah di-merge parsial
Merge conflictAgent conflict-resolver (hingga 5 retry)
Validasi global gagalRemediation refactor (hingga 5 retry) → remediation_failed
Timeout agent (default 30 menit)Tugas ditandai timed_out; diperlakukan sebagai kegagalan
Kegagalan grup parsial (mode hybrid)Auto-merge dilewati; operator menjalankan skeleton run merge manual

Trade-off dan Alternatif yang Ditolak​

PilihanAlasanAlternatif yang ditolak
Berbasis tugas (PLAN.md)Mudah dibaca manusia; memetakan ke unit kerja ukuran PRPhase YAML — lebih sulit dibaca dan dimigrasi
Rollback checkpoint GitSederhana, terbukti, dapat diauditSnapshot filesystem — tidak ter-version-control
Quality gate berbasis hookOrchestrator agnostik bahasaCek Python/Go hardcoded di orchestrator
Retry terbatas di mana-manaTerminasi terjaminRetry tak terbatas — loop tak terbatas, pemborosan token
Shim satu rilisMigrasi mulus untuk pengguna existingHard cutover — merusak pipeline CI

Pengujian​

Rantai quality gate: make test → make lint → make check. Orchestrator mendelegasikan semua validasi spesifik bahasa ke script hook, menjaga orchestrator inti agnostik proyek.

Operasi dan Observabilitas​

skeleton run 1 2 3               # hybrid mode (default)
skeleton run --parallel 1 2 3 # full parallel
skeleton run --sequential 1 2 3 # token-optimized
skeleton run --full # entire PLAN
skeleton doctor # verify installation

Status disimpan ke .skeleton-dev/run-status.json dengan model per tugas, exit code, dan timestamp. Log event di .skeleton-dev/events.jsonl mencatat rollback.

Pelajaran yang Dipetik​

  1. Tugas mengalahkan fase — ### Task N di Markdown lebih portabel daripada konfigurasi fase YAML dan memetakan secara alami ke cakupan PR.
  2. Checkpoint sebelum agent, bukan sesudah — rollback harus instan dan dapat dipercaya.
  3. Penegakan DTO ketat — pelanggaran arsitektur yang tertangkap awal menghemat debugging integrasi mahal.
  4. Migrasi shim — shim kompatibilitas satu rilis mencegah merusak otomasi existing sementara CLI baru distabilkan.

Sumber​