Skip to content

Tutorial 2 How the Code Works tr

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

Eğitim 2 · Kod Nasıl Çalışır

Amaç: bu projeyi bir AI ajanıyla değiştirmeyi kolay — ve güvenli — kılan bir avuç tasarım kararını anlamak. Kodu ezberlemenize gerek yok; ajanı hassas bir şekilde yönlendirebilmeniz için zihinsel modele ihtiyacınız var.

← Önceki: Eğitim 1 Yönlendirme · Sonraki: Eğitim 3 İlk Ajan Göreviniz


Harita

lockedin-cli/
├── bin/lockedin.js      # giriş noktası — girdi/çıktı yapan TEK bölüm
├── src/lockedin.js      # çekirdek — string döndüren saf işlevler
├── test/
│   ├── unit.test.js     # çekirdek işlevleri doğrudan test eder
│   └── cli.test.js      # gerçek çalıştırılabilir dosyayı başlatır ve çıktısını denetler
├── tools/screenshot.js  # docs/ içindeki SVG'leri oluşturur
└── package.json         # meta veriler + `npm test` betiği

Dört fikir bunu işletir. Bunları öğrenin, ajandan neredeyse her değişikliği güvenle isteyebilirsiniz.

Fikir 1 — Dizeler döndüren saf bir çekirdek

src/lockedin.js'i açın. Render fonksiyonlarının yazdırmadığına dikkat edin — onlar dize döndürür:

function renderConnect() {
  const names = shuffle(NAMES).slice(0, 6);
  // ...satırlardan oluşan bir dizi kurar...
  return out.join('\n');   // metin döndürür; hiçbir şey yazdırmaz
}

Tüm asıl yazdırma (ve tuş vuruşlarınızı okuma) bin/lockedin.js'te olur. Bu "çekirdek veri döndürür, kenar I/O yapar" ayrımı buradaki tek en önemli şeydir, çünkü yalnızca bir dize döndüren bir fonksiyonun test edilmesi önemsizdir:

const out = app.renderConnect();
assert.ok(out.includes("“Seni profesyonel network'üme eklemeyi çok isterim.” — gönderilen kişi: "));

Terminal mock'lamak yok, stdout yakalamak yok. Ajandan bir özellik eklemesini istediğinizde, bunun için hızlı, güvenilir bir test de ekleyebilmesinin nedeni budur.

Fikir 2 — İçerik havuzları

Şakalar, src/lockedin.js'in üst tarafındaki düz dizilerde yaşar:

const HOOKS = [ 'Popüler olmayan fikir:', 'Reddedilmek daha iyi ışıklandırılmış bir yönlendirmedir. — DM’e hazır versiyon', /* ...~25 total... */ ];
const LESSONS = [ "→ Network'ün net worth'ündür.", /* ... */ ];

Üreticiler bu havuzlardan seçer. v1.2.0'da her havuz ~25 varyasyona büyüdü ve ikinci bir katman şablon havuzları eklendi (POST_REVEALS ve REFLECT_TAGSETS gibi şeyler) böylece her çıktının yapısı değişir, yalnızca sözcükler değil. İçerik eklemek çoğu zaman bir diziye dize eklemek kadar basittir — bir ajana devretmek için mükemmel bir ilk görev.

Fikir 3 — Tohumlu rastgelelik = deterministik testler

Rastgele çıktı ve otomatik testler uyumsuz gibi görünür. Bu proje, bu çemberi bir tohumlanabilir rastgele sayı üreteciyle kare içine alır:

setSeed(42);
const a = generatePost();
setSeed(42);
const b = generatePost();
// a === b  → aynı tohum, aynı gönderi

Her rastgele seçim, o tohumlu üreteçten çeken paylaşılan pick() / shuffle() yardımcılarından geçer. LOCKEDIN_SEED=42 ayarlayın ve CLI tamamen yeniden üretilebilir olur. Herhangi bir değişiklik için altın kural: yeni rastgelelik pick / shuffle kullanmalı, asla doğrudan Math.random — aksi halde determinizm (ve testler) kırılır. Bunu arka cebinizde tutun; 3. bölümde bunu ajana hatırlatacaksınız.

Fikir 4 — İki katman test

  • test/unit.test.js çekirdek fonksiyonlarını çağırır ve döndürdükleri dizeler üzerinde doğrulama yapar (hızlı, hassas).
  • test/cli.test.js aslında bin/lockedin.js'i başlatır ve gerçek stdout'unu ve çıkış kodunu kontrol eder (tüm şeyin uçtan uca çalıştığını kanıtlar).

Birlikte kapıyı oluştururlar. Ayrıca değişmezleri kodlarlar — uygulamanın verdiği sözler. Örneğin, bir gönderi her zaman bilinen bir hook ile açılır ve her zaman en az üç ders içerir; "connect" ekranı her zaman incalculable der. Bir ajan kodu değiştirdiğinde, bu testler sessizce bir sözü bozan her şeyi yakalar.


Bu neden bir ajanla çalışmak için önemli

Dört fikri bir araya getirin ve bir ajanın şunları yapabileceği bir kod tabanı elde edersiniz:

  1. Bir özellik ekle dize döndüren saf bir fonksiyon olarak,
  2. Onun için bir test ekle herhangi bir I/O jimnastiği olmadan,
  3. Çıktıyı tohumlu RNG aracılığıyla yeniden üretilebilir tut, ve
  4. Mevcut kapıyı çalıştırarak hiçbir şeyi bozmadığını kanıtla.

Bir sonraki bölümde çalıştıracağınız döngü budur.

✅ Ajanınızla deneyin

Ajanınızdan anlayışınızı doğrulamasını isteyin — okuyarak, düzenlemeden değil:

  1. "src/lockedin.js'teki her içerik havuzunu ve her birinin kaç girdisi olduğunu listele."
  2. "test/unit.test.js'in generatePost hakkında zorunlu kıldığı bir değişmez göster ve onu neyin bozacağını açıkla."
  3. "Tohumlu RNG nerede tanımlı ve hangi fonksiyonlar Math.random yerine onu kullanmalı? Hiçbir şeyi değiştirme — sadece açıkla."

Ajanın cevapları bu bölümle eşleştiğinde, geliştirmeye hazırsınız.

Sonraki: Eğitim 3 İlk Ajan Göreviniz

📘 LockedIn CLI wiki

Tutorial

Reference


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

Clone this wiki locally