-
Notifications
You must be signed in to change notification settings - Fork 0
Tutorial 2 How the Code Works id
🌎 Bahasa: Bahasa Indonesia (id) — lihat semua 33 bahasa
Tujuan: memahami beberapa pilihan desain yang membuat proyek mudah dan aman diubah bersama agen AI. Kamu tidak perlu menghafal kode; pahami model mentalnya agar dapat memberi arahan yang presisi.
← Sebelumnya: Tutorial 1 Orientasi · Berikutnya: Tutorial 3 Tugas Agen Pertamamu
lockedin-cli/
├── bin/lockedin.js # titik masuk — SATU-SATUNYA bagian yang melakukan input/output
├── src/lockedin.js # inti — fungsi murni yang mengembalikan string
├── test/
│ ├── unit.test.js # menguji fungsi inti secara langsung
│ └── cli.test.js # menjalankan binary asli dan memeriksa outputnya
├── tools/screenshot.js # merender SVG yang ada di docs/
└── package.json # metadata + skrip `npm test`
Empat gagasan membuat semuanya bekerja. Pahami ini dan kamu dapat meminta agen melakukan hampir semua perubahan dengan yakin.
Buka src/lockedin.js. Fungsi render tidak mencetak; fungsi itu
mengembalikan string:
function renderConnect() {
const names = shuffle(NAMES).slice(0, 6);
// ...menyusun array berisi baris...
return out.join('\n'); // mengembalikan teks; tidak mencetak apa pun
}Pencetakan dan pembacaan tombol terjadi di bin/lockedin.js. Pemisahan
“core mengembalikan data, edge melakukan I/O” adalah ide terpenting karena
fungsi yang hanya mengembalikan string sangat mudah diuji:
const out = app.renderConnect();
assert.ok(out.includes("“Aku ingin sekali menambahkanmu ke jaringan profesionalku.” — dikirim ke "));Tidak perlu mock terminal atau menangkap stdout. Karena itu, saat agen menambah fitur, ia juga dapat menambah tes cepat dan andal.
Lelucon disimpan dalam array biasa di bagian atas src/lockedin.js:
const HOOKS = [ 'Opini tidak populer:', 'Resapi itu baik-baik.', /* ...~25 total... */ ];
const LESSONS = [ '→ Jaringanmu adalah kekayaan bersihmu.', /* ... */ ];Generator memilih dari pool tersebut. Pada v1.2.0, setiap pool berkembang
menjadi ~25 variasi dan ditambah lapisan pool template, seperti
POST_REVEALS dan REFLECT_TAGSETS, agar struktur output ikut berubah, bukan
hanya kata-katanya. Menambah konten sering sesederhana menambah string ke array,
sehingga cocok sebagai tugas pertama agen.
Output acak dan tes otomatis tampak bertentangan. Proyek ini menyatukannya lewat pseudorandom generator yang dapat diberi seed:
setSeed(42);
const a = generatePost();
setSeed(42);
const b = generatePost();
// a === b → seed sama, post samaSemua pilihan acak melewati helper pick() / shuffle() yang memakai generator
tersebut. Dengan LOCKEDIN_SEED=42, output CLI dapat direproduksi sepenuhnya.
Aturan emas: randomness baru harus memakai pick / shuffle, jangan
Math.random langsung, atau determinisme dan tes akan rusak.
-
test/unit.test.jsmemanggil fungsi core dan memeriksa string hasilnya; cepat dan presisi. -
test/cli.test.jsmenjalankanbin/lockedin.jslalu memeriksa stdout dan exit code nyata; ini membuktikan alur end-to-end.
Keduanya membentuk gerbang dan menyimpan invariant, yaitu janji aplikasi.
Contohnya, post selalu dimulai dengan hook yang dikenal dan mengandung setidaknya
tiga pelajaran →; layar connect selalu menyebut incalculable. Tes menangkap
janji yang tanpa sengaja dilanggar agen.
Gabungkan empat gagasan tadi dan agen dapat:
- Menambah fitur sebagai fungsi murni yang mengembalikan string.
- Menambah tes tanpa kerumitan I/O.
- Menjaga output dapat direproduksi dengan seeded RNG.
- Membuktikan tidak ada yang rusak lewat gerbang yang ada.
Itulah loop yang akan dijalankan pada bab berikutnya.
Minta agen memverifikasi pemahamanmu dengan membaca, bukan mengedit:
- “Daftarkan semua pool konten di
src/lockedin.jsdan jumlah entri masing-masing.” - “Tunjukkan satu invariant tentang
generatePostyang diterapkantest/unit.test.js, lalu jelaskan apa yang dapat merusaknya.” - “Di mana seeded RNG didefinisikan dan fungsi mana yang harus memakainya
daripada
Math.random? Jangan ubah apa pun.”
Jika jawabannya sesuai bab ini, kamu siap membangun.
Berikutnya: Tutorial 3 Tugas Agen Pertamamu
Tutorial
- 1 · Orientation
- 2 · How the Code Works
- 3 · Your First Agent Task
- 4 · Prompting & Reviewing
- 5 · Localization
Reference
Satire · Sátira · 風刺. Not affiliated with LinkedIn. GPL-3.0-or-later.