Skip to content

English Version →

Проект 07. Побудова вашого першого автоматизованого циклу ​

Пов'язана лекція: L13. Чому вам потрібно припинити писати промпти для свого агента

Що ви зробите ​

Це перехідний проект від «Harness» до «Loop». Ви вже знаєте, як налаштувати агента належним середовищем, інструкціями та зворотним зв'язком — тепер ви перетворите це налаштування на цикл, який працює самостійно.

Ви проведете три поступових експерименти: спочатку перетворите завдання з ручного на /goal, потім перетворите завдання моніторингу на таймер /loop, і нарешті побудуєте повний цикл maker-checker, щоб відчути, що це коли ви виходите за межі циклу.

Файли проекту ​

Шлях до репозиторію: projects/project-07/

ДиректоріяЩо всерединіЩо ви робите
starter/Невеликий проект бази знань із повним hарнесом (кінцевий стан P06), включаючи AGENTS.md, feature_list.json, init.sh, session-handoff.md, clean-state-checklist.md.Перетворіть цей hарнес на такий, що може циклічно працювати автоматично.
solution/Повні реалізації трьох циклів: цикл мети, цикл таймера, цикл maker-checker, плюс файли стану циклу та скрипти перевірки.Довідник з патернів проєктування циклів та управління станом.

Інструменти, які ви використовуватимете ​

  • Claude Code або Codex
  • Git
  • Ваш повний hарнес з P06
  • Термінальний мультиплексор (tmux або screen, для спостереження за довготривалими циклами)
  • Опціонально: GitHub Actions або cron (для розширених експериментів на основі подій / запланованих)

Кроки ​

Підготовка ​

  1. Почніть з того ж коміту, де ви закінчили P06.
  2. Створіть три гілки: p07-goal-loop, p07-timer-loop, p07-maker-checker.
  3. Підтвердіть, що ваш hарнес працює: запустіть init.sh, перевірте, що файл стану, список функцій та документи передачі на місці.
  4. Виберіть цільове завдання, над яким цикл буде працювати повторно. Виберіть щось середнього розміру з чіткими критеріями завершення — наприклад, «додати модульні тести до всіх модулів, досягнувши 80% покриття» або «додати валідацію введення до всіх API-кінцевих точок».

Експеримент 1: Цикл мети — від ручного запуску до автоматичного ​

Перейдіть на гілку p07-goal-loop.

  1. Напишіть опис мети: Перетворіть вибране завдання у файл goal.md, що містить:

    • Чітку мету («що рахувати готовим»)
    • Метод перевірки («як підтвердити, що готово» — запустити тести? запустити lint? перевірити покриття?)
    • Умову зупинки («коли має зупинитися» — максимальна кількість ходів? обмеження часу? обмеження бюджету?)
    • Обмеження («чого не чіпати» — продуктивна конфігурація, схема бази даних тощо)
  2. Перший ручний запуск: Надайте завдання агенту вручну самі. Запишіть, скільки ходів знадобилося, скільки разів ви втрутилися, та якість результату. Це ваш базовий рівень.

  3. Запуск з /goal: Використовуйте той самий goal.md як вхідні дані і запустіть у режимі /goal. Агент самостійно циклічно працює, поки мета не буде досягнута або не спрацює умова зупинки.

  4. Порівняйте результати:

    • Різниця у кількості ходів
    • Різниця у кількості ваших втручань
    • Різниця у якості результату (за тим самим стандартом перевірки)
    • Різниця у витраченому вами часі
  5. Ітеруйте над goal.md: Якщо результати погані, перегляньте опис мети і запустіть знову. Продовжуйте, поки не задовольнитеся результатами, або поки не підтверджите межі того, що може зробити цикл мети для цього завдання.

Експеримент 2: Цикл таймера — перетворіть моніторинг на серцебиття ​

