Перейти к содержанию

Шаг 1 из 5 · Видео · 41 минута

Кодинговые агенты: от Pi до своего агента на TypeScript

Разбери агента изнутри: выполни задачу в Pi, собери свой цикл на TypeScript, добавь ограничения и проверки, а затем используй то же ядро для работы с данными.

Главное из видео

  1. На примере приложения с обращениями автор проходит три этапа: готовый агент Pi, собственный кодинговый агент и агент для работы с данными.
  2. AGENTS.md и шаблоны запросов задают контекст и порядок работы, но просьба запустить тесты сама по себе не гарантирует проверку.
  3. Минимальный агент связывает запрос к модели, инструменты и цикл: выполняет вызовы, возвращает результаты модели и получает следующий шаг.
  4. Условия завершения, доступ к файлам и лимит шагов задаются в коде обвязки; журнал вызовов, времени и токенов помогает разбирать результат.
  5. На одном ядре можно запускать разных агентов: кодинговому дать операции с файлами, а агенту обращений — поиск и смену статуса после подтверждения.

Обновлено 19 октября 2026 г.

Материалы к шагу

Навигация по видео

Выбери главу: видео выше начнётся с нужного момента.

Что повторять из урока

Автор работает с небольшим React-приложением, где есть обращения клиентов, статусы и тесты. Сначала Pi добавляет поиск и фильтрацию, затем собственный агент добавляет сброс фильтров, а следующая версия — поиск по клиенту. В конце другой агент меняет данные обращений. Harness здесь — программная обвязка вокруг модели: контекст, инструменты, цикл, ограничения и проверки. Таймкоды составлены по расшифровке и могут немного отличаться от начала эпизодов в видео.

Подготовь свой проект

  • Выбери небольшой проект со списком элементов и одной понятной доработкой. Подойдут обращения, задачи или заказы; точная копия приложения из ролика не нужна.
  • Работай в отдельной копии или ветке, сохрани исходное состояние и проверь локальный запуск. Для опытов с правами используй учебные файлы без секретов и реальных клиентских данных.
  • Найди в проекте команды тестов, сборки и запуска. Запиши исходный результат проверок до изменений.
  • Установи Pi и подключи доступную модель по официальной инструкции. Для собственного агента подготовь Node.js, запуск TypeScript и настройки API своего провайдера; ключи не включай в промпты и журнал.

Пример AGENTS.md — подставь команды своего проекта

# Проект
[Что делает приложение, где исходники и тесты.]

# Проверки
- Тесты: [реальная команда проекта].
- Сборка: [реальная команда проекта].

# Работа над задачей
- Прочитай постановку и относящиеся к ней файлы.
- Меняй только то, что нужно для задачи.
- Сохрани прежние пользовательские сценарии.
- В отчёте укажи изменённые файлы, выполненные команды и их результаты.
- Если проверка не запускалась, напиши об этом прямо.
- Отдельно перечисли, что осталось проверить в браузере.

Первая задача для Pi: поиск и фильтрация

Прочитай AGENTS.md и изучи список элементов в моём приложении. Добавь поиск по названию и фильтр по статусу. Поиск не должен зависеть от регистра; пробелы по краям запроса нужно игнорировать. Поиск и статус работают вместе. Для пустого результата покажи понятное сообщение. Сохрани существующую сортировку и стиль. Запусти проверки из проекта, затем перечисли изменённые файлы, фактические результаты команд и сценарии для проверки в браузере.

Повторяемый запрос и обязательная проверка решают разные задачи

В видео /implement и /review — пользовательские шаблоны в .pi/prompts/, а не обязательные встроенные команды Pi. Сохрани свой запрос в Markdown-файле и перезагрузи ресурсы через /reload, если хочешь вызывать его повторно. Шаблон помогает не забыть требования, но решение вызвать инструмент всё ещё принимает модель. Отдельно запусти тесты и проверь поиск с разным регистром, пробелами, выбранным статусом и пустым результатом.

Разложи собственного агента на четыре части

  • Клиент модели передаёт сообщения и описания доступных инструментов, а затем получает текст или запросы на вызов инструментов. Адрес API и формат запроса бери из документации выбранного провайдера.
  • Каждый инструмент имеет описание, параметры и исполняемую функцию. В первой версии из видео это чтение файла, запись файла и команда терминала.
  • Цикл выполняет запрошенные инструменты, добавляет их результаты в историю и снова обращается к модели. Задай предел числа шагов и отдельный результат для его достижения.
  • Финальный ответ без вызовов инструментов означает, что модель остановилась. Успех задачи нужно подтвердить отдельными проверками; в ролике эта проблема становится видна после добавления кнопки сброса.

Небольшая задача для сравнения: сброс фильтров

Добавь кнопку сброса поиска и выбранного статуса в моём приложении. После нажатия строка поиска пустая, выбран общий список статусов, снова видны все элементы в прежнем порядке. Проверь сброс при одновременно активных поиске и статусе. Сохрани прежнее поведение поиска, включая регистр и пробелы по краям. В отчёте отдели изменения от проверок, которые действительно были выполнены.

Перенеси условия завершения из просьбы в программу

В первой версии агент запускает тесты по инструкции, но в его цикле нет обязательного вызова проверки. В следующей версии появляется gate: программная проверка, которая разрешает завершить задачу или возвращает причину отказа. Если модель не получила терминал, запускать заранее выбранные команды может сама обвязка. Не выдавай отсутствие запуска за успешный результат. В своей реализации возвращай причину непройденной проверки в цикл исправления. При исчерпании лимита явно сообщай, что задача не завершена.

