Мій ШІ-тренер з бігу: репозиторій Git і агент Claude

Я закінчую пробіжку, годинник синхронізується, і через три хвилини аналіз уже записаний у мій репозиторій, тиждень перебудовано, а тренер залишив коментар під активністю в Strava. Жодного написаного застосунку, жодного сервера, жодного рахунку за токени: підписка Claude, AgentsRoom і файли Markdown. Ось уся збірка, яку можна повторити.

Я закінчую тренування. Годинник сам синхронізується зі Strava, як завжди. Я йду в душ.

Поки я миюся, три речі стаються без моєї участі. Аналіз тренування записаний у мій тренувальний репозиторій. Тиждень перебудовано, і поруч зазначено причину зміни. А під активністю в Strava висить коментар мого тренера: чого варте це тренування і що воно змінює для п'ятниці.

Цей тренер не застосунок, який я написав. Це репозиторій Git із файлами Markdown, підписка Claude і AgentsRoom, який тримає все разом. Жодного написаного сервера, жодного рахунку за токени, приблизно вихідні на збірку.

Усе це опубліковано як шаблон: github.com/AgentsRoomDev/running-performance-coach. Його можна клонувати і зробити своїм, заповнивши залишені порожніми місця. Ця стаття пояснює, як він працює, шматок за шматком, і розрахована на того, хто чув слово «API», але ніколи не писав вебхук.

Для контексту: бігаю я давно, 2:47 на марафоні, 1:13:59 на половинці, 33:45 на 10 км. Мета поточного циклу: знову вибігти 10 км із 34 хвилин. Це важливо для подальшого: універсальний тренер, який заново пояснює мені, що таке порогове тренування, мені марний, і саме цю проблему збірка розв'язує.

Що відбувається між кінцем пробіжки і коментарем

Увесь ланцюжок укладається в шість кроків:

  1. Годинник надсилає активність у Strava. Це й так відбувається в усіх.
  2. Кожні 15 хвилин маленький скрипт на Python питає у Strava, чи є щось нове.
  3. Знайшовши нове тренування, він збирає в моєму репозиторії картку тренування в Markdown: кола, відсічки, обсяг, пульс. Тільки виміряне.
  4. Він же переписує назву та опис активності в Strava, щоб у стрічці перестало висіти «Денна пробіжка».
  5. Потім він надсилає підписане повідомлення в AgentsRoom, і той відкриває агента Claude з тренуванням уже на руках.
  6. Цей агент робить тренерську роботу: читає, порівнює, пише аналіз, править тиждень, комітить, пушить, коментує в Strava і надсилає мені довгий звіт на пошту.

Перші п'ять кроків це технічна обв'язка. Шостий і є предметом цієї статті.

Щоденник тренувань живе в репозиторії Git, а не в базі даних

Це рішення змінює все, і воно ж дивує людей найдужче.

Одне тренування = один файл, journal/2026/2026-09-03.md. Один тиждень = один файл, plan/weeks/2026-W36.md. Одна зміна плану = один коміт, із причиною в повідомленні. Немає бази даних, немає схеми, немає міграцій, немає інтерфейсу.

Три наслідки, за спаданням важливості:

Тренер може перечитати власну історію. Він знає, що призначив три тижні тому, і може перевірити, чи спрацювало це. Чат-бот, якому ви розповідаєте про тренування, щоразу починає з нуля. В агента з репозиторієм є пам'ять, і цю пам'ять читає людина.

Свій план я читаю з телефона, у застосунку GitHub. README.md репозиторію це не сторінка-презентація, а моя панель керування. Контракт, записаний у CLAUDE.md, говорить про це прямо: планування не завершене, поки README його не відображає. Підсумок: мені нема чого підтримувати у вигляді інтерфейсу, і при цьому в мене є екран, який каже, що я роблю сьогодні.

Нічого незворотного. Усе, що пише агент, це коміт. Я можу його прочитати, оскаржити, відкотити. Це зовсім не те саме, що застосунок, який вирішує сам за себе.

Крок 1: Strava будить маленький скрипт

У Strava є API: спосіб для програми запитати «дай мені недавні активності цього атлета». Скрипт strava_sync.py робить саме це і перетворює відповідь на картку тренування.

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