Перейдіть на гілку p07-timer-loop.

  1. Виберіть завдання моніторингу: Знайдіть повторювану перевірку, яку ви зазвичай робите вручну. Наприклад:

    • Запускати набір тестів кожну годину, виправляти невдачі
    • Перевіряти оновлення безпеки залежностей кожного ранку
    • Перевіряти порушення стилю кодування після кожного коміту
    • Періодично сканувати коментарі TODO, щоб побачити, які з них застарілі
  2. Напишіть промпт/скрипт моніторингу: Чітко викладіть кроки моніторингу — що перевіряти, що робити, коли знайдено проблеми, і коли викликати людину.

  3. Запуск з /loop (або автоматизація потоку Codex):

    • Встановіть розумний інтервал (рекомендується 10-30 хвилин — занадто коротко і ви будете роздратовані, занадто довго і ви не побачите ефекту)
    • Дайте йому пропрацювати принаймні 2 години (або займіться чимось іншим і поверніться пізніше)
  4. Запишіть результати:

    • Скільки проблем він знайшов?
    • Скільки він виправив самостійно?
    • Скільки було помилкових спрацьовувань?
    • Скільки він погіршив?
    • Скільки часу ви витратили на подальшу роботу з його результатами?
  5. Роздуми: Чи варто автоматизувати це завдання моніторингу? Порівняйте заощаджений час проти часу, витраченого на подальшу роботу. Якщо не варто — ви вибрали неправильне завдання, чи цикл погано спроектований?

Експеримент 3: Цикл Maker-Checker — вийдіть за межі циклу ​

Перейдіть на гілку p07-maker-checker.

Це найважливіший із трьох експериментів. Ви побудуєте повний цикл, якому не потрібно, щоб ви були поруч:

  1. Спроектуйте структуру циклу:

    • Агент-maker: реалізовує, пише код, модифікує файли
    • Агент-checker: перевіряє, запускає тести, робить огляд коду, проходить / не проходить
    • Файл стану (loop-state.md): записує поточний раунд, що було зроблено, результати перевірки, що далі
    • Умова зупинки: N послідовних проходжень, або досягнуто максимальну кількість раундів
  2. Напишіть три промпти:

    • Інструкції maker (що робити, як робити, чого не чіпати)
    • Інструкції checker (що перевіряти, як перевіряти, що рахувати проходом, як давати зворотний зв'язок)
    • Логіка керування циклом (хто ходить перший, як працює передача, як запустити наступний раунд)
  3. Запустіть принаймні 5 раундів:

    • Раунд 1: Maker реалізовує → Checker перевіряє → Невдача → Зворотний зв'язок для Maker
    • Раунд 2: Maker перегляд на основі зворотного зв'язку → Checker перевіряє → ...
    • ...
    • До послідовного проходження, або доки ви не скажете стоп
  4. Запишіть стан кожного раунду:

    • Номер раунду
    • Що зробив Maker
    • Які проблеми знайшов Checker
    • Прошло / не прошло
    • Чи втрутилися ви? (якщо так, чому?)
  5. Фінальний ретро:

    • Скільки разів ви втрутилися? Чому?
    • Що сталося б, якби ви не втручалися?
    • Чи пропустив Checker якісь проблеми?
    • Чи продовжував Maker робити одну й ту саму помилку?
    • Де знаходиться стеля якості цього циклу? Можливості Maker, чи можливості Checker?

Як вимірювати результати ​

МетрикаЕксп 1 (Мета)Експ 2 (Таймер)Експ 3 (Maker-Checker)
Швидкість виконання завданняЧи була досягнута мета?Скілько циклів моніторингу пройшло?Скілько раундів до проходження?
Людські втручанняСкілько разів ви втрутилися?Скілько часу ви витратили на подальшу роботу?Скілько разів ви втрутилися?
Якість результатуЯк це порівнюється з ручним?Рівень помилкових спрацьовувань? Пропущені проблеми?Скілько проблем знайшов Checker, яких ви б не знайшли?
Заощаджений часСкілько часу ви заощадили?Чи варто автоматизувати?Час, витрачений на проєктування циклу проти заощадженого часу
НадійністьЧи була умова зупинки довірчивою?Чи він розбігся?Чи може цикл застрягти на одному місці?

Що надати ​

  • goal.md (опис мети Експерименту 1, принаймні дві ітерації)
  • Примітки до порівняння Експерименту 1: ручний проти цикл мети
  • Промпт моніторингу Експерименту 2 + журнал 2-годинного запуску
  • Три промпти Експерименту 3 (Maker / Checker / Керування циклом)
  • loop-state.md Експерименту 3 (записано принаймні 5 раундів)
  • Фінальний ретро: висновки з усіх трьох експериментів, як змінилося ваше розуміння loop engineering, які речі є хорошими кандидатами на циклізацію, а які ні

Пов'язані лекції ​