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 -