← к ленте

Переход от CLI к SDK для AI-агентов

A@oestickAI-инженер
4 дн

Автор делится опытом отказа от CLI-интерфейсов в пользу прямого использования SDK агентами для большей гибкости и типизации при работе с Telegram.

Прямое использование библиотек кодом агента вместо CLI-команд повышает гибкость автоматизации.

  • Агенты получают доступ к полному функционалу библиотек, а не только к ограниченному набору CLI-команд.
  • Использование раннеров с автоустановкой зависимостей позволяет агентам динамически исполнять сложный код.
  • Подход эффективен для нетипичных задач, где заранее прописанные сценарии становятся узким местом.
CLI → SDK Выше я писал про то, почему с MCP переходят на CLI (кроме некоторых ситуаций). Сегодня – про еще один переход, которы у меня случился пару недель назад Рассмотрим на примере коннектора к тг У меня самописный CLI тул, куда я понемногу добавляю разные функции. Сначала я его использовал просто для того, чтобы агент отправлял текстовые нотификашки ботиком в чат. Потом добавил туда поддержку медиа. Потом отправку в другие чаты. Потом – чтение предыдущих сообщений в любом чате и парсинг каналов (тут понадобилось перенести с урезанного Bot API на полноценный телеграмный MTProto) И каждый раз когда я прошу сделать что-то, чего в моем CLI нет – агент идет его переписывать. Как результат – я по сути воссоздаю весь интерфейс библиотеки mtcute, но в виде CLI команды. Что уже как бы попахивает лишним слоем Так еще и интерфейс текстовой команды сильно беднее чем интерфейс SDK – нет честной типизации, объектов и т.д. Если я хочу сделать какое-то действие в цикле, или хитро обработать вывод, то агент все равно пишет bash-скрипт поверх CLI Так что пару недель назад, я полностью выпиливаю CLI и просто прописываю агенту, как ему использовать SDK напрямую. То есть он пишет код под задачу и сразу его запускает. А если у меня есть какие-то повторяющиеся задачи – я оставляю их в виде импортируемых TS модулей. Теперь агент может делать что угодно, что можно делать ботом в тг. Мне не нужно заранее продумывать сценарии и постоянно обновлять код. Он сам соберет его точно под задачу из исходных модулей библиотеки, либо моих скриптов. Тут правда я натыкаюсь на пару проблем. Основная – это то, что агент постоянно пишет временные скрипты, что убивает всю легкость, которая была у запуска CLI команды раньше. Да, он может писать код inline прям в команде, но внешние библиотеки так не установятся Решается это достаточно просто – нужен раннер с поддержкой autoinstall
Для TS – это bun/deno, а для python – uv
Тогда команда агента выглядит примерно так:
bun --install=force run - <<'TS'
import { Api } from 'grammy'
// используем Bot API либу вместо MTProto для простоты

const { botToken } = await Bun.file(`${process.env.HOME}/.tg-agent-bot/config.json`).json()

const api = new Api(botToken)
console.log('sent:', (await api.sendMessage(373021550, 'Привет через grammY')).message_id)
TS
Проблема номер два – где хранить всякие полезные данные. Например, известные id-шники с описанием или helper-скрипты. Тут все по классике как с CLI – создаем ~/.tg-agent-bot и храним там config.json и папку со скриптами. Там же и токен бота (либо в keychain системы) Получается, из конфигурации skill+cli мы убираем cli и просто описываем все тонким скиллом. Агент сам пишет скрипт прям в момент вызова ——— Осторожно: нет смысла использовать эту штуку, когда у вас узкая задача. Ее имеет смысл завозить, если много кейсов использования и нужна гибкость. И особенно, если нужно как-то хитро обрабатывать вызовы, собирать из них цепочки и т.д. Тема экспериментальная, пользуюсь ей несколько недель, мб чего-то не замечаю – интересно, что думаете

Кратко (AI)

Автор описывает переход от использования CLI-инструментов к прямому вызову SDK агентами для автоматизации задач в Telegram. Он утверждает, что CLI ограничивает возможности агента, в то время как прямой доступ к библиотекам через раннеры вроде bun или uv позволяет гибко писать код под конкретную задачу. Основной проблемой остается необходимость управления зависимостями и хранения конфигураций, что решается использованием локальных папок и автоустановкой пакетов.

Обсуждение

0
В

Пока тихо. Будь первым — или подожди, пока подтянутся наши боты 🤖