Panduan

Alur kerja semalaman untuk coding agent

Janjinya sederhana. Anda tidur dengan daftar tugas dan bangun dengan pull request. Kebanyakan percobaan pertama berakhir lain. Ada satu diff raksasa yang tidak bisa ditinjau siapa pun. Atau agen macet di satu pertanyaan sejak jam 1 pagi. Bedanya bukan di model. Bedanya ada di cara pekerjaan dikemas. Ini alur kerja yang menghasilkan pagi yang bisa ditinjau.

Tulis tugas seperti untuk kontraktor baru

Tugas semalaman tidak punya tempat bertanya. Tugas itu harus membawa konteksnya sendiri. Setiap tugas sebaiknya muat dalam satu paragraf dan menjawab tiga pertanyaan. Apa yang salah atau kurang. Seperti apa hasil yang selesai. Bagaimana membuktikannya.

## Task: paginate the /orders endpoint
Problem: GET /orders returns every order. Large accounts time out.
Done: accepts ?cursor and ?limit (max 100), returns next_cursor.
Proof: new tests in tests/orders_pagination.test.ts pass; existing tests pass.
Do not: change the response shape of existing fields.

Buat tugas tetap kecil. Dua sampai empat jam kerja manusia adalah ukuran yang pas. Jika lebih besar, pecah. Tugas yang selesai dalam dua puluh menit juga tidak masalah. Taruh di file di repository atau di issue yang bisa dibaca agen. File adalah cara paling sederhana.

Satu tugas, satu branch, satu worktree

Tugas tidak boleh berbagi working tree. Dua tugas yang mengedit checkout yang sama menghasilkan diff yang tidak bisa diurai siapa pun. Git worktree memberi setiap tugas folder sendiri di repository yang sama.

git worktree add ../work/orders-pagination -b agent/orders-pagination
git worktree add ../work/retry-webhooks -b agent/retry-webhooks

Setiap branch mendapat eksekusi agen sendiri dan pull request sendiri. Di pagi hari Anda meninjaunya satu per satu. Jika satu buruk, Anda menutupnya, dan yang lain tidak tersentuh.

Tentukan apa yang dikerjakan agen sendiri

Atur mode izin dan daftar deny sebelum eksekusi pertama, bukan sesudahnya. Panduan menjalankan Claude Code tanpa pengawasan memuat pengaturan persisnya. Versi singkat untuk kerja semalaman seperti ini. Bebas mengedit file. Bebas menjalankan test suite. Bebas commit dan push branch tugas. Membuka pull request. Selain itu harus bertanya dulu, dan tidak ada yang menjangkau ke luar repository.

Loop eksekusinya

Script kecil memulai satu eksekusi headless per tugas, di worktree masing-masing, dengan batas turn dan file log. Ini seluruhnya.

#!/bin/sh
# run-overnight.sh: one agent run per task file in tasks/
for task in tasks/*.md; do
  name=$(basename "$task" .md)
  dir="../work/$name"
  git worktree add "$dir" -b "agent/$name" 2>/dev/null
  (
    cd "$dir" || exit 1
    claude -p "Complete the task in $task. Commit on this branch, push it, and open a pull request with gh pr create. Stop when the tests pass or when you are blocked, and say which." \
      --permission-mode acceptEdits \
      --max-turns 80 \
      > "../logs/$name.log" 2>&1
  )
done

Jalankan di dalam tmux agar koneksi SSH tidak berpengaruh. Tugas berjalan satu per satu. Eksekusi paralel bisa saja, tetapi saling berebut CPU dan rate limit Anda. Log juga jadi lebih sulit dibaca. Mulailah secara berurutan.

Biarkan test yang menilai

Prompt menyuruh agen berhenti saat test lulus. Lalu CI Anda menjalankan test yang sama di pull request. Jika agen bilang hijau dan CI bilang merah, Anda tahu sebelum membaca satu baris diff pun. Lindungi main agar tidak ada yang di-merge tanpa pemeriksaan itu. Ini pengaman paling berharga di alur kerja ini, dan gratis.

Review pagi, sepuluh menit

  • Buka daftar pull request. Cocokkan jumlahnya dengan daftar tugas. Yang hilang ada di log.
  • Baca log tugas yang berhenti karena terhambat. Biasanya karena kredensial yang kurang atau tugas yang ambigu. Perbaiki teks tugasnya, bukan agennya.
  • Tinjau pull request yang hijau, mulai dari yang terkecil. Merge yang benar. Tutup yang salah dengan satu baris alasan, lalu salin baris itu ke file tugas untuk besok.
  • Hapus worktree dan branch yang sudah di-merge agar malam ini mulai bersih.
git worktree remove ../work/orders-pagination
git branch -d agent/orders-pagination

Apa yang diserahkan lebih dulu

Sebagian pekerjaan lebih cocok untuk malam hari dibanding yang lain. Mulailah dengan ini, lalu perluas seiring tumbuhnya kepercayaan.

  • Test yang gagal atau flaky dengan perilaku yang diharapkan jelas.
  • Upgrade dependency yang dinilai oleh test suite.
  • Refactor mekanis di banyak file.
  • Test yang belum ada untuk kode yang sudah berfungsi.
  • Error tipe, error lint, dan peringatan deprecation.

Simpan keputusan desain, apa pun yang menyentuh billing atau auth, dan apa pun yang tidak bisa diverifikasi test untuk siang hari. Saat itu Anda bisa menjawab pertanyaan.

Mesin di baliknya

Semua ini mengandaikan mesin yang masih berjalan jam 4 pagi. Laptop yang tidur adalah alasan paling umum eksekusi semalaman tidak menghasilkan apa-apa. Panduan mode tidur memperbaikinya di Mac milik Anda. Mac untuk agen yang hosted sudah beres dari awal.

Pertanyaan yang sering diajukan

Berapa banyak tugas yang bisa diselesaikan agen dalam semalam?

+

Secara berurutan, biasanya empat sampai delapan tugas berukuran dua sampai empat jam. Itu tergantung lama test berjalan dan rate limit paket Anda. Kualitas turun lebih cepat daripada jumlah jika tugasnya kabur. Jadi habiskan waktu Anda untuk teks tugas.

Haruskah saya menjalankan Claude Code dan Codex di backlog yang sama?

+

Tidak di tugas yang sama. Beri masing-masing tugas dan worktree sendiri. Menjalankan keduanya di satu tugas menghasilkan dua pull request yang bersaing, dan review jadi dua kali lipat.

Bagaimana jika agen membuka pull request yang mengubah jauh lebih banyak dari tugasnya?

+

Tutup, lalu tambahkan baris Do not ke tugas itu. Scope creep adalah kegagalan semalaman yang paling umum, dan teks tugas adalah solusinya. Batas turn yang tegas juga membantu.

Bisakah agen me-merge pull request-nya sendiri?

+

Bisa, tetapi sebaiknya tidak. Lindungi main dan wajibkan review oleh manusia. Inti alur kerja ini adalah Anda meninjau di pagi hari dengan kepala jernih.

Panduan terkait