Управляю мобильной связью через AI-агента: skill для сбермобайл. ai.. ai. Claude.. ai. Claude. python.. ai. Claude. python. skills.. ai. Claude. python. skills. агенты.. ai. Claude. python. skills. агенты. ИИ.. ai. Claude. python. skills. агенты. ИИ. искусственный интеллект.. ai. Claude. python. skills. агенты. ИИ. искусственный интеллект. Машинное обучение.. ai. Claude. python. skills. агенты. ИИ. искусственный интеллект. Машинное обучение. Проектирование API.. ai. Claude. python. skills. агенты. ИИ. искусственный интеллект. Машинное обучение. Проектирование API. Разработка мобильных приложений.. ai. Claude. python. skills. агенты. ИИ. искусственный интеллект. Машинное обучение. Проектирование API. Разработка мобильных приложений. сбермобайл.. ai. Claude. python. skills. агенты. ИИ. искусственный интеллект. Машинное обучение. Проектирование API. Разработка мобильных приложений. сбермобайл. скис.

Последние 3 месяца живу в парадигме, где повседневные приложения на телефоне постепенно превращаются в текстовые команды в терминале. Звучит как откат в 90-е, но на практике это быстрее, удобнее и мощнее, чем тыкать по вкладкам в мобильном приложении. В этой статье расскажу, как появился skill для управления личным кабинетом СберМобайл через Claude Code/OpenClaw/KimiClaw, почему это уже второй такой проект, и куда это всё движется.

Что такое Claude Code Skills

Claude Code – это CLI-агент от Anthropic, который живёт в терминале и умеет выполнять задачи: писать код, работать с файлами, запускать команды. Но самое интересное – это система skills (в терминологии Anthropic – slash commands). Skill – это markdown-файл, который описывает для Claude новую способность: какие API вызывать, как авторизоваться, что отвечать пользователю.

Кладёшь файл в ~/.claude/commands/, вызываешь через /имя-скилла, и Claude получает контекст: документацию API, примеры вызовов, правила форматирования ответов. Дальше он сам решает, какие запросы отправить и как интерпретировать результат. Не нужно ни фронтенда, ни мобильного приложения – только терминал и естественный язык.

Мой первый skill – Dodo Pizza

Всё началось с пиццы. Я захотел заказать Додо Пиццу, не открывая приложение. Написал в терминале /dodo, и Claude стал моим курьерским ассистентом: показывает меню, ищет по названию, показывает корзину и профиль.

Технически Dodo Pizza skill работает через Puppeteer – headless Chrome. Причина проста: сайт dodopizza.ru стоит за ServicePipe (антибот-защита), и любые прямые HTTP-запросы получают 403. Приходится эмулировать полноценный браузер. Авторизация вообще требует видимый Chrome с reCAPTCHA. Это работает, но решение тяжёлое: Chrome жрёт память, запуск медленный, а капча требует ручного вмешательства.

После Dodo я задумался: а что если следующий skill можно сделать чище – без браузера, без капчи, на чистых REST-вызовах?

Зачем мне skill для мобильного оператора

Я пользуюсь СберМобайл. Звоню много, раздаю интернет с телефона, периодически проверяю остатки. Каждый раз это одна и та же последовательность: открыть приложение, подождать пока загрузится, потыкать по вкладкам. Три нажатия, чтобы узнать сколько гигабайт осталось. Пять нажатий, чтобы посмотреть какие услуги подключены.

А ещё я хотел видеть всю картину разом: остатки, тариф, подключённые услуги, бонусы – одним вопросом. Ни одно мобильное приложение так не умеет, потому что информация размазана по разным экранам. AI-агент может собрать данные из нескольких API-эндпоинтов и дать сводку за один ответ.

Как устроен SberMobile skill

Разведка API

Первый шаг – понять, как устроен личный кабинет. Я открыл lk.sbermobile.ru в Chrome DevTools и начал записывать сетевые запросы. SPA-приложение, база API – https://lk.sbermobile.ru/v2/api/. Все данные приходят в JSON. Никакого антибота, никакого ServicePipe – просто REST API за авторизацией. После Dodo Pizza это было как глоток свежего воздуха.

Несколько неочевидных вещей, на которые я наткнулся:

Токен передаётся в заголовке token: значение, а не в стандартном Authorization: Bearer. Номер телефона – 10 цифр без +7, в поле number, а не phone. Все суммы – в копейках: 39000 это 390 рублей.

Архитектура

В итоге получилась такая структура:

sbermobile-skill/
|-- client/
|   |-- __init__.py
|   |-- sbermobile_client.py    # REST-клиент
|-- skills/
|   |-- base.py                 # Базовый класс Skill
|   |-- account/                # get_balance, get_remainders
|   |-- tariff/                 # get_current, list_available
|   |-- services/               # list_current, get_campaigns
|-- examples/
|   |-- agent_demo.py           # Интерактивный AI-агент
|-- docs/
|   |-- api-reference.md
|-- SKILL.md                    # Описание для Claude Code
|-- requirements.txt            # requests
|-- README.md

Два слоя: Python-клиент (SberMobileClient) и набор AI-skills поверх него.

Python-клиент