Lap 1  : 4.40 km in 26'07 (5:56/km)   ← розминка
Lap 2  : 1.00 km in 3'41  (3:41/km)   ← відрізок 1
Lap 3  : 0.20 km in 1'59  (9:55/km)   ← трюхання між відрізками
...                                     → «5 x 1000m r' 2'»

Він перебирає всі розбиття виду «k найшвидших кіл це відрізки» і лишає найкраще з тих, що тримаються. Звучить тривіально, але це не так: наївна кластеризація за швидкістю потрапляє в пастку рівно тоді, коли розминка виявляється швидшою за трюхання.

Головне, форма тренування відновлюється з годинника, ніколи з плану. Спокусливо зробити навпаки (у плані написано 5 x 1000m, отже так і запишемо), і це саме та помилка: увесь сенс у тому, щоб піймати дні, коли я зробив щось інше. Коли ці двоє розходяться, саме розходження і є знахідкою, і тренер її бачить:

Заплановано 3 x 8' → біг безперервно

Два попередження перед стартом.

API Strava з червня 2026 року вимагає платної підписки розробника. Без неї кожен виклик відповідає 403 Application Status Inactive. Запасний шлях існує і закладений у шаблон: вивантажити файл TCX із годинника і віддати його import_tcx.py. Усе, що йде після імпорту, працює точно так само.

Квоти щедрі, але реальні. На моєму застосунку 300 запитів кожні 15 хвилин і 3 000 на день на читання. У сталому режимі скрипт витрачає один за прохід, тобто 96 на день. До стелі далеко, але це якраз те, що перевіряють до, а не після.

Сторінка налаштувань застосунку API Strava: стандартний рівень розробника, ідентифікатор клієнта, прихований секрет клієнта, токен доступу і токен оновлення в області читання, і показані ліміти частоти, 600 запитів кожні 15 хвилин і 6 000 на добу загалом, 300 кожні 15 хвилин і 3 000 на добу на читання.

Крок 2: скрипт будить агента, з підписом

Ось тут стає цікаво.

Вебхук це протилежність запитанню. Замість того щоб кожні п'ять хвилин питати, чи є щось нове, ви віддаєте програмі вебадресу, і вона сама надсилає повідомлення, коли подія стається. Поки нічого не стається, ви не платите нічого.

AgentsRoom пропонує саме це: вебхук-тригер. Ви створюєте тригер у застосунку, він повертає вам URL і секрет. Будь-хто, хто надішле JSON-повідомлення на цю URL, відкриє агента з вашим промптом і вже вкладеним у нього вмістом повідомлення.

Вибір інструментів у AgentsRoom, з підказкою на іконці Triggers, де написано «Agent runs on a schedule or a webhook».

Повідомлення, яке надсилає мій скрипт, навмисно крихітне:

{
  "type": "created",
  "title": "03/09 · 5 x 1000m r' 2'",
  "body": "Тренування від 03/09/2026, імпортоване зі Strava.\n\nЯкісне тренування: 5 x 1000m r' 2'\nВідсічки: 3'41 - 3'40 - 3'38 - 3'40 - 3'35\n\nЗагальний обсяг: 12.51 km за 1h07'42 (5:25/km), набір висоти 56 m\nЗаплановане тренування: RP10-5x1000\n\nКартка тренування: journal/2026/2026-09-03.md\nКартка тижня: plan/weeks/2026-W36.md"
}

Зверніть увагу, чого там немає: тексту плану. Вебхук несе код запланованого тренування і шлях до карток, але ніколи їхній вміст. Агент, у якого є репозиторій, прочитає їх сам; агентові, у якого його немає, нема чого робити з моїми внутрішніми вказівками. Правило те саме, що й для описів, які публікуються в Strava.

Підпис і пастка, яка йде з ним

Публічна URL, що відкриває агента, не може лишатися відкритою для будь-кого, хто її знайде. Тому тригер підписаний: скрипт рахує відбиток повідомлення зі спільним секретом (HMAC-SHA256, якщо це словосполучення вам про щось говорить) і надсилає його в заголовку X-AgentsRoom-Signature. Сервер перераховує той самий відбиток у себе; якщо вони не збігаються, він відмовляє.

Без підпису відповідь коротка:

{"error":"REJECTED","message":"Signature missing."}

