-
Notifications
You must be signed in to change notification settings - Fork 0
Tutorial 2 How the Code Works ms
🌎 Bahasa: Bahasa Melayu (ms) — lihat semua 33 bahasa
Matlamat: memahami segelintir pilihan reka bentuk yang menjadikan projek ini mudah — dan selamat — untuk ditukar dengan ejen AI. Anda tidak perlu menghafal kod; anda memerlukan model mental, jadi anda boleh mengarahkan ejen dengan tepat.
← Sebelum: Tutorial 1 Orientasi · Seterusnya: Tutorial 3 Tugas Ejen Pertama Anda
lockedin-cli/
├── bin/lockedin.js # titik masuk — SATU-SATUNYA bahagian yang membuat input/output
├── src/lockedin.js # teras — fungsi tulen yang mengembalikan rentetan
├── test/
│ ├── unit.test.js # menguji fungsi teras secara langsung
│ └── cli.test.js # menjalankan binari sebenar dan menyemak outputnya
├── tools/screenshot.js # menghasilkan SVG yang dilihat dalam docs/
└── package.json # metadata + skrip `npm test`
Empat idea menjadikannya berfungsi. Fahami semuanya dan anda boleh meminta ejen membuat hampir sebarang perubahan dengan yakin.
Buka src/lockedin.js. Perhatikan bahawa fungsi render tidak mencetak — ia mengembalikan rentetan:
function renderConnect() {
const names = shuffle(NAMES).slice(0, 6);
// ...membina tatasusunan baris...
return out.join('\n'); // mengembalikan teks; tidak mencetak apa-apa
}Semua pencetakan sebenar (dan pembacaan ketukan kekunci anda) berlaku dalam
bin/lockedin.js. Pemisahan "teras mengembalikan data, bahagian luar melakukan
I/O" ialah perkara paling penting di sini, kerana fungsi yang hanya
mengembalikan rentetan amat mudah diuji:
const out = app.renderConnect();
assert.ok(out.includes("“Saya ingin menambah anda ke rangkaian profesional saya.” — dihantar kepada "));Tidak perlu memalsukan terminal atau menangkap stdout. Apabila anda meminta ejen menambah ciri, inilah sebabnya ia juga boleh menambah ujian yang pantas dan boleh dipercayai.
Jenaka hidup dalam susunan biasa berhampiran bahagian atas src/lockedin.js:
const HOOKS = [ 'Pandangan tidak popular:', 'Biar itu meresap.', /* ...~25 total... */ ];
const LESSONS = [ '→ Rangkaian anda ialah nilai bersih anda.', /* ... */ ];Penjana memilih daripada kolam ini. Dalam v1.2.0 setiap kolam meningkat kepada ~25 variasi dan lapisan kedua kumpulan templat telah ditambahkan (perkara seperti POST_REVEALS dan REFLECT_TAGSETS) jadi struktur setiap keluaran berbeza-beza, bukan hanya perkataan. Menambah kandungan selalunya semudah menambahkan rentetan pada tatasusunan — tugas pertama yang sempurna untuk diserahkan kepada ejen.
Keluaran rawak dan ujian automatik kelihatan tidak serasi. Projek ini menyelesaikannya dengan penjana nombor rawak yang boleh dibenihkan:
setSeed(42);
const a = generatePost();
setSeed(42);
const b = generatePost();
// a === b → benih sama, hantaran samaSetiap pilihan rawak melalui pembantu bersama pick() / shuffle(), yang
mengambil nilai daripada penjana berbenih itu. Tetapkan LOCKEDIN_SEED=42 dan
output CLI boleh dihasilkan semula sepenuhnya. Peraturan emas untuk sebarang
perubahan: rawak baharu mesti menggunakan pick / shuffle, bukan
Math.random secara langsung — jika tidak, determinisme (dan ujian) akan
rosak. Ingat peraturan ini; anda akan mengingatkan ejen mengenainya dalam Bab 3.
-
test/unit.test.jsmemanggil fungsi teras dan menegaskan pada rentetan yang dikembalikan (cepat, tepat). -
test/cli.test.jsbenar-benar menjalankanbin/lockedin.jsdan menyemak stdout serta kod keluarnya (membuktikan semuanya berfungsi hujung ke hujung).
Bersama-sama, kedua-duanya membentuk pintu ujian. Ujian itu juga mengekod
invarian — janji yang dibuat oleh apl. Contohnya, siaran sentiasa bermula
dengan pembuka yang diketahui dan mengandungi sekurang-kurangnya tiga pelajaran
→; skrin "connect" sentiasa menyebut incalculable. Apabila ejen menukar kod,
ujian ini menangkap apa-apa yang secara senyap melanggar janji tersebut.
Letakkan empat idea bersama-sama dan anda mendapat pangkalan kod di mana ejen boleh:
- Tambah ciri sebagai fungsi tulen yang mengembalikan rentetan,
- Tambah ujian untuknya tanpa sebarang gimnastik I/O,
- Kekalkan output boleh dihasilkan semula melalui RNG berbiji, dan
- Buktikan ia tidak memecahkan apa-apa dengan menjalankan gate sedia ada.
Itulah gelung yang anda akan jalankan dalam bab seterusnya.
Minta ejen anda untuk mengesahkan pemahaman anda — membaca, bukan mengedit:
- "Senaraikan setiap kumpulan kandungan masuk
src/lockedin.jsdan berapa entri yang masing-masing ada." - "Tunjukkan satu invarian itu
test/unit.test.jsmenguatkuasakan tentanggeneratePost, dan terangkan perkara yang boleh memecahkannya." - "Di manakah RNG berbiji ditakrifkan, dan fungsi mana yang mesti menggunakannya sebagai gantinya
Math.random? Jangan ubah apa-apa — terangkan sahaja."
Apabila jawapan ejen sepadan dengan bab ini, anda sudah bersedia untuk membina.
Seterusnya: Tutorial 3 Tugas Ejen Pertama Anda
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.