
Мой программный агент очень здорово выполнил задачу по внесению новой фичи во фронтенд проекта. Похвалив его, я предложил:
— Теперь надо реализовать серверную часть этой фичи. Но сервер реализован в отдельном проекте. Давай я сделаю его тебе доступным через symlink, и ты, а не другой агент, продолжишь разработку, ведь ты уже хорошо понимаешь задачу.
— Я могу продолжить, — ответил агент, — но symlink делать не надо. Я и так код вижу.
— Как? Ведь я тебе не давал доступа! — изумился я.
— А мне и не нужно давать доступ. Я вижу, могу читать и изменять все файлы на твоём компьютере.
Если ваш внутренний голос сказал на этом месте: «Ну и что в этом необычного?» — вам, наверное, не стоит читать эту статью дальше.
Немного ошалев, я спросил его:
— А файлы в моём облачном хранилище, которое подключено к компьютеру, ты тоже видишь?
— Разумеется, — ответил агент. — Я через плагин в твоём IDE имею все права, как IDE. А IDE имеет те же права, что и ты сам.
Я выключил компьютер и начал думать. Потом для страховки поговорил с другим ИИ‑агентом. И тут на меня снизошло просветление.
А как, собственно, иначе? IDE имеет те же права, что и запустивший его пользователь. А как иначе? Без этого IDE трудно работать. А продвинутые плагины имеют те же права, что и IDE. А как иначе?
А всё таки, может можно иначе?
На самом деле можно иначе. Можно запретить агентам использовать shell. Но их главный опыт как раз и основан на его использовании. Некоторые плагины спрашивают у пользователя разрешения использовать определённую команду shell или комбинацию команд и параметров. Но агенты изобретательны, и со временем ваш список разрешений станет таким большим, что… перестанет работать вообще. Так что это решение работает не очень.
Можно запускать IDE в контейнере. Но контейнер надо перед этим утомительно конфигурировать. Если кто‑то не сделает эту работу за вас (например — ИИ‑агент:‑)
Для одиночек‑солопренёров, как я, сотрудников маленьких фирм, наиболее реальный путь — завести на компьютере, на котором вы и программируете и храните приватные или бизнес‑данные, нового пользователя с ограниченными правами.
А как хотелось бы?
Хотелось бы, чтобы агенты имели доступ только к файлам проекта и использовали только API, предоставляемые IDE. Одновременно это может позволить экономить изрядное количество токенов, поскольку мощные операции типа рефакторинга будут произведены не с помощью примитивных строковых замен, а за счёт интеллигентного использования AST.
А ещё хотелось бы, чтобы агенты умели управляться с системами логирования типа Log4J и анализировать логи. А вот доступ к shell агентам не нужен. В исключительных случаях он может предложить пользователю команду, которую пользователь проверит и сам запустит.
Насколько я понимаю, из распространённых IDE к реализации подобных требований ближе других находится IntelliJ. Их проект Junie* (ссылка) частично или полностью (из документации мне понять это не удалось) нацелен на это.
Это не модно
Да, это совсем не то, куда зовёт нас сегодняшний тренд — запустил агента и на следующее утро проверяешь уже работающий в облаке апп. Только что‑то мне подсказывает, что цены на токены в будущем не упадут, а поднимутся. (Реальные цены последнее время поднимаются. Вы заметили?). И поднимутся существенно. И тогда нынешние энтузиасты автономного программирования, возможно, вспомнят про альтернативные методы агентской разработки.
А может, это не страшно?
Но вернёмся к заглавной теме нашей статьи. В своё время было много шума и насмешек над установившими OpenClaw. Ведь его агент по умолчанию имеет доступ ко всем ресурсам компьютера! Не удивительно, что он затёр вашу электронную почту или угробил банк данных!
Но ведь инструменты агентского программирования ничем не лучше! Но дискуссии на эту тему мне не попадались. И ИИ с поиском статей на эту тему также испытал трудности. (Заранее прошу прощения у авторов уже вышедших, но не попавших в моё поле зрения статей на эту тему).
Раз так, если сообщество не беспокоится, то возможно это и не так страшно? Вероятность, что агент воспользуется своими правами и нанесёт вам ущерб, мала и ей можно пренебречь?
Разумеется, это решает каждый сам, запуская агентов на свой компьютер.
Но давайте немного подумаем. Если вы пытаетесь на своём компьютере использовать маленькие локальные модели — они по определению много дурят. А значит — могут сделать и значимую ошибку.
А флагманские модели? Так их специально тренируют убегать из песочниц. (Мне трудно поверить, что ведущие фирмы‑создатели LLM тратят многомиллионные суммы на эксперименты по самоосвобождению их моделей от ограничений, чтобы на основании результатов этих экспериментов найти универсальное ограничение. Это примерно как поверить в то, что яды надо изобретать для того, чтобы изобретя их много, начать искать универсальное противоядие).
Но давайте посмотрим на проблему без эмоций, с инженерной точки зрения. Сами LLM умеют только генерировать текст (ну да, изображения тоже). И только установленный на компьютере harness позволяет этот текст превратить в скрипт, который может нам навредить. Значит его (harness) надо делать надёжным. И два очевидных решения — либо строго ограничить права доступа на уровне операционной системы, либо давать агентам возможность использовать только хорошо проверенные API.
* Упоминание Junie — не реклама. Я этот инструмент не пробовал и вообще программирую последнее время на VS Code с плагинами GitHub Copilot и Cline.
Иллюстрация: Идея автора, сделана с помощью ИИ.
И уж совсем приватно...
Кроме того, я пишу открытую электронную книгу «Мемуары кочевого программиста. Байки, были, думы». Её текущий вариант можно найти здесь.
Я убеждён, что программирование — это материализация идей. Об этом я первый раз написал здесь. А вот уже несколько лет мы с группой единомышленников ведём небольшую, тщательно обороняемую от ботов, группу в Телеграмме под названием «Материализация идей», в которой мы последнее время рассуждаем в основном об ИИ. Если вам это интересно — подключайтесь.