Ограничь действия и сохрани след выполнения

  • Дай кодинговому агенту только нужные операции. В новой версии из видео доступны чтение, запись и список файлов, а произвольного терминала нет.
  • Проверяй доступ в исполняемых функциях инструментов: разреши нужную папку с исходниками, закрой доступ к .env и файлам вне разрешённой области. Проверь обходы через родительские пути и символические ссылки.
  • Команды обязательных проверок задай в самой обвязке. Модель не должна подменять их или объявлять задачу успешной при ошибке запуска.
  • Записывай шаг, имя инструмента, результат или ошибку, длительность и доступную статистику токенов. Это помогает понять, где агент остановился и какие действия действительно выполнил.
  • Проверка путей и отсутствие терминала ограничивают конкретные инструменты. Для ограничения всего процесса нужна изолированная среда; одна запись в AGENTS.md или отдельная ветка Git её не создаёт.

Запрос для доработки своего кодингового агента

Доработай моего учебного агента на TypeScript по следующему контракту. Отдели клиент модели, общий цикл runAgent и инструменты кодингового агента. Инструкции проекта передавай в контекст отдельно от текста задачи. Дай модели только чтение, запись и список файлов внутри [разрешённая папка]; проверяй фактический путь и запрещай выход за её пределы, в том числе через символические ссылки. Не давай читать .env и не добавляй произвольный терминал.

Перед успешным завершением обвязка должна сама запустить [заранее выбранная команда проверок]. При ошибке верни причину модели для исправления в пределах общего лимита шагов. При исчерпании лимита или невозможности проверки верни явный результат без статуса успеха. Записывай вызовы инструментов, ошибки, время и статистику токенов, если её возвращает провайдер; содержимое ключей не записывай.

Покажи, где именно код запрещает доступ и где принимается решение о завершении. Проверь отказ на учебном файле вне разрешённой папки и отказ в успешном завершении при падающей проверке. Команды и формат API используй из моего проекта и актуальной документации провайдера.

Добавь поиск по клиенту и проверь регрессию

В третьей задаче поиск расширяется с названия обращения на имя клиента. Автор заранее убирает trim, а агент во время доработки возвращает обработку пробелов. Один такой запуск не обещает того же результата в другой задаче. Для своего списка запиши сценарии: совпадение только по клиенту, другой регистр, пробелы по краям, сочетание со статусом, пустой результат и сброс. После изменения выполни проверки и пройди эти сценарии в браузере.

Дополнительно: агент как функция продукта

Агент обращений использует то же ядро runAgent, но другой набор инструментов: поиск записей и смену статуса. Он работает с данными приложения, не редактируя код. В видео изменение выполняется после подтверждения конкретного обращения и перехода статуса. Запрос «про оплату» выбирает только связанные с оплатой записи; чтобы закрыть все обращения в работе, автор меняет формулировку. Перед действием сверяй выборку с тем, что действительно хотел изменить.

Необязательное продолжение: агент для тестовых обращений

На том же ядре runAgent добавь агента для учебного набора обращений. Дай ему только поиск и изменение статуса, без инструментов редактирования кода. Для запроса «Закрой все обращения, которые сейчас в работе» сначала покажи найденные записи и для каждой предложи переход статуса. Исполняемая функция изменения должна требовать подтверждение пользователя для конкретной записи и перехода. При отказе или отсутствии подтверждения данные не меняются. Если ничего не найдено, сообщи об этом без изменения других записей. Проверь согласие, отказ и запрос с более узким условием «про оплату». Работай только с тестовыми данными.

Проверь результат сам

  • Доработка работает в приложении, прежние поиск, статус и сброс не сломаны; это подтверждают проверки проекта и ручной сценарий.
  • В журнале видны реальные вызовы и результаты. Сообщение модели о тестах совпадает с тем, что запустила обвязка.
  • Заведомо неуспешная проверка в учебной копии не позволяет вернуть статус успеха. При достижении лимита агент сообщает, что задача не завершена.
  • Чтение или запись учебного файла вне разрешённой области отклоняется инструментом; сам файл остаётся без изменений.
  • Если сделал агента обращений, согласие меняет только выбранную запись, а отказ оставляет данные прежними.

Попробуй на своей задаче

Возьми одну небольшую доработку своего проекта и выполни её собственным учебным кодинговым агентом на TypeScript. Передай ему контекст проекта, ограничь файловые инструменты нужной папкой, задай лимит шагов, добавь журнал и обязательную программную проверку перед успешным завершением. В качестве задачи подойдут сброс фильтров или поиск по дополнительному полю. Агент для данных — необязательное продолжение.

Как понять, что готово

Доработка проверена в приложении; в коде видны ограничение доступа и обязательная проверка перед завершением; журнал содержит реальные действия и результаты. Учебный запрос к файлу вне разрешённой папки отклонён, падающая проверка не даёт статус успеха, а исчерпание лимита явно отмечается как незавершённая задача.

Отметь шаг после собственной проверки.

Следующий шагСпроектируй среду для ИИ-агента в своём проекте

Что дальше

Полный доступ к Клубу «Незаменимые»

Получи полный доступ к материалам по профессиональному программированию с ИИ, лучшим практикам, созданию агентов и продвижению своих проектов. Учись и обменивайся опытом в сообществе AI-билдеров.

Уже в Клубе? Переходи к материалам в своём аккаунте. Войти в аккаунт →

Или выбрать другое бесплатное направление →