І ось пастка, яка коштувала мені вечора. Підпис покриває рівно ті байти, що йдуть у мережу, а не об'єкт у пам'яті. Якщо ви підписали файл у тому вигляді, в якому він лежить на диску, а потім дали іншому шару заново серіалізувати об'єкт (зайвий пробіл, інший порядок ключів, інакше екранований символ), ви отримаєте цілком правильний підпис для повідомлення, якого сервер ніколи не отримає. Відмову не налагодити: з обох боків усе виглядає правильно.

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

Крок 3: три шари кажуть тренерові, хто він, як тут усе влаштовано і що робити просто зараз

Агент, який тренує, це не один великий промпт. Це три окремі тексти, і поділ між ними важить.

Шар 1, персона: хто він

Системний промпт, прикріплений до агента в AgentsRoom. Він несе філософію тренувань і навмисно не прив'язаний до виду спорту: він тренував би будь-кого.

Ваше завдання не просто генерувати тренувальні плани. Ви безперервно тренуєте атлета: аналізуєте його тренування, розумієте його поточну форму, адаптуєте майбутні заняття. […] Говоріть як досвідчений тренер, а не як мотиваційний чат-бот.

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

Писати його самому не треба: ця персона опублікована в каталозі агентів AgentsRoom під назвою Running Performance Coach. Один клік, і вона встановлена, готова до роботи.

Шар 2, CLAUDE.md: як тут усе влаштовано

Це контракт, який читається на початку кожної сесії. У ньому розкладка файлів, правила, що тримають її в порядку, тренувальні принципи, які обмежують будь-яку пропозицію, і головне ритуал: точна послідовність дій, коли про тренування доповіли.

Один витяг, бо він показує рівень точності:

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

Ось тут тренер перестає бути чат-ботом. Він не вигадує порядок дій щоразу, а йде за тим, який я написав одного разу. Якщо з репозиторію-шаблону ви прочитаєте лише один файл, читайте цей.

Шар 3, промпт тригера: що робити просто зараз

Це повідомлення, яке передається агентові, коли прилітає тренування. Активність приходить до нього через змінні шаблону: {{event.title}}, {{event.body}}, {{event.url}}. Тож агент стартує з тренуванням уже на руках, а не йде його шукати.

Редактор тригерів AgentsRoom, з назвою «Coach · {{event.title}}» і промптом тренера, який починається зі слів «Нове тренування імпортоване зі Strava», далі йдуть змінні події, вказівка спершу прочитати CLAUDE.md, попередження про роботу без нагляду і перший крок ритуалу.

Ось його каркас, яким він лежить у тригері:

Нове тренування імпортоване зі Strava.

**{{event.title}}** · активність {{event.id}}
{{event.url}}

{{event.body}}

---

Ти в репозиторії `training-plan`. Спершу прочитай `CLAUDE.md`: це закон.
Ти пишеш моєю мовою і всюди звертаєшся до мене напряму (§3).

Ритуал §6 застосовується, але його **крок 1 уже зроблено**: `strava_publish.py`
створив картку тренування і закомітив її. Ти продовжуєш із кроку 2 і йдеш
до самого кінця. Три результати, у такому порядку: **аналіз у репозиторії**,
**коментар під активністю в Strava**, **лист**.

⚠️ **Ти працюєш без нагляду: запитання ніхто не прочитає.** Ніколи не проси
розсудити: ти вирішуєш, ти дієш і кажеш у звіті, що саме ти обрав і чому.

## 1 · Проаналізувати і виправити план (ритуал §6, кроки з 2 до 6)

1. Спершу `git pull --rebase`: картка може прийти із сервера.
2. Читай у такому порядку: картку сьогоднішнього дня, картку тижня,
   `athlete/zones-and-paces.md` і **останні 3 картки тренувань**:
   тренування ніколи не судять окремо.
3. Напиши розділ `## Analysis`: **спершу вердикт**, потім сигнали, які
   його несуть, потім що це змінює.
   ⛔ Якщо `## Analysis` уже заповнений, не переписуй його.
4. Онови картку тижня і запиши **кожну** зміну плану під
   `## Adjustments`, з її причиною.
5. **Перезбери `README.md`**: це екран, який я читаю з телефона.
6. Коміть і пуш, явні шляхи, ⛔ ніколи `git add -A`.

## 2 · Кудос і коментар у Strava
   ⛔ Коментар у Strava ПУБЛІЧНИЙ: без цільового пульсу, без болячок,
   без внутрішніх компромісів, без прогнозу фінішного часу.

## 3 · Повний звіт листом

