Задание целиком: поиск описания по ISBN
Мы много говорили о том, как ставить задачи ИИ-агенту. Здесь — настоящее задание, которое ушло агенту, с разбором: зачем каждая часть и что она предотвращает.
Функция «найти описание по ISBN» появилась в Katlog за одно задание. Агент выполнил его почти без замечаний. Мы считаем, что дело не в везении, а в том, как задание было написано. Вот его ключевые части — дословно, с небольшими сокращениями.
Первый шаг — сохранить задание
ПЕРВЫЙ ШАГ: сохрани это задание дословно в docs/katlog-lookup.md и веди там таблицу L1–L12 (сделано / не сделано / где в коде / как проверено). Не пропускай пункты.
Зачем: в прошлых заданиях агент терял список посреди работы. Файл в проекте не теряется, а таблица превращает отчёт из «всё готово» в проверяемый список.
Дубли — раньше внешнего поиска
L3. Проверка дублей до внешнего поиска: если запись с этим ISBN (в любой форме, 10 или 13) или DOI уже есть в каталоге, включая скрытые, показать: название, шифр, число экземпляров и кнопки «Добавить экземпляр к этой записи» и «Всё равно создать новую запись». Записи в корзине тоже упоминать.
Зачем: в каталоге уже 121 запись с повторяющимся ISBN. Если не проверять дубли первым шагом, удобная функция только умножит их.
Запись не сохраняется сама
L6. Кнопка «Заполнить форму» переносит данные в поля формы — НЕ сохраняет запись. Возле заполненных полей — отметка источника. Если поле формы уже заполнено вручную, спросить: заменить или оставить.
Зачем: чужое описание — заготовка, а не истина. Слово «НЕ» заглавными буквами — не крик, а защита от самого вероятного упрощения.
Безопасность — отдельным пунктом
L11. Эндпоинт поиска описания доступен только библиотекарю (проверка на сервере), с ограничением частоты и защитой от подделки запросов. Разрешены только исходящие запросы к адресам настроенных источников, никакие адреса из пользовательского ввода не запрашиваются.
Зачем: сервер, который по просьбе пользователя ходит в интернет, — классическая дыра. Если не написать об этом явно, агент может сделать «удобно», а не безопасно.
Проверка на конкретных примерах
L12. Проверь на примерах: ISBN 0-87969-711-3 (должен сработать дубль — эта книга уже есть в каталоге), любой ISBN немецкой книги, которого нет в каталоге, DOI 10.1038/171737a0, ISBN с неверной контрольной цифрой, недоступный источник.
Зачем: «протестируй» — слишком общее слово. Пять конкретных случаев, включая заведомо неправильный и сбойный, дают проверку, которую нельзя пройти формально.

Что получилось
В отчёте агент отметил все двенадцать пунктов, указал файлы и способ проверки — и отдельно перечислил, что проверить не смог: работу настоящего сканера и полный путь в браузере. Такой честный отчёт стал возможен потому, что задание прямо требовало графу «как проверено».