-
Notifications
You must be signed in to change notification settings - Fork 0
Tutorial 3 Your First Agent Task uk
Мета: додати цілком нову команду до CLI — від початку до кінця —
скеровуючи свого агента. Ми додамо lockedin endorse: вона підтверджує навички
цілком незнайомих людей у сферах, яких вони майже напевно не мають. У дусі бренду.
Це серце посібника. Ви відпрацюєте справжній цикл: специфікація → тести → реалізація → зелений бар'єр → рев'ю.
← Назад: Урок 2 Як працює код · Далі: Урок 4 Промптинг і рев'ю
Перш ніж щось промптити, напишіть специфікацію самі простою мовою. Розпливчасті запити дають розпливчастий код — від людини або від агента.
endorseдрукує 5–7 рядків, кожен підтверджує випадково обрану людину (перевикористайте наявний пулNAMES) за випадково обраний баззворд-навичку (новий пул). Завершується сатиричною однорядковою реплікою. Має бути доступна якlockedin endorse, як внутрішньосесійний/endorse, і з'являтися вhelp. Уся випадковість має використовувати помічникиpick/shuffleіз seed, щоб вивід лишався детермінованим.npm testмає лишатися зеленим, і має бути новий тест, що фіксує щонайменше один інваріант.
Цей абзац — те, що ви передасте агентові. Зверніть увагу, він називає обмеження з Розділу 2 (генератор із seed, тестовий бар'єр, звичка до інваріантів).
Почніть із запиту плану. Це ваш шанс зловити поганий підхід до того, як зміниться хоч один файл.
«Я хочу додати команду
endorseдо LockedIn CLI. Ось специфікація: [paste your spec]. Перш ніж писати код, скажи, які файли ти зміниш і який твій підхід, щоб я його схвалив. Дотримуйся наявних патернів для команди на кшталтconnect.»
Хороший план згадує: новий пул SKILLS + renderEndorse() в src/lockedin.js,
його підключення в dispatch() і handleSlash(), додавання рядка в
renderHelp(), експорт нової функції/пулу, і додавання тестів в обидва файли
тестів. Якщо план оминає правило генератора із seed чи тести, скажіть про це
зараз.
Попросіть агента написати тести до реалізації. Тести-спершу перетворюють вашу специфікацію на щось виконуване й тримають агента чесним.
«Чудово. Спершу додай лише падаючі тести: unit-тест, що
renderEndorse()повертає текст, що згадує відому навичку й щонайменше 5 підтверджень, і тестcli.test.js, щоlockedin endorseвиходить із 0 і друкує підтвердження. Використай фіксований seed. Поки не реалізуйrenderEndorse— давай спершу побачимо, як тести падають.»
Запустіть їх і подивіться, як вони падають із правильної причини (функції ще немає):
npm testТепер дайте зелене світло реалізації:
«Тепер реалізуй це, щоб ці тести пройшли, дотримуючись патерну
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.
npm testЗелено? Ви щойно викотили функцію з агентом, тести-спершу. Не зелено? Це нормально — перейдіть до циклу ітерацій Розділу 4 і скажіть агентові точно, що впало.
Потім огляньте очима справжню річ (тести перевіряють текст, але вам усе одно варто подивитися):
node bin/lockedin.js endorse
LOCKEDIN_SEED=1 node bin/lockedin.js endorse # відтворюваноНіколи не приймайте diff, який ви не прочитали. Пробіжіться конкретно за цим:
-
Чи дотримався патерну? Нова команда має віддзеркалювати
connect— жодних нових залежностей, жодногоconsole.logусерединіsrc/. -
Лише генератор із seed? Пошукайте в diff
Math.random. Його бути не має. - Чи торкнувся чогось, чого не мав? Зміна має бути додавальною; непов'язані рядки не мають рухатися.
-
Чи осмислений новий тест? Він має падати, якщо хтось пізніше зламає функцію —
а не просто стверджувати
true.
Якщо щось не так, попросіть виправлення (Розділ 4). Якщо добре — ви закінчили.
Пройдіть весь цикл вище по-справжньому. Потім, для додаткового заліку, попросіть агента розширити це:
- «Зроби, щоб
endorseприймав необов'язкове ім'я:lockedin endorse Adaмає підтверджувати саме Ada. Додай тест, тримай бар'єр зеленим.»
Ви побудували функцію від початку до кінця. Останній розділ — про те, як робити це гладко — промптинг і рев'ю як провідний інженер.
Далі: Урок 4 Промптинг і рев'ю
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.