Skip to content

Tutorial 3 Your First Agent Task uk

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

Урок 3 · Ваше перше завдання для агента

Мета: додати цілком нову команду до CLI — від початку до кінця — скеровуючи свого агента. Ми додамо lockedin endorse: вона підтверджує навички цілком незнайомих людей у сферах, яких вони майже напевно не мають. У дусі бренду.

Це серце посібника. Ви відпрацюєте справжній цикл: специфікація → тести → реалізація → зелений бар'єр → рев'ю.

← Назад: Урок 2 Як працює код · Далі: Урок 4 Промптинг і рев'ю


Крок 0 — Вирішіть, як виглядає «готово»

Перш ніж щось промптити, напишіть специфікацію самі простою мовою. Розпливчасті запити дають розпливчастий код — від людини або від агента.

endorse друкує 5–7 рядків, кожен підтверджує випадково обрану людину (перевикористайте наявний пул NAMES) за випадково обраний баззворд-навичку (новий пул). Завершується сатиричною однорядковою реплікою. Має бути доступна як lockedin endorse, як внутрішньосесійний /endorse, і з'являтися в help. Уся випадковість має використовувати помічники pick/shuffle із seed, щоб вивід лишався детермінованим. npm test має лишатися зеленим, і має бути новий тест, що фіксує щонайменше один інваріант.

Цей абзац — те, що ви передасте агентові. Зверніть увагу, він називає обмеження з Розділу 2 (генератор із seed, тестовий бар'єр, звичка до інваріантів).

Крок 1 — Попросіть агента спланувати, а не кодити

Почніть із запиту плану. Це ваш шанс зловити поганий підхід до того, як зміниться хоч один файл.

«Я хочу додати команду endorse до LockedIn CLI. Ось специфікація: [paste your spec]. Перш ніж писати код, скажи, які файли ти зміниш і який твій підхід, щоб я його схвалив. Дотримуйся наявних патернів для команди на кшталт connect

Хороший план згадує: новий пул SKILLS + renderEndorse() в src/lockedin.js, його підключення в dispatch() і handleSlash(), додавання рядка в renderHelp(), експорт нової функції/пулу, і додавання тестів в обидва файли тестів. Якщо план оминає правило генератора із seed чи тести, скажіть про це зараз.

Крок 2 — Спершу тести

Попросіть агента написати тести до реалізації. Тести-спершу перетворюють вашу специфікацію на щось виконуване й тримають агента чесним.

«Чудово. Спершу додай лише падаючі тести: unit-тест, що renderEndorse() повертає текст, що згадує відому навичку й щонайменше 5 підтверджень, і тест cli.test.js, що lockedin endorse виходить із 0 і друкує підтвердження. Використай фіксований seed. Поки не реалізуй renderEndorse — давай спершу побачимо, як тести падають.»

Запустіть їх і подивіться, як вони падають із правильної причини (функції ще немає):

npm test

Крок 3 — Дайте агентові реалізувати

Тепер дайте зелене світло реалізації:

«Тепер реалізуй це, щоб ці тести пройшли, дотримуючись патерну connect. Додай пул SKILLS із ~25 баззворд-навичок, renderEndorse(), що повертає рядок, підключи dispatch і handleSlash, додай рядок help, і експортуй те, що додав. Використовуй лише pick/shuffle для випадковості.»

Те, що виробляє агент, має виглядати дуже схоже на решту файлу. Наприклад, пул SKILLS і рендерер:

const SKILLS = [
  'Лідерство думок', 'Синергія', 'Сторітелінг', 'Вайби',
  'Стратегічний сон', 'Вирівнювання стейкхолдерів', 'Радикальна відвертість', /* ...~25 усього... */
];

function renderEndorse() {
  const people = shuffle(NAMES).slice(0, 5 + Math.floor(rand() * 3)); // 5–7
  const skills = shuffle(SKILLS);
  const out = [''];
  people.forEach((n, i) =>
    out.push('  ✔ Підтверджено навичку ' + skills[i % skills.length] + ' у ' + n));
  out.push('', '  Ви підтвердили навички 6 незнайомців, які не можете перевірити. Протягом години вони підтвердять ваші.');
  return out.join('\n');
}

…плюс по одному рядку в dispatch() і handleSlash(), рядок у renderHelp(), і SKILLS, renderEndorse, додані в module.exports.

Крок 4 — Бар'єр

npm test

Зелено? Ви щойно викотили функцію з агентом, тести-спершу. Не зелено? Це нормально — перейдіть до циклу ітерацій Розділу 4 і скажіть агентові точно, що впало.

Потім огляньте очима справжню річ (тести перевіряють текст, але вам усе одно варто подивитися):

node bin/lockedin.js endorse
LOCKEDIN_SEED=1 node bin/lockedin.js endorse   # відтворювано

Крок 5 — Рев'ю перед прийняттям

Ніколи не приймайте diff, який ви не прочитали. Пробіжіться конкретно за цим:

  • Чи дотримався патерну? Нова команда має віддзеркалювати connect — жодних нових залежностей, жодного console.log усередині src/.
  • Лише генератор із seed? Пошукайте в diff Math.random. Його бути не має.
  • Чи торкнувся чогось, чого не мав? Зміна має бути додавальною; непов'язані рядки не мають рухатися.
  • Чи осмислений новий тест? Він має падати, якщо хтось пізніше зламає функцію — а не просто стверджувати true.

Якщо щось не так, попросіть виправлення (Розділ 4). Якщо добре — ви закінчили.


✅ Спробуйте зі своїм агентом

Пройдіть весь цикл вище по-справжньому. Потім, для додаткового заліку, попросіть агента розширити це:

  • «Зроби, щоб endorse приймав необов'язкове ім'я: lockedin endorse Ada має підтверджувати саме Ada. Додай тест, тримай бар'єр зеленим.»

Ви побудували функцію від початку до кінця. Останній розділ — про те, як робити це гладко — промптинг і рев'ю як провідний інженер.

Далі: Урок 4 Промптинг і рев'ю

📘 LockedIn CLI wiki

Tutorial

Reference


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

Clone this wiki locally