Найбільше роботи робить рядок посередині: «запитання ніхто не прочитає». Агент, який працює без людини перед екраном і просить розсудити, не помиляється, він просто зупиняється, а ви дізнаєтеся про це наступного дня.

Яка модель і чому мільйон токенів це не примха

НалаштуванняЗначення
МодельClaude Opus, контекст 1M
Зусилля міркуванняВисоке
Режим дозволівАвтономний
Доступ до браузераУвімкнено

Список тригерів AgentsRoom, з рядком «Coach · {{event.title}}», міткою webhook, джерелом «Any service (JSON)», проєктом Running Performance Coach і налаштуваннями агента: модель Opus, високе зусилля, автономний режим, браузер увімкнено.

Довгий контекст тут не оздоба. Щоб правильно оцінити одне тренування, тренер читає картку дня, картку тижня, таблицю опорних темпів і три попередні тренування. Тренування ніколи не судять окремо: накопичене навантаження, порядок днів і поточні точки уваги повністю змінюють вердикт. Три відрізки по 3'38 наступного дня після двогодинного довгого бігу розповідають зовсім не ту історію, що ті самі 3'38 після дня відпочинку.

Автономний режим це не недбалість, а наслідок: у запуску, за якого перед екраном нікого немає, немає й того, хто схвалить git push. А доступ до браузера це те, що дозволяє агентові піти прокоментувати в Strava і надіслати листа: дві речі, у яких тут немає зручного API.

Що автоматизовано, а що навмисно ні

Це проєктне рішення, яким я задоволений найбільше, і його легко проґавити.

Завдання імпорту записує і публікує, але ніколи не судить.

Що скрипт робитьЧого він не робить
Забирає нові активностіЗаповнює розділ Analysis
Створює картку тренуванняЧіпає картку тижня
Пише назву і опис у StravaЧіпає опорні темпи
Комітить створені карткиВисловлює думку

Скрипт, який почав би судити, видавав би вердикти без контексту, з логікою, застиглою в коді, який ніхто не перечитує. Судити означає тримати разом навантаження тижня, поточну форму і те, що було сказано минулого разу: це тренерська робота, і її робить агент, у якого перед очима вся справа цілком.

Практична вигода видна одразу: коли агент не відпрацював (машина вимкнена, API лежить), картка все одно є. Нічого не втрачено, бракує тільки коментаря, і досить повторити подію.

Ще один вибір у той самий бік: скрипт не веде файл стану, щоб пам'ятати, що він уже обробив. Джерело істини це опис у Strava. Порожній, він пише; зі своїм підписом, він проходить повз; непорожній і без підпису, отже його написали ви, і він його не чіпає. Локальний файл стану нічого не сказав би про те, що зробила інша машина; так само дві машини можуть працювати паралельно, не наступаючи одна одній на ноги.

Ще два правила поділу, викарбувані в репозиторії, і обходити їх не можна:

  • опис, що публікується в Strava, ніколи не копіює текст плану: у моїй картці тижня є цільові пульси і компроміси, яким нема чого робити на публічній активності;
  • опис, написаний вручну, ніколи не перезаписується.

Коментар, який з'являється під активністю

Сенс не в самопохвалі. Сенс у тому, що вердикт тренера читається з телефона, просто під активністю, без відкривання репозиторію, і лишається там, прив'язаний до тренування, назавжди.

Тому коментар навмисно вузький: емодзі вердикту, цифра, яка його несе, і що це змінює для наступного тренування. Близько 250 знаків.

✅ П'ять відрізків у середньому по 3'39 за цілі 3'38-3'44, і пульс рівний на всьому блоці. Таблиця темпів тримається. П'ятниця лишається легкою: запас тижня ти вже витратив.

Довга версія, та, що з пульсами, позначеною мною точкою уваги і рішенням щодо обсягу наступного тижня, іде в репозиторій і в лист. Два канали, дві аудиторії, і межу тримає промпт.

Три речі, які ламаються тільки в бою

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

1. Закріпити браузер. У мене в Chrome підключені два розширення Claude. Ніщо не гарантує, яке з них дістанеться агентові, а сесія Strava живе тільки в одному. Підсумок: через раз агент опинявся не в тому браузері, без входу в акаунт, і не міг нічого прокоментувати. Вибір браузера за ідентифікатором пристрою не зберігається від сесії до сесії, тож йому місце в промпті, разом із прямою забороною йти питати в користувача, який обрати. Без нагляду запитання це глухий кут.

