Шаг 1 из 5 · Видео · 41 минута
Кодинговые агенты: от Pi до своего агента на TypeScript
Разбери агента изнутри: выполни задачу в Pi, собери свой цикл на TypeScript, добавь ограничения и проверки, а затем используй то же ядро для работы с данными.
Главное из видео
- На примере приложения с обращениями автор проходит три этапа: готовый агент Pi, собственный кодинговый агент и агент для работы с данными.
- AGENTS.md и шаблоны запросов задают контекст и порядок работы, но просьба запустить тесты сама по себе не гарантирует проверку.
- Минимальный агент связывает запрос к модели, инструменты и цикл: выполняет вызовы, возвращает результаты модели и получает следующий шаг.
- Условия завершения, доступ к файлам и лимит шагов задаются в коде обвязки; журнал вызовов, времени и токенов помогает разбирать результат.
- На одном ядре можно запускать разных агентов: кодинговому дать операции с файлами, а агенту обращений — поиск и смену статуса после подтверждения.
Обновлено 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-билдеров.
Уже в Клубе? Переходи к материалам в своём аккаунте. Войти в аккаунт →