Считайте агента управляемым исполнителем
Прежде чем настраивать инструменты, стоит договориться, кем считать агента-программиста - потому что дальше вся книга управляет именно исполнителем, а не "умным чатом". Автодополнение предлагает фрагмент, и разработчик сам выбирает файл, место вставки и момент проверки. Агент ведёт цикл: читает несколько файлов, запускает инструменты, вносит patch и реагирует на результаты тестов. Автоматизация работает вовсе без диалога - по заранее заданным входу, правам, команде проверки и условию остановки. Управлять надо всем этим циклом.
Проще всего увидеть цикл как короткую цепочку, к которой сводится любая задача.
- Цель
- Исследование
- План
- Patch
- Проверка
- Review
Ключевая мысль - в единице результата. Хороший результат агента состоит не из уверенного сообщения, а из изменения и доказательств: какие файлы затронуты, какая причина исправлена, какие команды реально запускались, каковы exit codes и какие риски остались. Если поведение продукта нельзя наблюдать, задача ещё не завершена.
Отсюда - разделение ролей, к которому мы будем возвращаться в каждой главе.
Слой · Ответственность разработчика · Ответственность агента
- Цель - Назвать требуемое поведение и границы; Уточнить неоднозначность
- Контекст - Указать канонические источники и ограничения; Найти конкретные файлы и символы
- Изменение - Разрешить область записи; Сделать минимальный связный patch
- Проверка - Определить приемочные сигналы; Запустить проверки и прочитать результаты
- Решение - Принять риск и выпустить; Сообщить факты, не подменяя владельца
Читать таблицу стоит по границе ответственности: разработчик называет поведение, разрешает область записи и определяет приёмочные сигналы; агент уточняет неоднозначность, делает минимальный patch и приносит результаты проверок. Промпт задаёт контракт работы, среда ограничивает действия, тесты дают обратную связь, а review проверяет, что исполнитель не решил другую задачу.
С этого и начинается инженерия. И первый шаг - не написать промпт, а сформулировать контракт задачи.
Что является единицей результата агента-программиста?