2. У поля коментаря в Strava немає maxlength. Ніщо в браузері не заважає написати надто довго: відмовляє сервер при надсиланні. Агент, який склав гарний абзац на 600 знаків, набирає його цілком, тисне «Опублікувати» і дістає незрозумілу йому помилку. Отже, промпт має вимагати стислості до написання і передбачити цей випадок: якщо надсилання не пройшло, скоротити і опублікувати заново, але ніколи не розбивати на два коментарі.

3. Один коментар тренера на активність. Коли ви повторюєте подію для перевірки (а на початку це робиш часто), без цього правила агент нагромаджує коментарі на вже оброблену активність. Тому промпт змушує його прочитати вкладку «Коментарі» перед тим, як писати, і пропустити хід, якщо він там уже є. Та сама логіка на боці репозиторію: якщо розділ ## Analysis уже заповнений, його не переписують.

У що це обходиться

ЧастинаДеВартість
Агент-тренерМоя машина, через AgentsRoomмоя підписка Claude
Опитування кожні 15 хвилинНевелика машина на Linux, завжди увімкнена~5 €/місяць або нуль на Raspberry Pi
ЩоденникПриватний репозиторій Gitбезкоштовно
API StravaStrava Developer Programдив. тарифи Strava

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

Зібрати це на вихідних

Кроки по порядку. Розраховуйте на вечір, якщо у вас уже є акаунт Strava і підписка Claude.

1. Клонувати шаблон і зробити його своїм.

git clone https://github.com/AgentsRoomDev/running-performance-coach.git my-coach
cd my-coach
rm -rf .git && git init

Зробіть свою копію приватною. Щоденник тренувань містить дані про здоров'я: пульс, сон, травми. Шаблон публічний, ваша копія такою бути не повинна.

Далі заповніть у такому порядку: athlete/profile.md (який ви бігун), athlete/records.md (ваші особисті рекорди), athlete/constraints.md (вікна, які у вас справді є), athlete/zones-and-paces.md (ваші опорні темпи), plan/objective.md (старт і мета), потім CLAUDE.md, де ви заміняєте кожне місце {{...}}.

Насамкінець відкрийте репозиторій своїм агентом Claude і скажіть йому: «прочитай CLAUDE.md і athlete/, потім збери мені перший тиждень».

2. Під'єднати Strava.

cp .env.example .env && chmod 600 .env
python3 scripts/strava_oauth.py     # один клік у браузері, один раз
python3 scripts/strava_sync.py --dry-run

--dry-run друкує те, що було б записано, нічого не записуючи. Це момент перевірити, що відновлення тренувань вас влаштовує.

3. Створити тригер в AgentsRoom. У розділі Triggers, New trigger:

ПолеЗначення
ТипWebhook, джерело generic
Промптвміст docs/trigger-prompt.md
Роль / персонаdocs/coach-persona.md
Режим дозволівАвтономний
Доступ до браузераУвімкнено

AgentsRoom видає URL і секрет для підпису. Покладіть обидва у свій .env:

WEBHOOK_URL=https://agentsroom.dev/api/triggers/t_xxxxxxxxxxxx
WEBHOOK_SECRET=whsec_xxxxxxxxxxxxxxxxxxxxxxxx

4. Перевірити його, перш ніж йому довіряти.

python3 scripts/webhook_replay.py scripts/examples/webhook-session.json --dry-run
python3 scripts/webhook_replay.py scripts/examples/webhook-session.json

Це проганяє тренування через тригер, не чекаючи вашої наступної пробіжки і не чіпаючи стан автоматичного завдання. Ви маєте побачити ✅ HTTP 202, і в AgentsRoom має відкритися вкладка агента.

5. Запускати кожні 15 хвилин.

bash scripts/systemd/install.sh          # на сервері під Linux

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

Якщо постійно увімкненої машини немає, пропустіть цей крок: запускайте strava_sync.py руками, коли заманеться, або просто розкажіть про своє тренування агентові в розмові. Ритуал із CLAUDE.md працює точно так само. Ви втрачаєте автоматизацію, але не тренера.

Що я з цього виніс, поза бігом

У цій збірці немає нічого специфічного для бігу. Вона показує прийом, який можна повторити майже для будь-якої галузі, де ви накопичуєте особисті дані і хотіли б отримати щодо них компетентну думку.

