Skip to content

Tutorial 3 Your First Agent Task ru

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 = [
  'Thought Leadership', 'Синергия', 'Сторителлинг', 'Вайбы',
  'Стратегический сон', 'Выравнивание стейкхолдеров', 'Радикальная честность', /* ...~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