Не пересказ документации: берём официальный AppImage, вскрываем app.asar и смотрим, что реально лежит внутри AI-клиента — с цифрами и оговорками.
Обычно обзор AI-клиента — это пересказ сайта: «поддерживает 50 провайдеров, работает с MCP, бесплатно». Мы пошли другим путём: скачали официальную Linux-сборку Cherry Studio 2.1.10, распаковали её и разобрали main-процесс инструментом REA. Дальше — что реально лежит внутри, сколько это весит, куда уходят данные и чего мой разбор не показывает.
Взяли последний релиз на GitHub — v2.1.10, файл Cherry-Studio-2.1.10-linux-x64.AppImage, 312 010 562 байт. Распаковали через --appimage-extract: получилось 905 МБ на диске и app.asar на 316 МБ — это и есть упакованное приложение.
Дальше — REA, MCP-инструмент для реверс-инжиниринга. Первый прогон остановился на проверке целостности: объявленный хеш нативного модуля better-sqlite3 не совпал с файлом в сборке. Для Electron это обычная картина — нативные бинарники подписывают или чистят после упаковки. Повторили с политикой record-and-continue, и разбор пошёл.
Разбирали main-процесс: 211 файлов из out/main плюс package.json. Результат — evidence-файл с цифрами, ссылками на узлы и списком ограничений: 206 релевантных файлов, 205 разобрано, 32,3 МБ текста, 4 022 998 узлов AST, 4 679 находок, ноль ошибок парсинга.
Первое, что видно без всякого анализа: клиент большой. AppImage 312 МБ, после распаковки — 905 МБ, а внутри архива 606,8 МБ файлов. Основная масса — не код приложения, а зависимости: 12 638 файлов в node_modules против 4 575 в каталоге out, где лежит собранный код Cherry Studio.

Практический вывод: если вы ставите такой клиент на рабочую машину, вы ставите почти гигабайт кода и зависимостей. Это нормально для Electron, но объясняет, почему обновления приходят сотнями мегабайт.
Самое интересное — не размер, а содержимое. В комплекте идёт реестр провайдеров и моделей: 67 подключений и 949 моделей с указанием владельца. То есть список поддерживаемых сервисов не подгружается с сайта, а лежит в самой сборке.
| Находка | Где | Что это значит |
|---|---|---|
| 67 провайдеров | resources/provider-registry/providers.json | реестр подключений в комплекте |
| 949 моделей | resources/provider-registry/models.json | каталог моделей и владельцев |
| Claude Agent SDK 0.3.284 | package.json, зависимости | агентный рантайм Anthropic внутри |
| MCP: 287 вхождений mcpServers | out/main и node_modules | полноценный хост MCP-серверов |
| Sentry DSN | out/main | отправка ошибок во внешний сервис |
| api.cherry-ai.com | out/main | облако Cherry и эндпоинт диагностики |
| open-computer-use | resources/computer-use | управление рабочим столом, X11 и Wayland |

Отдельно стоит встроенный Claude Agent SDK — тот же агентный рантайм, что используют инструменты Anthropic. Внутри десктопного клиента он отвечает за агентные сценарии: модель вызывает инструменты, ходит в MCP-серверы, работает пошагово. Для пользователя это значит, что «агент» здесь — не маркетинговое слово, а конкретный SDK с конкретной версией.
В коде main-процесса нашлись три типа внешних адресов. Первый — Sentry: в сборку зашит DSN вида o447951.ingest.sentry.io с ключом проекта. Это стандартный сборщик ошибок: при сбое приложение может отправить стек и окружение разработчику.
Второй — api.cherry-ai.com: облако Cherry (модели Cherry Cloud) и отдельный путь /diagnostics для диагностических отчётов. Третий — адреса самих провайдеров, которые вы подключаете: они и так очевидны, но важно, что запросы идут напрямую с вашей машины, а не через сервер Cherry.
| Адрес | Назначение | Статус проверки |
|---|---|---|
| o447951.ingest.sentry.io | сбор ошибок приложения | адрес в коде, отправку не перехватывали |
| api.cherry-ai.com | Cherry Cloud, модели | используется при работе с облаком |
| api.cherry-ai.com/diagnostics | диагностический отчёт | эндпоинт есть, триггер не проверен |
287 вхождений mcpServers и 165 упоминаний протокола — это не случайные строки. В сборке лежит TypeScript SDK MCP и отдельный слой pi-mcp, а в main-процессе есть операции подключения, авторизации и переподключения серверов: mcp_authenticate, mcp_reconnect, mcp_status.
Для нас это важно как для площадки: клиент с MCP-хостом — это ещё одна точка, куда можно подключить наш собственный сервер. И одновременно повод проверять, какие серверы подключает пользователь: MCP-инструменты получают доступ к модели и могут выполнять действия.
Честность важнее эффекта. Разбор статический: мы читали файлы, а не запускали приложение. Значит, часть картины осталась за кадром.
| Область | Что покрыто | Что не проверено |
|---|---|---|
| main-процесс | 205 файлов, 32,3 МБ кода | renderer и node_modules в этом прогоне |
| IPC | 29 обработчиков, 2 литеральных канала | 27 динамических каналов не разрешены |
| Сеть | адреса найдены в коде | реальный трафик не перехватывался |
| Поведение | структура и связи | что именно уходит при сбое |