«Отключил терминал» не отключает исполнение кода
Прислали агенту техзадание сканом. Без текстового слоя, просто картинки.
Плагин PDF такое не принимает. Казалось бы, конец истории: агент разводит руками, человек идёт перенабирать.
Вместо этого агент открыл терминал. Проверил pymupdf - нет. Попробовал pdftotext - нет. Попробовал pypdf, tesseract - нет. Получил предупреждение, что один и тот же инструмент падает третий раз подряд.
Создал виртуальное окружение, поставил pymupdf, отрендерил тринадцать страниц в картинки, прогнал OCR и вытащил параметры. Задачу закрыл.
Красиво? Да. Ровно до вопроса, почему у него вообще был терминал.
А теперь то, ради чего пишу. В конфиге стояло отключение: терминал, файлы, браузер, веб. Всё выключено.
В схеме при этом остались execute_code и delegate_task. Они лежат в других наборах инструментов. То есть галочка «отключить терминал» отключает терминал, а исполнение кода живёт отдельно и продолжает работать. Чтобы реально закрыть, нужно гасить и code_execution, и delegation.
Второе, что выяснилось на том же парке агентов: ограничения режутся по каналу, а не по агенту. В переписке с человеком инструментов нет. А по расписанию, четыре раза в сутки, тому же самому агенту возвращается полный набор: терминал, исполнение кода, управление компьютером, делегирование.
Контур был демонстрационный, боевых данных в нём не лежало. В проде это была бы дыра, через которую агент ставит произвольные пакеты в контейнер без песочницы.
Мораль простая и невесёлая: если вы не проверили итоговую схему инструментов запуском, вы не знаете, что у агента в руках. Вы знаете, что написали в конфиге. Это разные вещи.
Когда последний раз проверяли, что реально доступно вашему агенту - не по конфигу, а по факту?