{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "Yuriy Gavrilov: posts tagged MCP",
    "_rss_description": "Welcome to my personal place for love, peace and happiness 🤖 Yuiry Gavrilov",
    "_rss_language": "en",
    "_itunes_email": "yvgavrilov@gmail.com",
    "_itunes_categories_xml": "",
    "_itunes_image": "https:\/\/gavrilov.info\/pictures\/userpic\/userpic-square@2x.jpg?1643451008",
    "_itunes_explicit": "no",
    "home_page_url": "https:\/\/gavrilov.info\/tags\/mcp\/",
    "feed_url": "https:\/\/gavrilov.info\/tags\/mcp\/json\/",
    "icon": "https:\/\/gavrilov.info\/pictures\/userpic\/userpic@2x.jpg?1643451008",
    "authors": [
        {
            "name": "Yuriy Gavrilov - B[u]g - for charity.gavrilov.eth",
            "url": "https:\/\/gavrilov.info\/",
            "avatar": "https:\/\/gavrilov.info\/pictures\/userpic\/userpic@2x.jpg?1643451008"
        }
    ],
    "items": [
        {
            "id": "360",
            "url": "https:\/\/gavrilov.info\/all\/cline-i-continue-dva-podhoda-k-ai-assistentu-v-vs-code\/",
            "title": "Cline и Continue: два подхода к AI-ассистенту в VS Code",
            "content_html": "<p>За последние два года AI-ассистенты для программирования перестали быть экзотикой и превратились в рабочий инструмент миллионов разработчиков. Однако выбрать подходящий — задача нетривиальная. Cline и Continue — два самых популярных open-source решения для VS Code, и хотя оба ставят перед собой схожую цель, подходы у них принципиально разные.<\/p>\n<p>Эта статья поможет разобраться, чем они отличаются, как настроить каждый из них и когда какой инструмент стоит использовать.<\/p>\n<hr \/>\n<h3>Cline: автономный агент<\/h3>\n<p>Cline — это автономный кодинг-агент, который живёт прямо в вашей IDE. Вы описываете задачу, а он читает файлы, вносит правки, запускает команды в терминале и повторяет цикл, пока задача не будет выполнена. Это ближайший open-source аналог Claude Code по стилю работы: агент владеет циклом выполнения, человек проверяет diff’ы.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2026-10-11-v-20.13.47.png\" width=\"1084\" height=\"916\" alt=\"\" \/>\n<\/div>\n<p><b>Ключевые особенности:<\/b><\/p>\n<ul>\n<li><b>Чтение и запись файлов<\/b> — навигация по кодовой базе, создание файлов и точечные правки. Каждое изменение показывается в виде diff’а перед применением.<\/li>\n<li><b>Выполнение команд<\/b> — запуск shell-команд, тестов, установка пакетов и мониторинг вывода в реальном времени.<\/li>\n<li><b>Браузер<\/b> — headless-браузер для тестирования веб-приложений, скриншотов и отладки ошибок.<\/li>\n<li><b>MCP-серверы<\/b> — расширение возможностей через подключение внешних инструментов: баз данных, API, документации.<\/li>\n<li><b>Любая модель<\/b> — Claude, GPT-4, Gemini, DeepSeek, локальные Ollama или любой OpenAI-совместимый endpoint.<\/li>\n<\/ul>\n<p>Каждое действие требует вашего подтверждения — это zero-trust архитектура, при которой код не покидает вашу машину. Cline распространяется под лицензией Apache 2.0 и недавно преодолел отметку в 5 миллионов установок.<\/p>\n<hr \/>\n<h3>Continue: ассистент, который остаётся в потоке<\/h3>\n<p>Continue — это open-source AI-ассистент, построенный вокруг чата, inline-правок и автодополнения. Здесь человек остаётся за рулём: модель помогает, но не берёт управление на себя.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/gavrilov.info\/pictures\/image-246.png\" width=\"2176\" height=\"544\" alt=\"\" \/>\n<\/div>\n<p><b>Ключевые особенности:<\/b><\/p>\n<ul>\n<li><b>Автодополнение кода<\/b> — inline-подсказки прямо в редакторе, работающие на низкой задержке.<\/li>\n<li><b>Чат и inline-редактирование<\/b> — общение с моделью в боковой панели и правки прямо в файле.<\/li>\n<li><b>Контекстные провайдеры<\/b> — `@codebase`, `@file`, `@terminal` для запросов с учётом кода проекта.<\/li>\n<li><b>Slash-команды<\/b> — кастомные команды для типовых задач: ревью кода, генерация тестов, рефакторинг.<\/li>\n<li><b>Гибкая конфигурация<\/b> — всё управляется через единый `config.yaml`.<\/li>\n<\/ul>\n<p>Continue — это middleware между редактором и LLM: расширение не поставляет собственную модель, а маршрутизирует запросы к тому провайдеру, который вы укажете. Проект поддерживает VS Code, JetBrains и Neovim, а его кодовая база остаётся открытой.<\/p>\n<hr \/>\n<h3>Сравнение: что выбрать<\/h3>\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"e2-text-table\">\n<tr>\n<td style=\"text-align: center\">Характеристика<\/td>\n<td style=\"text-align: center\">Cline<\/td>\n<td style=\"text-align: center\">Continue<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center\"><b>Философия<\/b><\/td>\n<td style=\"text-align: center\">Автономный агент — модель владеет циклом<\/td>\n<td style=\"text-align: center\">Ассистент — человек владеет циклом<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center\"><b>Лицензия<\/b><\/td>\n<td style=\"text-align: center\">Apache 2.0<\/td>\n<td style=\"text-align: center\">Open source<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center\"><b>Автодополнение<\/b><\/td>\n<td style=\"text-align: center\">Нет<\/td>\n<td style=\"text-align: center\">Да (inline-подсказки)<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center\"><b>Агентный режим<\/b><\/td>\n<td style=\"text-align: center\">Plan\/Act с подтверждением каждого шага<\/td>\n<td style=\"text-align: center\">Есть, но вторичен<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center\"><b>MCP<\/b><\/td>\n<td style=\"text-align: center\">Полная поддержка<\/td>\n<td style=\"text-align: center\">Полная поддержка<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center\"><b>Конфигурация<\/b><\/td>\n<td style=\"text-align: center\">`cline_mcp_settings.json` (JSON)<\/td>\n<td style=\"text-align: center\">`config.yaml` (YAML)<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center\"><b>Установок<\/b><\/td>\n<td style=\"text-align: center\">5M+<\/td>\n<td style=\"text-align: center\">Данные не раскрыты<\/td>\n<\/tr>\n<\/table>\n<p>Если коротко: <b>Cline<\/b> лучше подходит для крупных механических задач — массовых рефакторингов, скаффолдинга, повторяющихся правок. <b>Continue<\/b> — для быстрой помощи в потоке, когда вы не хотите, чтобы модель «убегала вперёд».<\/p>\n<p>Большинство разработчиков используют оба инструмента, переключаясь в зависимости от задачи.<\/p>\n<p>Стоит упомянуть и о третьем игроке — <b>Hermes<\/b>. Это open-source AI-агент, который работает по протоколу Agent Client Protocol (ACP) и может быть подключён к VS Code, Zed или JetBrains через отдельное расширение ACP Client. Hermes CLI запускается как локальный подпроцесс, без облачного прокси, а расширение для VS Code стримит чат, выполняет инструменты и управляет сессиями. Главное отличие Hermes от Cline и Continue в том, что это не самостоятельное расширение с собственным интерфейсом, а агентный рантайм, который подключается к IDE через стандартизированный протокол. Подробнее о нём — в отдельной статье.<\/p>\n<hr \/>\n<h3>Установка и базовая настройка<\/h3>\n<h4>Cline<\/h4>\n<p><b>Установка:<\/b><\/p>\n<ol start=\"1\">\n<li>Откройте VS Code и перейдите в Extensions (`Ctrl\/Cmd + Shift + X`).<\/li>\n<li>Введите в поиске <b>Cline<\/b>.<\/li>\n<li>Установите расширение от `saoudrizwan` (ID: `saoudrizwan.claude-dev`).<\/li>\n<li>После установки нажмите на иконку Cline в Activity Bar. Если её не видно, перезапустите VS Code полностью.<\/li>\n<\/ol>\n<p><b>Подключение провайдера:<\/b><\/p>\n<p>Откройте настройки Cline и выберите провайдера. Можно использовать Cline Provider (pay-as-you-go), ClinePass (подписка) или подключить собственный API-ключ от Anthropic, OpenAI, OpenRouter или любого OpenAI-совместимого сервиса.<\/p>\n<h4>Continue<\/h4>\n<p><b>Установка:<\/b><\/p>\n<ol start=\"1\">\n<li>Откройте Extensions (`Ctrl\/Cmd + Shift + X`).<\/li>\n<li>Найдите <b>Continue<\/b> и установите расширение от `Continue.dev`.<\/li>\n<\/ol>\n<p><b>Настройка:<\/b><\/p>\n<p>При первом запуске Continue предложит мастер настройки. Конфигурация хранится в файле `~\/.continue\/config.yaml` (macOS\/Linux) или `%USERPROFILE%\\.continue\\config.yaml` (Windows). Открыть его можно из панели Continue: нажмите на иконку шестерёнки рядом с выпадающим списком моделей.<\/p>\n<p>Если у вас остался старый `config.json`, его можно мигрировать в YAML — при наличии `config.yaml` расширение загрузит именно его.<\/p>\n<hr \/>\n<h3>Настройка кастомной модели в Continue<\/h3>\n<p>Одно из главных преимуществ Continue — возможность подключить любую модель через OpenAI-совместимый API. Вот пример конфигурации для подключения модели через прокси-сервис:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">name: My Config\nversion: 1.0.0\nschema: v1\n\nmodels:\n  - name: GLM 5.3 Flash via Proxy\n    provider: openai\n    model: z-ai\/glm-5.3-flash\n    apiBase: https:\/\/your-proxy-host.example.com\/v1\n    apiKey: ${{ secrets.PROXY_API_KEY }}\n    roles:\n      - chat\n      - edit\n      - apply\n    defaultCompletionOptions:\n      temperature: 0.7\n      maxTokens: 4096\n    capabilities:\n      - tool_use<\/code><\/pre><p><b>Ключевые моменты:<\/b><\/p>\n<ul>\n<li>`apiBase` должен заканчиваться на `\/v1` — Continue автоматически добавит `\/chat\/completions`.<\/li>\n<li>`apiKey: ${{ secrets.PROXY_API_KEY }}` — ссылка на переменную из файла `.env`, который должен лежать рядом с `config.yaml`. Никогда не вписывайте ключ напрямую в конфиг.<\/li>\n<li>`capabilities: [tool_use]` — явно включает поддержку вызова инструментов, необходимую для работы Agent mode. Без этого кнопки Plan и Act будут неактивны.<\/li>\n<\/ul>\n<hr \/>\n<h3>Настройка MCP-серверов<\/h3>\n<p>MCP (Model Context Protocol) — это стандарт, позволяющий подключать к агенту внешние инструменты: базы данных, API, системы управления задачами. Оба инструмента поддерживают MCP, но конфигурируются по-разному.<\/p>\n<h4>Cline<\/h4>\n<p>Файл конфигурации: `cline_mcp_settings.json`. Открыть его можно через панель Cline: нажмите на иконку <b>MCP Servers<\/b>, перейдите на вкладку <b>Configure<\/b> и нажмите <b>Configure MCP Servers<\/b>.<\/p>\n<p>Пример подключения локального MCP-сервера:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">{\n  &quot;mcpServers&quot;: {\n    &quot;trino&quot;: {\n      &quot;command&quot;: &quot;mcp-trino&quot;,\n      &quot;args&quot;: [],\n      &quot;env&quot;: {\n        &quot;TRINO_HOST&quot;: &quot;192.168.3.81&quot;,\n        &quot;TRINO_PORT&quot;: &quot;8080&quot;,\n        &quot;TRINO_USER&quot;: &quot;trino&quot;,\n        &quot;TRINO_PASSWORD&quot;: &quot;&quot;,\n        &quot;TRINO_CATALOG&quot;: &quot;tpcds&quot;,\n        &quot;TRINO_SCHEMA&quot;: &quot;sf10&quot;,\n        &quot;TRINO_SSL&quot;: &quot;false&quot;,\n        &quot;TRINO_SCHEME&quot;: &quot;http&quot;\n      },\n      &quot;disabled&quot;: false,\n      &quot;alwaysAllow&quot;: []\n    }\n  }\n}<\/code><\/pre><p>Для удалённых серверов используйте `“type”: “streamableHttp”` и поле `“url”`.<\/p>\n<h4>Continue<\/h4>\n<p>MCP-серверы добавляются в тот же `config.yaml`, где настраиваются модели, либо в отдельные файлы в папке `.continue\/mcpServers\/`.<\/p>\n<p>Пример:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">mcpServers:\n  - name: Trino\n    command: mcp-trino\n    env:\n      TRINO_HOST: &quot;192.168.3.81&quot;\n      TRINO_PORT: &quot;8080&quot;\n      TRINO_USER: &quot;trino&quot;\n      TRINO_PASSWORD: &quot;&quot;\n      TRINO_CATALOG: &quot;tpcds&quot;\n      TRINO_SCHEMA: &quot;sf10&quot;\n      TRINO_SSL: &quot;false&quot;\n      TRINO_SCHEME: &quot;http&quot;<\/code><\/pre><p>После сохранения конфигурации <b>полностью перезапустите VS Code<\/b> — оба расширения подхватывают MCP-серверы только при старте.<\/p>\n<hr \/>\n<h3>MCP-серверы для Trino: что выбрать<\/h3>\n<p>Trino — это распределённый SQL-движок для аналитических запросов к большим данным. Подключение MCP-сервера для Trino даёт AI-агенту возможность исследовать каталоги, выполнять запросы и анализировать планы выполнения прямо из чата. Для Trino существует несколько MCP-серверов, которые можно разделить на две категории: легковесные Python-серверы и высокопроизводительные Go-серверы.<\/p>\n<h4>Python-серверы (быстрый старт)<\/h4>\n<p><b>`trino-mcp`<\/b> — самый функциональный и простой в настройке Python-сервер, который хорошо подходит для большинства задач. Поддерживает OAuth2 и Basic Auth, по умолчанию разрешает только `SELECT`-запросы (для записи нужно явно установить `ALLOW_WRITE_QUERIES=true`), автоматически добавляет комментарии в запросы с именем пользователя для аудита, а также умеет экспортировать результаты в JSON или CSV.<\/p>\n<p>Установка через `uvx`:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">uvx trino-mcp<\/code><\/pre><p>Пример конфигурации для Continue:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">mcpServers:\n  - name: Trino\n    command: uvx\n    args:\n      - &quot;trino-mcp&quot;\n    env:\n      TRINO_HOST: &quot;your-trino-host&quot;\n      TRINO_PORT: &quot;8080&quot;\n      TRINO_USER: &quot;your-user&quot;<\/code><\/pre><p><b>`alaturqua\/mcp-trino-python`<\/b> — сервер, ориентированный на работу с Trino и Iceberg. Предоставляет расширенные возможности для исследования данных и обслуживания таблиц Iceberg, поддерживает три режима транспорта (`stdio`, `streamable-http`, `sse`) и имеет готовый `Dockerfile` для быстрого развёртывания.<\/p>\n<h4>Go-серверы (для продакшена)<\/h4>\n<p><b>`txn2\/mcp-trino`<\/b> — это, пожалуй, самый мощный и функциональный MCP-сервер для Trino. Он даёт AI-ассистентам безопасный, структурированный доступ к Trino и любым Trino-совместимым движкам. По умолчанию работает в режиме только для чтения, поддерживает ограничения на количество строк и таймауты запросов, а также имеет опциональный семантический слой для отображения бизнес-описаний, владельцев и маркеров чувствительности данных из DataHub или других каталогов метаданных.<\/p>\n<p><b>Ключевые особенности:<\/b><\/p>\n<ul>\n<li><b>Выполнение SQL-запросов<\/b> — `SELECT`, `SHOW`, `DESCRIBE` с настраиваемыми лимитами и таймаутами.<\/li>\n<li><b>Анализ планов выполнения<\/b> — логические, распределённые и I\/O-планы запросов.<\/li>\n<li><b>Просмотр схем<\/b> — навигация по каталогам, схемам и таблицам.<\/li>\n<li><b>Описание таблиц<\/b> — определения колонок с опциональными примерами данных.<\/li>\n<li><b>Мультикластерность<\/b> — запросы к нескольким серверам Trino из одной установки через `TRINO_ADDITIONAL_CONNECTIONS`.<\/li>\n<li><b>Библиотека для Go<\/b> — можно импортировать как Go-пакет и собрать собственный MCP-сервер с кастомной аутентификацией и аудитом.<\/li>\n<\/ul>\n<p>Установка через Homebrew:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">brew install txn2\/tap\/mcp-trino<\/code><\/pre><p>Пример конфигурации для Cline:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">{\n  &quot;mcpServers&quot;: {\n    &quot;trino&quot;: {\n      &quot;command&quot;: &quot;mcp-trino&quot;,\n      &quot;args&quot;: [],\n      &quot;env&quot;: {\n        &quot;TRINO_HOST&quot;: &quot;your-trino-host&quot;,\n        &quot;TRINO_PORT&quot;: &quot;8080&quot;,\n        &quot;TRINO_USER&quot;: &quot;trino&quot;,\n        &quot;TRINO_PASSWORD&quot;: &quot;&quot;,\n        &quot;TRINO_CATALOG&quot;: &quot;hive&quot;,\n        &quot;TRINO_SCHEMA&quot;: &quot;default&quot;,\n        &quot;TRINO_SSL&quot;: &quot;false&quot;,\n        &quot;TRINO_SCHEME&quot;: &quot;http&quot;\n      },\n      &quot;disabled&quot;: false,\n      &quot;alwaysAllow&quot;: []\n    }\n  }\n}<\/code><\/pre><p>Пример конфигурации для Continue:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">mcpServers:\n  - name: Trino\n    command: mcp-trino\n    env:\n      TRINO_HOST: &quot;your-trino-host&quot;\n      TRINO_PORT: &quot;8080&quot;\n      TRINO_USER: &quot;trino&quot;\n      TRINO_PASSWORD: &quot;&quot;\n      TRINO_CATALOG: &quot;hive&quot;\n      TRINO_SCHEMA: &quot;default&quot;\n      TRINO_SSL: &quot;false&quot;\n      TRINO_SCHEME: &quot;http&quot;<\/code><\/pre><p><b>Важные параметры `mcp-trino`:<\/b><\/p>\n<ul>\n<li><b>Подключение<\/b>: обязательные переменные — `TRINO_HOST`, `TRINO_USER`. Порт по умолчанию: `8080` для HTTP или `443` для HTTPS.<\/li>\n<li><b>Режим только для чтения<\/b>: включён по умолчанию. Для записи установите `TRINO_ALLOW_WRITE=true`.<\/li>\n<li><b>SSL<\/b>: если Trino работает по HTTP, обязательно установите `TRINO_SSL: “false”` и `TRINO_SCHEME: “http”`, иначе сервер попытается использовать HTTPS и выдаст ошибку `invalid URL escape “%2F”`.<\/li>\n<\/ul>\n<h4>Что выбрать?<\/h4>\n<ul>\n<li><b>Для быстрого старта<\/b>: начните с `trino-mcp` (Python). Он легко устанавливается через `uvx` и имеет безопасные настройки по умолчанию.<\/li>\n<li><b>Для работы с Iceberg<\/b>: обратите внимание на `alaturqua\/mcp-trino-python`, если ваша основная задача — исследование и обслуживание таблиц Iceberg.<\/li>\n<li><b>Для продакшена<\/b>: выбирайте `txn2\/mcp-trino` (Go), если нужна высокая производительность, поддержка нескольких кластеров и возможность встраивания в собственные приложения.<\/li>\n<\/ul>\n<hr \/>\n<h3>Типичные проблемы и их решения<\/h3>\n<p><b>Модель не появляется в Continue после добавления в конфиг.<\/b><br \/>\nПроверьте, что файл `.env` существует и лежит в той же папке, что `config.yaml`. Имя переменной в `.env` должно точно совпадать с именем в `${{ secrets.ИМЯ }}`.<\/p>\n<p><b>Кнопки Plan и Act неактивны.<\/b><br \/>\nДобавьте `capabilities: [tool_use]` в блок модели. Без этой способности Continue блокирует агентные режимы.<\/p>\n<p><b>Ошибка `401 status code (no body)`.<\/b><br \/>\nКлюч API не распознан. Проверьте, что `apiBase` заканчивается на `\/v1`, ключ действителен и имеет положительный баланс.<\/p>\n<p><b>MCP-сервер не подключается с ошибкой `invalid URL escape “%2F”`.<\/b><br \/>\nСервер пытается использовать HTTPS, хотя Trino работает по HTTP. Добавьте `TRINO_SSL: “false”` и `TRINO_SCHEME: “http”` в переменные окружения MCP-сервера.<\/p>\n<p><b>Модель зависает после долгих раздумий в Agent mode.<\/b><br \/>\nСкорее всего, прокси-сервис не передаёт `tool_calls` в потоковом режиме. Проверьте это через `curl` с `“stream”: true` и имитацией вызова инструмента. Если `tool_calls` в потоке нет — попробуйте отключить стриминг через `config.json` или использовать модель с нативной поддержкой function calling.<\/p>\n<hr \/>\n<h3>Заключение<\/h3>\n<p>Cline и Continue решают разные задачи, и это их главное достоинство. Cline — это автономный агент, которому можно делегировать крупные задачи и вернуться к готовому результату. Continue — это ассистент, который помогает здесь и сейчас, не забирая контроль.<\/p>\n<p>Оба инструмента бесплатны, оба поддерживают MCP и работают с любой моделью. С помощью MCP-серверов, таких как `txn2\/mcp-trino`, вы можете подключить к агенту Trino и работать с данными прямо из чата — без переключения между окнами и ручного написания запросов.<\/p>\n<p>Начните с того инструмента, который ближе к вашему стилю работы, — а когда освоитесь, попробуйте второй. Большинство разработчиков в итоге используют оба.<\/p>\n",
            "date_published": "2026-10-11T20:16:12+03:00",
            "date_modified": "2026-10-11T20:14:32+03:00",
            "tags": [
                "Agents",
                "AI",
                "MCP",
                "Trino"
            ],
            "image": "https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2026-10-11-v-20.13.47.png",
            "_date_published_rfc2822": "Sun, 11 Oct 2026 20:16:12 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "360",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": [
                    "https:\/\/gavrilov.info\/pictures\/Snimok-ekrana-2026-10-11-v-20.13.47.png",
                    "https:\/\/gavrilov.info\/pictures\/image-246.png"
                ]
            }
        },
        {
            "id": "321",
            "url": "https:\/\/gavrilov.info\/all\/deystvitelno-li-dannye-gotovy-k-ii\/",
            "title": "Действительно ли данные готовы к ИИ",
            "content_html": "<p><b>Автор: Джейкоб Мэтсон<\/b><\/p>\n<p><a href=\"https:\/\/motherduck.com\/blog\/bird-bench-and-data-models\">https:\/\/motherduck.com\/blog\/bird-bench-and-data-models<\/a><\/p>\n<p>Несколько месяцев назад я писал о том, почему нам может <a href=\"https:\/\/motherduck.com\/blog\/who-needs-a-semantic-layer-anyway\">не понадобиться семантический слой<\/a>. Аргумент заключался в том, что ИИ может обнаруживать бизнес-логику из истории запросов, вместо того чтобы заставлять людей заранее определять каждую метрику. Я верил в это. Но у меня не было данных, чтобы это доказать.<\/p>\n<p>Теперь они у меня есть.<\/p>\n<p>Все началось с вопроса одного из наших инвесторов: *“Как различные модели справляются с BIRD при использовании MotherDuck MCP?”* Поэтому я провел эксперимент. Три передовые LLM модели (`Claude Opus 4.5`, `GPT-5.2` и `Gemini 3 Flash`), каждая из которых подключена к базе данных через сервер `MotherDuck MCP`, были запущены на наборе данных `BIRD Mini-Dev`.<\/p>\n<blockquote>\n<p><b>Пояснение:<\/b><\/p>\n<ul>\n<li>MCP (Model Context Protocol):** Стандарт, позволяющий ИИ-моделям безопасно и стандартизировано подключаться к внешним источникам данных и инструментам.<\/li>\n<li>BIRD (BIg Bench for Large-scale Database Grounded Text-to-SQL):** Популярный и сложный бенчмарк (набор тестов) для оценки того, насколько хорошо нейросети умеют переводить естественный язык в SQL-запросы.<\/li>\n<li>Mini-Dev:** Это официальная выборка из 500 вопросов для разработки из бенчмарка BIRD. Она охватывает 11 баз данных в сферах финансов, спорта, образования и здравоохранения.<\/li>\n<\/ul>\n<\/blockquote>\n<p>Модели данных здесь простые. В среднем 7 таблиц на базу данных. Ни в одной нет больше 13 таблиц. Объединения (joins) в основном «один-ко-многим», максимальная глубина — два или три перехода, ноль отношений «многие-ко-многим». Это тот тип схемы, который можно понять за пять минут, прочитав `DDL`.<\/p>\n<blockquote>\n<p><b>Пояснение:<\/b> `DDL` (Data Definition Language) — это часть SQL, используемая для описания структуры базы данных (создание таблиц, колонок, связей).<\/p>\n<\/blockquote>\n<p>Результат? <b>95% точности.<\/b> Никакого семантического слоя. Никакой истории запросов. Никакого специального контекста. Только схема базы данных.<\/p>\n<p>Но это число требует «звездочки» (примечания), и, честно говоря, эта звездочка — самая интересная часть.<\/p>\n<h3>Что на самом деле означают 95%<\/h3>\n<p>Вот что я измерял на самом деле.<\/p>\n<p>Бенчмарк BIRD оценивает точность, используя <b>Execution Accuracy (EX)<\/b>: запускается предсказанный SQL и «золотой» (эталонный) SQL, сравниваются наборы результатов, и ставится бинарная оценка «сдал\/не сдал». При этих строгих правилах текущий уровень развития технологий (SOTA) составляет около 76. Мои модели набрали 64 на тренировочной выборке и 58 на тестовой.<\/p>\n<p>Звучит плохо. Но у строгой оценки BIRD есть хорошо задокументированная проблема. В статье 2025 года, представляющей метрику `FLEX`, было обнаружено, что точность выполнения (execution accuracy) BIRD совпадает с оценками экспертов-людей только в 62% случаев. Почти 4 из 10 суждений ошибочны, в основном это ложноотрицательные результаты, когда бенчмарк отвергает ответы, которые люди бы приняли.<\/p>\n<p>Эти 62 бросились мне в глаза, потому что они почти точно совпадают с моей смешанной точностью при строгой оценке в 60.5 (64 обучение \/ 58 тест). То же наблюдение, но с другой стороны. Метрика `FLEX` пришла к этому с помощью проверяющих людей. Я пришел к этому, ослабив условия тестирования.<\/p>\n<p>Подумайте, что это значит для таблицы лидеров. Если бенчмарк согласен с людьми только в 62 случаев, то чтобы набрать выше 62 по строгим правилам, вы должны начать воспроизводить ошибки бенчмарка. Вы перестаете учиться писать правильный SQL. Вы начинаете учиться соответствовать специфической, иногда ошибочной интерпретации каждого вопроса в BIRD. Системы с рейтингом 76 закрепили эти ошибки суждения в своем обучении. Они получают более высокие баллы, становясь *хуже* в выполнении реальной задачи.<\/p>\n<p>Поэтому я построил более реалистичную оценку. Я разделил 500 вопросов на тренировочный набор (151 вопрос) и тестовый набор (349 вопросов).<\/p>\n<p>Я использовал <b>тренировочный набор (train)<\/b> для калибровки оценки: вручную пересматривал ошибки, создавал исправленные «платиновые» ответы там, где «золотой» SQL BIRD был ошибочным, и настраивал правила частичного совпадения. <b>Тестовый набор (test)<\/b> был контрольным.<\/p>\n<p>Вот как выглядит точность, если смягчать критерии оценки уровень за уровнем:<\/p>\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"e2-text-table\">\n<tr>\n<td style=\"text-align: center\">Уровень оценки (Scoring Tier)<\/td>\n<td style=\"text-align: center\">Train<\/td>\n<td style=\"text-align: center\">Test<\/td>\n<td style=\"text-align: center\">Что добавляется<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center\"><b>Только совпадение с Gold<\/b> (≈ офиц. BIRD)<\/td>\n<td style=\"text-align: center\">64.0<\/td>\n<td style=\"text-align: center\">58.2<\/td>\n<td style=\"text-align: center\">Строгое равенство наборов результатов<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center\"><b>+ Платиновые ответы<\/b><\/td>\n<td style=\"text-align: center\">73.1<\/td>\n<td style=\"text-align: center\">58.5<\/td>\n<td style=\"text-align: center\">Исправляет известные ошибки в «золотом» SQL BIRD (см. примечание ниже)<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center\"><b>+ Допуск форматирования<\/b><\/td>\n<td style=\"text-align: center\">78.8<\/td>\n<td style=\"text-align: center\">65.5<\/td>\n<td style=\"text-align: center\">Различия в `DISTINCT`, лишние колонки, округление<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center\"><b>+ Судья LLM<\/b><\/td>\n<td style=\"text-align: center\">94.9<\/td>\n<td style=\"text-align: center\">94.4<\/td>\n<td style=\"text-align: center\">“Принял бы человек этот ответ?”<\/td>\n<\/tr>\n<\/table>\n<blockquote>\n<p><b>Примечание:<\/b> «Платиновые» исправления существуют только для тренировочного набора, так как я вручную проверил эти 151 вопрос. Вот почему уровень «Платина» почти не меняется на тесте +0.3 pp против +9.1 pp на тренировке). Но посмотрите на уровень с судьей: 94.9 на тренировке и 94.4 на тесте. Разница всего в половину процентного пункта. Оценка держится на контрольной выборке даже без моих исправлений вручную.<\/p>\n<\/blockquote>\n<h4>Результаты тренировочной выборки (151 вопрос, все 3 модели):<\/h4>\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"e2-text-table\">\n<tr>\n<td style=\"text-align: center\">Модель<\/td>\n<td style=\"text-align: center\">STRICT (≈ BIRD EX)<\/td>\n<td style=\"text-align: center\">REALISTIC<\/td>\n<td style=\"text-align: center\">Общая стоимость<\/td>\n<td style=\"text-align: center\">Вызовы инструментов (P5 \/ Median \/ P95)<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center\">`Gemini 3 Flash`<\/td>\n<td style=\"text-align: center\">68.2<\/td>\n<td style=\"text-align: center\">94.0<\/td>\n<td style=\"text-align: center\">1.80<\/td>\n<td style=\"text-align: center\">3 \/ 6 \/ 9<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center\">`Claude Opus 4.5`<\/td>\n<td style=\"text-align: center\">64.9<\/td>\n<td style=\"text-align: center\">95.4<\/td>\n<td style=\"text-align: center\">26.37<\/td>\n<td style=\"text-align: center\">4 \/ 6 \/ 9<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center\">`GPT-5.2`<\/td>\n<td style=\"text-align: center\">58.9<\/td>\n<td style=\"text-align: center\">95.4<\/td>\n<td style=\"text-align: center\">6.87<\/td>\n<td style=\"text-align: center\">4 \/ 7 \/ 12<\/td>\n<\/tr>\n<\/table>\n<h4>Результаты тестовой выборки (349 вопросов, 2 модели):<\/h4>\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"e2-text-table\">\n<tr>\n<td style=\"text-align: center\">Модель<\/td>\n<td style=\"text-align: center\">STRICT (≈ BIRD EX)<\/td>\n<td style=\"text-align: center\">REALISTIC<\/td>\n<td style=\"text-align: center\">Общая стоимость<\/td>\n<td style=\"text-align: center\">Вызовы инструментов (P5 \/ Median \/ P95)<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center\">`Gemini 3 Flash`<\/td>\n<td style=\"text-align: center\">60.7<\/td>\n<td style=\"text-align: center\">94.6<\/td>\n<td style=\"text-align: center\">3.96<\/td>\n<td style=\"text-align: center\">4 \/ 6 \/ 9<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center\">`GPT-5.2`<\/td>\n<td style=\"text-align: center\">55.6<\/td>\n<td style=\"text-align: center\">94.3<\/td>\n<td style=\"text-align: center\">15.32<\/td>\n<td style=\"text-align: center\">4 \/ 7 \/ 11<\/td>\n<\/tr>\n<\/table>\n<blockquote>\n<p>*Примечание: `Claude Opus` не запускался на тестовом наборе. После того как все три модели сошлись на ~95% на тренировке, тратить еще 60+, чтобы доказать то же самое на 349 вопросах, показалось нецелесообразным.*<\/p>\n<\/blockquote>\n<p>Медианная модель делает 6-7 вызовов инструментов MCP на вопрос при лимите в 10 итераций. Типичный вопрос выглядит так: изучить схему, просмотреть некоторые колонки, набросать запрос, проверить результаты, уточнить, готово. Некоторые модели, такие как `GPT-5.2`, делают несколько вызовов инструментов за итерацию, поэтому его показатель P95, равный 12, превышает лимит итераций.<\/p>\n<p>Все три модели достигают <b>94-95% при реалистичной оценке<\/b>, независимо от того, где они начинают при строгой оценке. На тренировочной выборке разрыв между «лучшим» и «худшим» сокращается с 12.6 процентных пунктов до 1.4. На тесте — с 5.1 до 0.3. Берите любую передовую модель.<\/p>\n<h3>Бенчмарк иногда ошибается<\/h3>\n<p>BIRD — хороший бенчмарк. Но в нем есть баги. Только в тренировочном наборе (151 вопрос) я нашел 49 случаев, где «золотой» SQL явно неверен. Я не проверял вручную тестовый набор, поэтому реальное число для всех 500 вопросов, вероятно, выше.<\/p>\n<p>Вот пример, который мне запомнился. Вопрос просит список школ, чей совокупный балл превышает 1500. «Золотой» SQL проверяет `count` (количество) студентов, набравших более 1500 баллов. Совершенно другой запрос, совершенно другой ответ. Вы читаете вопрос, читаете «правильный» ответ и думаете: подождите, но спрашивали-то не об этом.<\/p>\n<p>Я создал исправленные «платиновые» ответы для этих случаев. В среднем около 14 из 151 вопроса тренировочной выборки для каждой модели совпали с платиновым ответом вместо золотого, добавив 9.1 процентных пунктов.<\/p>\n<h3>Людей не волнует форматирование<\/h3>\n<p>На тренировочной выборке еще +5.7 pp получается за счет принятия результатов, которые верны по существу, но не проходят проверку на строгое равенство:<\/p>\n<ul>\n<li><b>Лишние колонки (30 случаев):<\/b> Модель вернула запрошенные данные плюс дополнительный контекст. Человек сказал бы «спасибо, это полезно». Бенчмарк говорит «провал».<\/li>\n<li><b>Несовпадения `DISTINCT` (41 случай):<\/b> Модель использовала `SELECT DISTINCT`, когда в золотом ответе этого не было, или наоборот. Уникальные значения совпадают идеально. Человек бы даже не заметил.<\/li>\n<li><b>Различия в округлении (3 случая):<\/b> Золотой ответ 24.67, ответ модели 24.6667. То же число, разная точность.<\/li>\n<\/ul>\n<p>Ни один из этих ответов не является неверным. Это различия в форматировании, которые важны только для функции сравнения строк.<\/p>\n<h3>Человек (LLM)-в-петле (The LLM-in-the-Loop)<\/h3>\n<p>Оставшийся разрыв (16 pp на тренировке, 29 pp на тесте) закрывается <b>судьей LLM<\/b>. Я использовал `Gemini 3 Flash` для проверки каждого «проваленного» ответа с вопросом: *действительно ли этот SQL отвечает на вопрос?*<\/p>\n<p>На тестовой выборке судья выполняет больше тяжелой работы, потому что там нет «платиновых» исправлений для предварительного отлова багов бенчмарка. Что именно он спасал?<\/p>\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"e2-text-table\">\n<tr>\n<td style=\"text-align: center\">Причина<\/td>\n<td style=\"text-align: center\">Кол-во<\/td>\n<td style=\"text-align: center\">Что произошло<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center\"><b>Больше отфильтровано<\/b> (Missing rows)<\/td>\n<td style=\"text-align: center\">57<\/td>\n<td style=\"text-align: center\">Модель отфильтровала строже, чем золотой стандарт, но это обоснованно.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center\"><b>Лишние строки<\/b> (Extra rows)<\/td>\n<td style=\"text-align: center\">33<\/td>\n<td style=\"text-align: center\">Модель интерпретировала вопрос более широко.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center\"><b>Близкие значения<\/b> (Values close)<\/td>\n<td style=\"text-align: center\">19<\/td>\n<td style=\"text-align: center\">Числовые результаты в пределах допуска.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center\"><b>Пустой результат<\/b><\/td>\n<td style=\"text-align: center\">14<\/td>\n<td style=\"text-align: center\">Модель ничего не вернула, но логика была верной (данных нет).<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center\"><b>Пропущенные колонки<\/b><\/td>\n<td style=\"text-align: center\">11<\/td>\n<td style=\"text-align: center\">Возвращено меньше колонок, но ответ на вопрос дан.<\/td>\n<\/tr>\n<\/table>\n<p>Это оценочные суждения. Должен ли запрос «перечислите все школы в районе» включать чартерные школы? Разумные люди могут не согласиться. Строгий бенчмарк выбирает одну интерпретацию и наказывает за все остальные. Судья просто спрашивает, можно ли обосновать интерпретацию модели.<\/p>\n<p>Если вы создаете ИИ-аналитику, это важно. Никто не выпускает продукт text-to-SQL, где пользователь видит сырые результаты без этапа проверки. Всегда есть человек или LLM, проверяющий выходные данные. Эти 94-95% отражают то, как эти продукты работают на самом деле. 58-64% отражают то, как работают бенчмарки.<\/p>\n<h3>А как насчет контекста?<\/h3>\n<p>Вы могли бы ожидать, что дополнительный контекст поможет. Комментарии к колонкам, описания, подсказки о значении данных. Это интуиция, лежащая в основе семантических слоев и механизмов контекста.<\/p>\n<p>Я протестировал это. Те же 500 вопросов, все модели, с комментариями к колонкам каждой таблицы и без них.<\/p>\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"e2-text-table\">\n<tr>\n<td style=\"text-align: center\">Схема<\/td>\n<td style=\"text-align: center\">Train<\/td>\n<td style=\"text-align: center\">Test<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center\"><b>Без комментариев<\/b><\/td>\n<td style=\"text-align: center\">94.9<\/td>\n<td style=\"text-align: center\">94.4<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center\"><b>С комментариями<\/b><\/td>\n<td style=\"text-align: center\">96.0<\/td>\n<td style=\"text-align: center\">94.6<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center\"><b>Дельта<\/b><\/td>\n<td style=\"text-align: center\">1.1 pp<\/td>\n<td style=\"text-align: center\">0.2 pp<\/td>\n<\/tr>\n<\/table>\n<p>Один процентный пункт на тренировке, почти ничего на тесте. В большинстве вопросов правильность не изменилась.<\/p>\n<p>Если разбить по базам данных, становится интересно. Чем сложнее схема, тем больше помогают комментарии (усредненно по train и test):<\/p>\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"e2-text-table\">\n<tr>\n<td style=\"text-align: center\">База данных<\/td>\n<td style=\"text-align: center\">Базовая точность<\/td>\n<td style=\"text-align: center\">Эффект комментариев<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center\">`debit_card_specializing`<\/td>\n<td style=\"text-align: center\">85.5 (самая сложная)<\/td>\n<td style=\"text-align: center\">8.7 pp<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center\">`european_football_2`<\/td>\n<td style=\"text-align: center\">93.2<\/td>\n<td style=\"text-align: center\">3.4 pp<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center\">`california_schools`<\/td>\n<td style=\"text-align: center\">95.7 (самая легкая)<\/td>\n<td style=\"text-align: center\">2.9 pp<\/td>\n<\/tr>\n<\/table>\n<p>Комментарии помогают, когда схема действительно запутанная. Таблица `debit_card_specializing` (попробуйте угадать, как выглядит эта схема) получила самый большой прирост. Но схемы с интуитивными названиями и очевидными связями? Там комментарии сделали только хуже. У моделей уже сформировалась правильная ментальная модель, а комментарии внесли шум.<\/p>\n<p>Каждый разработчик знает это о комментариях в коде. Полезны при реальной неоднозначности. Вредны, когда констатируют очевидное. `\/\/ увеличить i на 1` еще никому не помогло.<\/p>\n<h3>Почему простые модели данных работают<\/h3>\n<p>Базы данных BIRD — это не корпоративные хранилища данных. Они простые:<\/p>\n<ul>\n<li>7 таблиц в среднем.<\/li>\n<li>9 внешних ключей в среднем, в основном «один-ко-многим».<\/li>\n<li>Ноль связей «многие-ко-многим».<\/li>\n<li>Глубина join макс. 2-3 перехода, нет глубоких иерархий.<\/li>\n<\/ul>\n<p>LLM читают эти схемы так же, как опытный аналитик читает DDL. Они видят таблицу `schools` с колонками `school_name`, `district` и `enrollment`, и они знают, что делать. Внешний ключ от `schools` к `scores`? Они знают, как их соединить (join). Никому не нужен семантический слой, чтобы объяснить, что “enrollment” означает «количество студентов».<\/p>\n<p><b>Хорошее моделирование данных — это и есть семантический слой.<\/b> Когда ваши таблицы названы хорошо, а объединения прямолинейны, у LLM есть всё необходимое.<\/p>\n<h3>Во что я бы инвестировал в первую очередь<\/h3>\n<p>Каждая среда уникальна, но вот как бы я расставил приоритеты, основываясь на том, что увидел:<\/p>\n<ol start=\"1\">\n<li><b>Начните с модели данных.<\/b> Чистые таблицы, понятные названия, простые объединения. Если опытный аналитик может посмотреть на вашу схему и понять ее за несколько минут, то и LLM сможет.<\/li>\n<li><b>Затем добавьте целевой контекст.<\/b> Комментарии к колонкам и метаданные, но только там, где действительно существует путаница. Документируйте таблицы типа `debit_card_specializing`, а не `schools`.<\/li>\n<li><b>История запросов идет следом.<\/b> Она становится важнее по мере усложнения предметной области, особенно для обнаружения недокументированных бизнес-правил (вроде “abnormal GOT > 60”). Базы данных BIRD имеют простые правила. Но я работаю над (проектом) `DABstep`, у которого простая модель данных, но очень сложные правила предметной области. Тот вид знаний, который живет в головах людей, а не в названиях колонок. Там история запросов и подобранный контекст будут значить гораздо больше. Но даже тогда чистая модель данных стоит на первом месте.<\/li>\n<\/ol>\n<p>Наконец, не беспокойтесь о формальном семантическом слое. Если ваша модель данных чиста, а контекст целенаправлен, это почти ничего не добавляет для сценариев использования ИИ. На самом деле, кажется, что это даже мешает, так как ИИ отлично пишет SQL, но менее хорош в работе с другими инструментами.<\/p>\n<h3>Начните сейчас<\/h3>\n<p>Планка для «данных, готовых к ИИ», ниже, чем вам говорит индустрия.<\/p>\n<p>Вам не нужен “движок контекста”, семантический слой, годы истории запросов или специализированная платформа метаданных. Вам нужна <b>чистая модель данных и LLM<\/b>. Найдите домен, который готов к этому, и начните там.<\/p>\n<p>Разрыв между «точностью бенчмарка» и «примет ли это человек?» составил 31 pp на тренировочной выборке и 36 pp на тестовой. Это огромный разрыв, и он закрывается в тот момент, когда вы включаете человека или LLM в цикл проверки. Именно так и работает любой продукт ИИ-аналитики.<\/p>\n<p>Если ваша модель данных чиста, начните сегодня. Направьте LLM на вашу схему и задавайте вопросы. Если ваша модель данных не чиста, теперь вы знаете, с чего начать.<\/p>\n<p>***<\/p>\n<h4>Итоги статьи<\/h4>\n<ol start=\"1\">\n<li><b>Проблема:<\/b> Принято считать, что для работы ИИ с базами данных (Text-to-SQL) нужны сложные семантические слои, история запросов и контекст.<\/li>\n<li><b>Эксперимент:<\/b> Автор протестировал работу современных LLM (Claude, Gemini, GPT) на известном наборе данных BIRD.<\/li>\n<li><b>Открытие 1:<\/b> Формальные бенчмарки занижают качество работы ИИ. Они требуют строгого совпадения SQL-запросов, хотя люди принимают ответы с правильными данными, но другим форматированием (лишние колонки, другой порядок сортировки). Истинная (“реалистичная”) точность моделей достигает <b>95%<\/b>, тогда как бенчмарк показывает около 60%.<\/li>\n<li><b>Открытие 2:<\/b> “Готовность данных к ИИ” сводится к понятной структуре базы данных. Чистые таблицы, внятные названия колонок и простые связи работают лучше, чем нагромождение комментариев.<\/li>\n<li><b>Открытие 3:<\/b> Дополнительные комментарии (контекст) нужны только для реально запутанных схем. В простых случаях они даже мешают, создавая шум.<\/li>\n<li><b>Вывод:<\/b> Не тратьте ресурсы на сложные семантические надстройки. Инвестируйте в <b>чистоту модели данных<\/b> (понятные имена таблиц и полей). Хорошая модель данных — это и есть лучший семантический слой для ИИ.<\/li>\n<\/ol>\n",
            "date_published": "2026-03-14T00:19:28+03:00",
            "date_modified": "2026-03-14T00:19:21+03:00",
            "tags": [
                "AI",
                "big data",
                "Data",
                "MCP"
            ],
            "_date_published_rfc2822": "Sat, 14 Mar 2026 00:19:28 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "321",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": []
            }
        }
    ],
    "_e2_version": 4171,
    "_e2_ua_string": "Aegea 11.4 (v4171e)"
}