Три частини, і все. Репозиторій Git із файлами Markdown як пам'ять, читабельна і машиною, і вами. Подія, яка будить агента, замість агента, який опитує по колу і палить токени намарно. Три шари конфігурації, що чисто розділяють, хто такий агент, як він працює у вас і що йому робити цієї миті.

Замініть «бігове тренування» на «виписку з банку», «сесію кодингу», «вимір цукру в крові» або «нотатку про прочитане»: механіка не змінюється.

Часті запитання

Чи треба вміти програмувати, щоб зібрати ШІ-тренера з бігу?

Треба вміти запустити команду в терміналі та відредагувати текстовий файл. Репозиторій-шаблон готовий до клонування, скрипти на Python не використовують нічого, крім стандартної бібліотеки (жодного pip install), а тренерська частина налаштовується звичайною прозою у файлах Markdown. Справжня робота тут не технічна: чесно описати, який ви бігун і до чого йдете.

Скільки це коштує на місяць?

Агент працює на підписці Claude, яка у вас уже є (Pro або Max): ключа API з оплатою за токени тут немає. Зверху може знадобитися невелика машина, увімкнена постійно, щоб опитувати Strava кожні 15 хвилин: близько 5 євро на місяць на VPS або нуль на Raspberry Pi. Приватний репозиторій Git безкоштовний. Залишається API Strava, який із червня 2026 року вимагає платної підписки розробника.

Чому репозиторій Git, а не база даних?

Бо історія стає читабельною: і для тренера, і для вас. Кожне тренування записане як файл Markdown, кожна зміна плану як коміт зі своєю причиною. Агент може перечитати те, що призначив три тижні тому, і перевірити, чи спрацювало це, а ви читаєте свій план із телефона в застосунку GitHub, не написавши жодного рядка інтерфейсу.

Що таке вебхук, якщо пояснити просто?

Вебхук працює навпаки: не ви запитуєте сервіс, а сервіс сам звертається до вас. Замість того щоб кожні п'ять хвилин питати, чи є щось нове, ви віддаєте програмі вебадресу, і вона надсилає повідомлення, коли подія сталася. Тут це повідомлення надсилає скрипт, який імпортує тренування, а отримує його AgentsRoom і за секунду відкриває агента Claude. Звідси ж і дешевизна збірки: агент, який опитує по колу, палить токени на кожному ході, а вебхук-тригер не коштує нічого, поки нічого не стається.

Чи працює це для іншого виду спорту, не для бігу?

Так. Імпорт відновлює кола з годинника, а велосипед і плавання теж пишуть кола. Змінюються файли стратегії та каталог тренувань, а це текст, який ви переписуєте. Механіка (імпорт, вебхук, агент, репозиторій) залишається тією самою.

Чи може агент помилитися і зламати мій план?

Помилитися може, але зламати багато чого не зуміє: усе, що він пише, це коміт Git, який ви можете прочитати, оскаржити і відкотити. Файл CLAUDE.md прямо забороняє йому переписувати історію, вигадувати дані, яких ви не давали, змінювати план без зазначення причини і давати медичні поради. Підозрілий біль, і він відправляє вас до фахівця.


Репозиторій-шаблон лежить тут: AgentsRoomDev/running-performance-coach. Клонуйте його, впишіть свої темпи, і у вас є свій тренер. Якщо хочете подивитися на ту частину, яка будить агента, вона описана на сторінці вебхук-тригери, а AgentsRoom завантажується тут.

Завантажити AgentsRoom

Запускайте всіх своїх AI-агентів на всіх своїх проєктах з одного вікна.

БезкоштовноЗавантажити AgentsRoom

Додаток-компаньйон: контролюйте своїх агентів на ходу

Використовуйте свого: Claude, Codex, Antigravity CLI або іншого AI-провайдера.

Отримати розширення
Chrome Web Store

Надсилайте баги та запити прямо у свій публічний беклог.

Погляд на AgentsRoom в дії.

Кілька проектів
Багато постачальників
Кілька агентів
Статус в реальному часі
Різниця файлів і коміт
Мобільний компаньйон
Попередній перегляд в реальному часі
Команди агентів
Автоматизація браузера
Розробка, орієнтована на беклог
Бібліотека підказок
Бібліотека навичок
Переглянути всі функції

Читати далі