Свой кодинг-агент на R из трёх инструментов с пакетом ellmer
Автор собрал на R кодинг-агента на базе Claude всего из трёх функций, а потом добавил инструменты для безопасности и удобства. Агент справляется с небольшой задачей, но до Claude Code ему далеко.
Сделано со своим агентом
Что сделали
Автор взял пакет ellmer для R и собрал агента на Claude из трёх обычных функций R. Это чтение файла, запись файла и запуск команды в терминале. Каждая функция возвращает модели строку, а короткий системный промпт велит сначала читать и только потом править, а ещё запускать тесты. Затем автор добавил инструменты для списка файлов и поиска, проверку пути, которая не выпускает агента за пределы папки проекта, и инструмент для точечной правки.
Что получилось
Агент из трёх инструментов умеет найти функцию, прочитать существующие тесты, написать новый тест и прогнать набор тестов. При этом, по словам автора, до Claude Code ему очень далеко. Инструмент для терминала остаётся рискованным, и более полную защиту автор откладывает до следующего поста.
На что обратить внимание
Оборачивайте проверкой пути каждый инструмент работы с файлами, а не только поиск. Инструмент терминала без ограничений всё равно может её обойти, поэтому не считайте проверку папки проекта полной защитой.
Пояснение
ellmer это пакет для языка R, через который можно обращаться к LLM и давать модели вызывать функции R как инструменты.
Кому пригодится
Разработчикам и аналитикам на R, которые хотят понять, как устроен кодинг-агент изнутри.
Попробуйте сами
Помоги собрать небольшого кодинг-агента на [язык, например R] из трёх инструментов. Это чтение файла, запись файла и запуск команды в терминале. Подключи их к [провайдер LLM] в простом цикле и проверь на небольшой задаче в [путь к тестовой папке]. Затем предложи и добавь инструменты, которые сделают его безопаснее и эффективнее, например подтверждение перед запуском команд. Готово, когда агент выполняет тестовую задачу от начала до конца.
Нужна помощь с запуском? Вступайте в сообщество AI Pack ↗
Источник: tidydesign.substack.com ·