SberMobileClient – это обёртка над requests. Один файл, ~350 строк, зависимость одна – requests. Поддерживает авторизацию через SMS OTP, автоматически сохраняет и подгружает токен из /tmp/sbermobile_token.json. Все методы – read-only GET-запросы: тариф, остатки, услуги, платежи, промо, семья.

Авторизация выглядит так:

c = SberMobileClient()
c.request_otp('+79XXXXXXXXX')  -- SMS уходит на телефон
c.submit_otp('+79XXXXXXXXX', '1234')  -- токен сохраняется
-- дальше всё автоматически

Токен живёт долго, и при следующем запуске клиент подхватывает его сам. Не нужно авторизовываться каждый раз.

Skills – атомарные способности агента

Каждый skill – это Python-класс, наследник базового Skill. У него есть имя, описание для LLM (когда и зачем вызывать), JSON Schema входных параметров и метод execute(). Skill может вызывать один или несколько методов клиента и агрегировать результат.

Шесть skills покрывают основные сценарии:

account.get_balance -- рекомендуемое пополнение, автоплатёж, бонусы СберСпасибо
account.get_remainders -- остатки пакетов: ГБ, минуты, SMS
tariff.get_current -- текущий тариф + доступные для перехода
tariff.list_available -- витрина тарифов
services.list_current -- подключённые опции
services.get_campaigns -- промо-акции, персональные предложения

Все skills read-only. Write-операции (смена тарифа, подключение опции) в API существуют, но я сознательно их не реализовал в публичной версии. Smart executor умеет запрашивать подтверждение пользователя перед write-операциями, но пока эта механика ждёт своего часа.

SKILL.md – точка входа для Claude Code

Файл SKILL.md – это то, что Claude Code читает при вызове /sbermobile. Он содержит инструкции: как создать клиент, какие методы вызывать, как обработать ошибки авторизации. Фактически это prompt, который превращает Claude из универсального ассистента в оператора моего личного кабинета.

agent_demo.py – автономный агент

Помимо skill для Claude Code, в проекте есть standalone-агент (examples/agent_demo.py). Это полноценный agentic loop: пользователь пишет вопрос, Claude решает какие skills вызвать, получает результат, формулирует ответ. Всё на Anthropic Python SDK – 130 строк кода. Можно запустить без Claude Code, хоть в Jupyter, хоть на сервере.

Демо

Вот пять типичных вопросов, которые я задаю своему оператору через терминал. Каждый ответ – это один или несколько API-вызовов, которые Claude делает автоматически.

“Сколько у меня осталось гигабайт и минут?”

Один skill-вызов, один API-запрос. Claude парсит JSON с пакетами и выдаёт человекочитаемую сводку.

Один skill-вызов, один API-запрос. Claude парсит JSON с пакетами и выдаёт человекочитаемую сводку.

“Какой у меня тариф и сколько я плачу?”

Здесь Claude вызывает tariff.get_current и сам конвертирует копейки в рубли.

Здесь Claude вызывает tariff.get_current и сам конвертирует копейки в рубли.

“Какие услуги у меня подключены?”

Claude разделяет платные и бесплатные опции, показывает стоимость каждой.

Claude разделяет платные и бесплатные опции, показывает стоимость каждой.

“Сколько мне пополнить и есть ли бонусы СберСпасибо?”

Два API-вызова в одном skill: рекомендуемая сумма пополнения и состояние программы лояльности.

Два API-вызова в одном skill: рекомендуемая сумма пополнения и состояние программы лояльности.

“Какие есть акции или предложения для меня?”

Claude вытаскивает промо-кампании и формулирует их понятным языком, без маркетингового мусора.

Claude вытаскивает промо-кампании и формулирует их понятным языком, без маркетингового мусора.

Помогает найти инсайт

Управляю мобильной связью через AI-агента: skill для сбермобайл - 6

Пополнить баланс не заходя в банк

Управляю мобильной связью через AI-агента: skill для сбермобайл - 7
Управляю мобильной связью через AI-агента: skill для сбермобайл - 8

Что дальше

У меня уже два работающих skill-а: Dodo Pizza и СберМобайл. Первый – через headless-браузер, второй – через чистые REST-вызовы. Разница в удобстве разработки и скорости работы – колоссальная. REST-skill отвечает за секунду, браузерный – за 10-15.

Но идея шире. Я вижу это как агентскую систему управления повседневными приложениями. Вот что хочу перевести в skills дальше:

Банк – остатки, переводы, история операций. Маркетплейс – отслеживание заказов, статус доставки. Транспорт – баланс карты, маршруты. Госуслуги – статус заявлений, записи.

Представьте утренний запрос в терминале: “дай сводку” – и Claude сам обращается к оператору, банку, маркетплейсу и выдаёт одним сообщением: остаток на балансе, статус доставки, сколько гигабайт осталось. Это не футуристика, это рабочий паттерн уже сегодня.

Каждый skill – это одна зависимость (requests или puppeteer), один markdown-файл с промптом и несколько API-вызовов.

Код проекта целиком – на GitHub: https://github.com/pocketpet/sbermobile-skill

Автор: leviva23

Источник

Rambler's Top100