TGViewer
AI и грабли AI и грабли @oestick · 13.7K subscribers
Post #548 7.39K
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 и просто описываем все тонким скиллом. Агент сам пишет скрипт прям в момент вызова

———

Осторожно: нет смысла использовать эту штуку, когда у вас узкая задача. Ее имеет смысл завозить, если много кейсов использования и нужна гибкость. И особенно, если нужно как-то хитро обрабатывать вызовы, собирать из них цепочки и т.д.

Тема экспериментальная, пользуюсь ей несколько недель, мб чего-то не замечаю – интересно, что думаете
  • 🔥 33
  • 👍 19
  • ❤ 7
  • 🤯 2
  • ✍ 1
More from @oestick
  1. Sep 19, 2026⬆️ Расскажу про vscode moment для агентов и нативный способ дать клод коду оркестрировать…
  2. Sep 19, 2026Что вы знаете про bb? Они называют себя "AI IDE that builds itself". Достаточно молодой пр…
  3. Sep 16, 2026Поспорил я тут на днях в баре с одной дизейнеркой интерьеров Говорит, что ваши эти ИИшки н…
  4. Sep 13, 2026Разбор аудиорежима в кодексе Будет особенно интересно тем, кто сам разрабатывает что-то по…
  5. Sep 6, 2026↑ Cейчас разбирал с Фейблом system card gpt-6-astra и чет опять такими вайбами ai-2027.com…
  6. Sep 4, 2026Видел недавно интересный тейк, мол, все только хвастаются как внедряют ИИ, но конкретных у…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →