Skip to content

Tutorial 2 How the Code Works ms

James Morris edited this page Jul 29, 2026 · 1 revision

Tutorial 2 · Cara Kod Berfungsi

🌎 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


Peta

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.

Idea 1 — Teras tulen yang mengembalikan rentetan

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.

Idea 2 — Kumpulan kandungan

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.

Idea 3 — Rawak benih = ujian deterministik

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 sama

Setiap 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.

Idea 4 — Dua lapisan ujian

  • test/unit.test.js memanggil fungsi teras dan menegaskan pada rentetan yang dikembalikan (cepat, tepat).
  • test/cli.test.js benar-benar menjalankan bin/lockedin.js dan 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.


Mengapa ini penting untuk bekerja dengan ejen

Letakkan empat idea bersama-sama dan anda mendapat pangkalan kod di mana ejen boleh:

  1. Tambah ciri sebagai fungsi tulen yang mengembalikan rentetan,
  2. Tambah ujian untuknya tanpa sebarang gimnastik I/O,
  3. Kekalkan output boleh dihasilkan semula melalui RNG berbiji, dan
  4. Buktikan ia tidak memecahkan apa-apa dengan menjalankan gate sedia ada.

Itulah gelung yang anda akan jalankan dalam bab seterusnya.

✅ Cuba dengan ejen anda

Minta ejen anda untuk mengesahkan pemahaman anda — membaca, bukan mengedit:

  1. "Senaraikan setiap kumpulan kandungan masuk src/lockedin.js dan berapa entri yang masing-masing ada."
  2. "Tunjukkan satu invarian itu test/unit.test.js menguatkuasakan tentang generatePost, dan terangkan perkara yang boleh memecahkannya."
  3. "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

📘 LockedIn CLI wiki

Tutorial

Reference


Satire · Sátira · 風刺. Not affiliated with LinkedIn. GPL-3.0-or-later.

Clone this wiki locally