<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Yuriy Gavrilov: posts tagged MCP</title>
<link>https://gavrilov.info/tags/mcp/</link>
<description>Welcome to my personal place for love, peace and happiness 🤖 Yuiry Gavrilov</description>
<author></author>
<language>en</language>
<generator>Aegea 11.4 (v4171e)</generator>

<itunes:owner>
<itunes:name></itunes:name>
<itunes:email>yvgavrilov@gmail.com</itunes:email>
</itunes:owner>
<itunes:subtitle>Welcome to my personal place for love, peace and happiness 🤖 Yuiry Gavrilov</itunes:subtitle>
<itunes:image href="https://gavrilov.info/pictures/userpic/userpic-square@2x.jpg?1643451008" />
<itunes:explicit>no</itunes:explicit>

<item>
<title>Cline и Continue: два подхода к AI-ассистенту в VS Code</title>
<guid isPermaLink="false">360</guid>
<link>https://gavrilov.info/all/cline-i-continue-dva-podhoda-k-ai-assistentu-v-vs-code/</link>
<pubDate>Sun, 11 Oct 2026 20:16:12 +0300</pubDate>
<author></author>
<comments>https://gavrilov.info/all/cline-i-continue-dva-podhoda-k-ai-assistentu-v-vs-code/</comments>
<description>
&lt;p&gt;За последние два года AI-ассистенты для программирования перестали быть экзотикой и превратились в рабочий инструмент миллионов разработчиков. Однако выбрать подходящий — задача нетривиальная. Cline и Continue — два самых популярных open-source решения для VS Code, и хотя оба ставят перед собой схожую цель, подходы у них принципиально разные.&lt;/p&gt;
&lt;p&gt;Эта статья поможет разобраться, чем они отличаются, как настроить каждый из них и когда какой инструмент стоит использовать.&lt;/p&gt;
&lt;hr /&gt;
&lt;h3&gt;Cline: автономный агент&lt;/h3&gt;
&lt;p&gt;Cline — это автономный кодинг-агент, который живёт прямо в вашей IDE. Вы описываете задачу, а он читает файлы, вносит правки, запускает команды в терминале и повторяет цикл, пока задача не будет выполнена. Это ближайший open-source аналог Claude Code по стилю работы: агент владеет циклом выполнения, человек проверяет diff’ы.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://gavrilov.info/pictures/Snimok-ekrana-2026-10-11-v-20.13.47.png" width="1084" height="916" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;&lt;b&gt;Ключевые особенности:&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Чтение и запись файлов&lt;/b&gt; — навигация по кодовой базе, создание файлов и точечные правки. Каждое изменение показывается в виде diff’а перед применением.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Выполнение команд&lt;/b&gt; — запуск shell-команд, тестов, установка пакетов и мониторинг вывода в реальном времени.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Браузер&lt;/b&gt; — headless-браузер для тестирования веб-приложений, скриншотов и отладки ошибок.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;MCP-серверы&lt;/b&gt; — расширение возможностей через подключение внешних инструментов: баз данных, API, документации.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Любая модель&lt;/b&gt; — Claude, GPT-4, Gemini, DeepSeek, локальные Ollama или любой OpenAI-совместимый endpoint.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Каждое действие требует вашего подтверждения — это zero-trust архитектура, при которой код не покидает вашу машину. Cline распространяется под лицензией Apache 2.0 и недавно преодолел отметку в 5 миллионов установок.&lt;/p&gt;
&lt;hr /&gt;
&lt;h3&gt;Continue: ассистент, который остаётся в потоке&lt;/h3&gt;
&lt;p&gt;Continue — это open-source AI-ассистент, построенный вокруг чата, inline-правок и автодополнения. Здесь человек остаётся за рулём: модель помогает, но не берёт управление на себя.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://gavrilov.info/pictures/image-246.png" width="2176" height="544" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;&lt;b&gt;Ключевые особенности:&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Автодополнение кода&lt;/b&gt; — inline-подсказки прямо в редакторе, работающие на низкой задержке.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Чат и inline-редактирование&lt;/b&gt; — общение с моделью в боковой панели и правки прямо в файле.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Контекстные провайдеры&lt;/b&gt; — `@codebase`, `@file`, `@terminal` для запросов с учётом кода проекта.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Slash-команды&lt;/b&gt; — кастомные команды для типовых задач: ревью кода, генерация тестов, рефакторинг.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Гибкая конфигурация&lt;/b&gt; — всё управляется через единый `config.yaml`.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Continue — это middleware между редактором и LLM: расширение не поставляет собственную модель, а маршрутизирует запросы к тому провайдеру, который вы укажете. Проект поддерживает VS Code, JetBrains и Neovim, а его кодовая база остаётся открытой.&lt;/p&gt;
&lt;hr /&gt;
&lt;h3&gt;Сравнение: что выбрать&lt;/h3&gt;
&lt;table cellpadding="0" cellspacing="0" border="0" class="e2-text-table"&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;Характеристика&lt;/td&gt;
&lt;td style="text-align: center"&gt;Cline&lt;/td&gt;
&lt;td style="text-align: center"&gt;Continue&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;&lt;b&gt;Философия&lt;/b&gt;&lt;/td&gt;
&lt;td style="text-align: center"&gt;Автономный агент — модель владеет циклом&lt;/td&gt;
&lt;td style="text-align: center"&gt;Ассистент — человек владеет циклом&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;&lt;b&gt;Лицензия&lt;/b&gt;&lt;/td&gt;
&lt;td style="text-align: center"&gt;Apache 2.0&lt;/td&gt;
&lt;td style="text-align: center"&gt;Open source&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;&lt;b&gt;Автодополнение&lt;/b&gt;&lt;/td&gt;
&lt;td style="text-align: center"&gt;Нет&lt;/td&gt;
&lt;td style="text-align: center"&gt;Да (inline-подсказки)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;&lt;b&gt;Агентный режим&lt;/b&gt;&lt;/td&gt;
&lt;td style="text-align: center"&gt;Plan/Act с подтверждением каждого шага&lt;/td&gt;
&lt;td style="text-align: center"&gt;Есть, но вторичен&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;&lt;b&gt;MCP&lt;/b&gt;&lt;/td&gt;
&lt;td style="text-align: center"&gt;Полная поддержка&lt;/td&gt;
&lt;td style="text-align: center"&gt;Полная поддержка&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;&lt;b&gt;Конфигурация&lt;/b&gt;&lt;/td&gt;
&lt;td style="text-align: center"&gt;`cline_mcp_settings.json` (JSON)&lt;/td&gt;
&lt;td style="text-align: center"&gt;`config.yaml` (YAML)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;&lt;b&gt;Установок&lt;/b&gt;&lt;/td&gt;
&lt;td style="text-align: center"&gt;5M+&lt;/td&gt;
&lt;td style="text-align: center"&gt;Данные не раскрыты&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;Если коротко: &lt;b&gt;Cline&lt;/b&gt; лучше подходит для крупных механических задач — массовых рефакторингов, скаффолдинга, повторяющихся правок. &lt;b&gt;Continue&lt;/b&gt; — для быстрой помощи в потоке, когда вы не хотите, чтобы модель «убегала вперёд».&lt;/p&gt;
&lt;p&gt;Большинство разработчиков используют оба инструмента, переключаясь в зависимости от задачи.&lt;/p&gt;
&lt;p&gt;Стоит упомянуть и о третьем игроке — &lt;b&gt;Hermes&lt;/b&gt;. Это open-source AI-агент, который работает по протоколу Agent Client Protocol (ACP) и может быть подключён к VS Code, Zed или JetBrains через отдельное расширение ACP Client. Hermes CLI запускается как локальный подпроцесс, без облачного прокси, а расширение для VS Code стримит чат, выполняет инструменты и управляет сессиями. Главное отличие Hermes от Cline и Continue в том, что это не самостоятельное расширение с собственным интерфейсом, а агентный рантайм, который подключается к IDE через стандартизированный протокол. Подробнее о нём — в отдельной статье.&lt;/p&gt;
&lt;hr /&gt;
&lt;h3&gt;Установка и базовая настройка&lt;/h3&gt;
&lt;h4&gt;Cline&lt;/h4&gt;
&lt;p&gt;&lt;b&gt;Установка:&lt;/b&gt;&lt;/p&gt;
&lt;ol start="1"&gt;
&lt;li&gt;Откройте VS Code и перейдите в Extensions (`Ctrl/Cmd + Shift + X`).&lt;/li&gt;
&lt;li&gt;Введите в поиске &lt;b&gt;Cline&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;Установите расширение от `saoudrizwan` (ID: `saoudrizwan.claude-dev`).&lt;/li&gt;
&lt;li&gt;После установки нажмите на иконку Cline в Activity Bar. Если её не видно, перезапустите VS Code полностью.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;b&gt;Подключение провайдера:&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Откройте настройки Cline и выберите провайдера. Можно использовать Cline Provider (pay-as-you-go), ClinePass (подписка) или подключить собственный API-ключ от Anthropic, OpenAI, OpenRouter или любого OpenAI-совместимого сервиса.&lt;/p&gt;
&lt;h4&gt;Continue&lt;/h4&gt;
&lt;p&gt;&lt;b&gt;Установка:&lt;/b&gt;&lt;/p&gt;
&lt;ol start="1"&gt;
&lt;li&gt;Откройте Extensions (`Ctrl/Cmd + Shift + X`).&lt;/li&gt;
&lt;li&gt;Найдите &lt;b&gt;Continue&lt;/b&gt; и установите расширение от `Continue.dev`.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;b&gt;Настройка:&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;При первом запуске Continue предложит мастер настройки. Конфигурация хранится в файле `~/.continue/config.yaml` (macOS/Linux) или `%USERPROFILE%\.continue\config.yaml` (Windows). Открыть его можно из панели Continue: нажмите на иконку шестерёнки рядом с выпадающим списком моделей.&lt;/p&gt;
&lt;p&gt;Если у вас остался старый `config.json`, его можно мигрировать в YAML — при наличии `config.yaml` расширение загрузит именно его.&lt;/p&gt;
&lt;hr /&gt;
&lt;h3&gt;Настройка кастомной модели в Continue&lt;/h3&gt;
&lt;p&gt;Одно из главных преимуществ Continue — возможность подключить любую модель через OpenAI-совместимый API. Вот пример конфигурации для подключения модели через прокси-сервис:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;name: My Config
version: 1.0.0
schema: v1

models:
  - name: GLM 5.3 Flash via Proxy
    provider: openai
    model: z-ai/glm-5.3-flash
    apiBase: https://your-proxy-host.example.com/v1
    apiKey: ${{ secrets.PROXY_API_KEY }}
    roles:
      - chat
      - edit
      - apply
    defaultCompletionOptions:
      temperature: 0.7
      maxTokens: 4096
    capabilities:
      - tool_use&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;b&gt;Ключевые моменты:&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;`apiBase` должен заканчиваться на `/v1` — Continue автоматически добавит `/chat/completions`.&lt;/li&gt;
&lt;li&gt;`apiKey: ${{ secrets.PROXY_API_KEY }}` — ссылка на переменную из файла `.env`, который должен лежать рядом с `config.yaml`. Никогда не вписывайте ключ напрямую в конфиг.&lt;/li&gt;
&lt;li&gt;`capabilities: [tool_use]` — явно включает поддержку вызова инструментов, необходимую для работы Agent mode. Без этого кнопки Plan и Act будут неактивны.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3&gt;Настройка MCP-серверов&lt;/h3&gt;
&lt;p&gt;MCP (Model Context Protocol) — это стандарт, позволяющий подключать к агенту внешние инструменты: базы данных, API, системы управления задачами. Оба инструмента поддерживают MCP, но конфигурируются по-разному.&lt;/p&gt;
&lt;h4&gt;Cline&lt;/h4&gt;
&lt;p&gt;Файл конфигурации: `cline_mcp_settings.json`. Открыть его можно через панель Cline: нажмите на иконку &lt;b&gt;MCP Servers&lt;/b&gt;, перейдите на вкладку &lt;b&gt;Configure&lt;/b&gt; и нажмите &lt;b&gt;Configure MCP Servers&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;Пример подключения локального MCP-сервера:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;{
  &amp;quot;mcpServers&amp;quot;: {
    &amp;quot;trino&amp;quot;: {
      &amp;quot;command&amp;quot;: &amp;quot;mcp-trino&amp;quot;,
      &amp;quot;args&amp;quot;: [],
      &amp;quot;env&amp;quot;: {
        &amp;quot;TRINO_HOST&amp;quot;: &amp;quot;192.168.3.81&amp;quot;,
        &amp;quot;TRINO_PORT&amp;quot;: &amp;quot;8080&amp;quot;,
        &amp;quot;TRINO_USER&amp;quot;: &amp;quot;trino&amp;quot;,
        &amp;quot;TRINO_PASSWORD&amp;quot;: &amp;quot;&amp;quot;,
        &amp;quot;TRINO_CATALOG&amp;quot;: &amp;quot;tpcds&amp;quot;,
        &amp;quot;TRINO_SCHEMA&amp;quot;: &amp;quot;sf10&amp;quot;,
        &amp;quot;TRINO_SSL&amp;quot;: &amp;quot;false&amp;quot;,
        &amp;quot;TRINO_SCHEME&amp;quot;: &amp;quot;http&amp;quot;
      },
      &amp;quot;disabled&amp;quot;: false,
      &amp;quot;alwaysAllow&amp;quot;: []
    }
  }
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Для удалённых серверов используйте `“type”: “streamableHttp”` и поле `“url”`.&lt;/p&gt;
&lt;h4&gt;Continue&lt;/h4&gt;
&lt;p&gt;MCP-серверы добавляются в тот же `config.yaml`, где настраиваются модели, либо в отдельные файлы в папке `.continue/mcpServers/`.&lt;/p&gt;
&lt;p&gt;Пример:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;mcpServers:
  - name: Trino
    command: mcp-trino
    env:
      TRINO_HOST: &amp;quot;192.168.3.81&amp;quot;
      TRINO_PORT: &amp;quot;8080&amp;quot;
      TRINO_USER: &amp;quot;trino&amp;quot;
      TRINO_PASSWORD: &amp;quot;&amp;quot;
      TRINO_CATALOG: &amp;quot;tpcds&amp;quot;
      TRINO_SCHEMA: &amp;quot;sf10&amp;quot;
      TRINO_SSL: &amp;quot;false&amp;quot;
      TRINO_SCHEME: &amp;quot;http&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;После сохранения конфигурации &lt;b&gt;полностью перезапустите VS Code&lt;/b&gt; — оба расширения подхватывают MCP-серверы только при старте.&lt;/p&gt;
&lt;hr /&gt;
&lt;h3&gt;MCP-серверы для Trino: что выбрать&lt;/h3&gt;
&lt;p&gt;Trino — это распределённый SQL-движок для аналитических запросов к большим данным. Подключение MCP-сервера для Trino даёт AI-агенту возможность исследовать каталоги, выполнять запросы и анализировать планы выполнения прямо из чата. Для Trino существует несколько MCP-серверов, которые можно разделить на две категории: легковесные Python-серверы и высокопроизводительные Go-серверы.&lt;/p&gt;
&lt;h4&gt;Python-серверы (быстрый старт)&lt;/h4&gt;
&lt;p&gt;&lt;b&gt;`trino-mcp`&lt;/b&gt; — самый функциональный и простой в настройке Python-сервер, который хорошо подходит для большинства задач. Поддерживает OAuth2 и Basic Auth, по умолчанию разрешает только `SELECT`-запросы (для записи нужно явно установить `ALLOW_WRITE_QUERIES=true`), автоматически добавляет комментарии в запросы с именем пользователя для аудита, а также умеет экспортировать результаты в JSON или CSV.&lt;/p&gt;
&lt;p&gt;Установка через `uvx`:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;uvx trino-mcp&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Пример конфигурации для Continue:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;mcpServers:
  - name: Trino
    command: uvx
    args:
      - &amp;quot;trino-mcp&amp;quot;
    env:
      TRINO_HOST: &amp;quot;your-trino-host&amp;quot;
      TRINO_PORT: &amp;quot;8080&amp;quot;
      TRINO_USER: &amp;quot;your-user&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;b&gt;`alaturqua/mcp-trino-python`&lt;/b&gt; — сервер, ориентированный на работу с Trino и Iceberg. Предоставляет расширенные возможности для исследования данных и обслуживания таблиц Iceberg, поддерживает три режима транспорта (`stdio`, `streamable-http`, `sse`) и имеет готовый `Dockerfile` для быстрого развёртывания.&lt;/p&gt;
&lt;h4&gt;Go-серверы (для продакшена)&lt;/h4&gt;
&lt;p&gt;&lt;b&gt;`txn2/mcp-trino`&lt;/b&gt; — это, пожалуй, самый мощный и функциональный MCP-сервер для Trino. Он даёт AI-ассистентам безопасный, структурированный доступ к Trino и любым Trino-совместимым движкам. По умолчанию работает в режиме только для чтения, поддерживает ограничения на количество строк и таймауты запросов, а также имеет опциональный семантический слой для отображения бизнес-описаний, владельцев и маркеров чувствительности данных из DataHub или других каталогов метаданных.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ключевые особенности:&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Выполнение SQL-запросов&lt;/b&gt; — `SELECT`, `SHOW`, `DESCRIBE` с настраиваемыми лимитами и таймаутами.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Анализ планов выполнения&lt;/b&gt; — логические, распределённые и I/O-планы запросов.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Просмотр схем&lt;/b&gt; — навигация по каталогам, схемам и таблицам.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Описание таблиц&lt;/b&gt; — определения колонок с опциональными примерами данных.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Мультикластерность&lt;/b&gt; — запросы к нескольким серверам Trino из одной установки через `TRINO_ADDITIONAL_CONNECTIONS`.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Библиотека для Go&lt;/b&gt; — можно импортировать как Go-пакет и собрать собственный MCP-сервер с кастомной аутентификацией и аудитом.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Установка через Homebrew:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;brew install txn2/tap/mcp-trino&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Пример конфигурации для Cline:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;{
  &amp;quot;mcpServers&amp;quot;: {
    &amp;quot;trino&amp;quot;: {
      &amp;quot;command&amp;quot;: &amp;quot;mcp-trino&amp;quot;,
      &amp;quot;args&amp;quot;: [],
      &amp;quot;env&amp;quot;: {
        &amp;quot;TRINO_HOST&amp;quot;: &amp;quot;your-trino-host&amp;quot;,
        &amp;quot;TRINO_PORT&amp;quot;: &amp;quot;8080&amp;quot;,
        &amp;quot;TRINO_USER&amp;quot;: &amp;quot;trino&amp;quot;,
        &amp;quot;TRINO_PASSWORD&amp;quot;: &amp;quot;&amp;quot;,
        &amp;quot;TRINO_CATALOG&amp;quot;: &amp;quot;hive&amp;quot;,
        &amp;quot;TRINO_SCHEMA&amp;quot;: &amp;quot;default&amp;quot;,
        &amp;quot;TRINO_SSL&amp;quot;: &amp;quot;false&amp;quot;,
        &amp;quot;TRINO_SCHEME&amp;quot;: &amp;quot;http&amp;quot;
      },
      &amp;quot;disabled&amp;quot;: false,
      &amp;quot;alwaysAllow&amp;quot;: []
    }
  }
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Пример конфигурации для Continue:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;mcpServers:
  - name: Trino
    command: mcp-trino
    env:
      TRINO_HOST: &amp;quot;your-trino-host&amp;quot;
      TRINO_PORT: &amp;quot;8080&amp;quot;
      TRINO_USER: &amp;quot;trino&amp;quot;
      TRINO_PASSWORD: &amp;quot;&amp;quot;
      TRINO_CATALOG: &amp;quot;hive&amp;quot;
      TRINO_SCHEMA: &amp;quot;default&amp;quot;
      TRINO_SSL: &amp;quot;false&amp;quot;
      TRINO_SCHEME: &amp;quot;http&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;b&gt;Важные параметры `mcp-trino`:&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Подключение&lt;/b&gt;: обязательные переменные — `TRINO_HOST`, `TRINO_USER`. Порт по умолчанию: `8080` для HTTP или `443` для HTTPS.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Режим только для чтения&lt;/b&gt;: включён по умолчанию. Для записи установите `TRINO_ALLOW_WRITE=true`.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;SSL&lt;/b&gt;: если Trino работает по HTTP, обязательно установите `TRINO_SSL: “false”` и `TRINO_SCHEME: “http”`, иначе сервер попытается использовать HTTPS и выдаст ошибку `invalid URL escape “%2F”`.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Что выбрать?&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Для быстрого старта&lt;/b&gt;: начните с `trino-mcp` (Python). Он легко устанавливается через `uvx` и имеет безопасные настройки по умолчанию.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Для работы с Iceberg&lt;/b&gt;: обратите внимание на `alaturqua/mcp-trino-python`, если ваша основная задача — исследование и обслуживание таблиц Iceberg.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Для продакшена&lt;/b&gt;: выбирайте `txn2/mcp-trino` (Go), если нужна высокая производительность, поддержка нескольких кластеров и возможность встраивания в собственные приложения.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h3&gt;Типичные проблемы и их решения&lt;/h3&gt;
&lt;p&gt;&lt;b&gt;Модель не появляется в Continue после добавления в конфиг.&lt;/b&gt;&lt;br /&gt;
Проверьте, что файл `.env` существует и лежит в той же папке, что `config.yaml`. Имя переменной в `.env` должно точно совпадать с именем в `${{ secrets.ИМЯ }}`.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Кнопки Plan и Act неактивны.&lt;/b&gt;&lt;br /&gt;
Добавьте `capabilities: [tool_use]` в блок модели. Без этой способности Continue блокирует агентные режимы.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ошибка `401 status code (no body)`.&lt;/b&gt;&lt;br /&gt;
Ключ API не распознан. Проверьте, что `apiBase` заканчивается на `/v1`, ключ действителен и имеет положительный баланс.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;MCP-сервер не подключается с ошибкой `invalid URL escape “%2F”`.&lt;/b&gt;&lt;br /&gt;
Сервер пытается использовать HTTPS, хотя Trino работает по HTTP. Добавьте `TRINO_SSL: “false”` и `TRINO_SCHEME: “http”` в переменные окружения MCP-сервера.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Модель зависает после долгих раздумий в Agent mode.&lt;/b&gt;&lt;br /&gt;
Скорее всего, прокси-сервис не передаёт `tool_calls` в потоковом режиме. Проверьте это через `curl` с `“stream”: true` и имитацией вызова инструмента. Если `tool_calls` в потоке нет — попробуйте отключить стриминг через `config.json` или использовать модель с нативной поддержкой function calling.&lt;/p&gt;
&lt;hr /&gt;
&lt;h3&gt;Заключение&lt;/h3&gt;
&lt;p&gt;Cline и Continue решают разные задачи, и это их главное достоинство. Cline — это автономный агент, которому можно делегировать крупные задачи и вернуться к готовому результату. Continue — это ассистент, который помогает здесь и сейчас, не забирая контроль.&lt;/p&gt;
&lt;p&gt;Оба инструмента бесплатны, оба поддерживают MCP и работают с любой моделью. С помощью MCP-серверов, таких как `txn2/mcp-trino`, вы можете подключить к агенту Trino и работать с данными прямо из чата — без переключения между окнами и ручного написания запросов.&lt;/p&gt;
&lt;p&gt;Начните с того инструмента, который ближе к вашему стилю работы, — а когда освоитесь, попробуйте второй. Большинство разработчиков в итоге используют оба.&lt;/p&gt;
</description>
</item>

<item>
<title>Действительно ли данные готовы к ИИ</title>
<guid isPermaLink="false">321</guid>
<link>https://gavrilov.info/all/deystvitelno-li-dannye-gotovy-k-ii/</link>
<pubDate>Sat, 14 Mar 2026 00:19:28 +0300</pubDate>
<author></author>
<comments>https://gavrilov.info/all/deystvitelno-li-dannye-gotovy-k-ii/</comments>
<description>
&lt;p&gt;&lt;b&gt;Автор: Джейкоб Мэтсон&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://motherduck.com/blog/bird-bench-and-data-models"&gt;https://motherduck.com/blog/bird-bench-and-data-models&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Несколько месяцев назад я писал о том, почему нам может &lt;a href="https://motherduck.com/blog/who-needs-a-semantic-layer-anyway"&gt;не понадобиться семантический слой&lt;/a&gt;. Аргумент заключался в том, что ИИ может обнаруживать бизнес-логику из истории запросов, вместо того чтобы заставлять людей заранее определять каждую метрику. Я верил в это. Но у меня не было данных, чтобы это доказать.&lt;/p&gt;
&lt;p&gt;Теперь они у меня есть.&lt;/p&gt;
&lt;p&gt;Все началось с вопроса одного из наших инвесторов: *“Как различные модели справляются с BIRD при использовании MotherDuck MCP?”* Поэтому я провел эксперимент. Три передовые LLM модели (`Claude Opus 4.5`, `GPT-5.2` и `Gemini 3 Flash`), каждая из которых подключена к базе данных через сервер `MotherDuck MCP`, были запущены на наборе данных `BIRD Mini-Dev`.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;b&gt;Пояснение:&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;MCP (Model Context Protocol):** Стандарт, позволяющий ИИ-моделям безопасно и стандартизировано подключаться к внешним источникам данных и инструментам.&lt;/li&gt;
&lt;li&gt;BIRD (BIg Bench for Large-scale Database Grounded Text-to-SQL):** Популярный и сложный бенчмарк (набор тестов) для оценки того, насколько хорошо нейросети умеют переводить естественный язык в SQL-запросы.&lt;/li&gt;
&lt;li&gt;Mini-Dev:** Это официальная выборка из 500 вопросов для разработки из бенчмарка BIRD. Она охватывает 11 баз данных в сферах финансов, спорта, образования и здравоохранения.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;Модели данных здесь простые. В среднем 7 таблиц на базу данных. Ни в одной нет больше 13 таблиц. Объединения (joins) в основном «один-ко-многим», максимальная глубина — два или три перехода, ноль отношений «многие-ко-многим». Это тот тип схемы, который можно понять за пять минут, прочитав `DDL`.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;b&gt;Пояснение:&lt;/b&gt; `DDL` (Data Definition Language) — это часть SQL, используемая для описания структуры базы данных (создание таблиц, колонок, связей).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Результат? &lt;b&gt;95% точности.&lt;/b&gt; Никакого семантического слоя. Никакой истории запросов. Никакого специального контекста. Только схема базы данных.&lt;/p&gt;
&lt;p&gt;Но это число требует «звездочки» (примечания), и, честно говоря, эта звездочка — самая интересная часть.&lt;/p&gt;
&lt;h3&gt;Что на самом деле означают 95%&lt;/h3&gt;
&lt;p&gt;Вот что я измерял на самом деле.&lt;/p&gt;
&lt;p&gt;Бенчмарк BIRD оценивает точность, используя &lt;b&gt;Execution Accuracy (EX)&lt;/b&gt;: запускается предсказанный SQL и «золотой» (эталонный) SQL, сравниваются наборы результатов, и ставится бинарная оценка «сдал/не сдал». При этих строгих правилах текущий уровень развития технологий (SOTA) составляет около 76. Мои модели набрали 64 на тренировочной выборке и 58 на тестовой.&lt;/p&gt;
&lt;p&gt;Звучит плохо. Но у строгой оценки BIRD есть хорошо задокументированная проблема. В статье 2025 года, представляющей метрику `FLEX`, было обнаружено, что точность выполнения (execution accuracy) BIRD совпадает с оценками экспертов-людей только в 62% случаев. Почти 4 из 10 суждений ошибочны, в основном это ложноотрицательные результаты, когда бенчмарк отвергает ответы, которые люди бы приняли.&lt;/p&gt;
&lt;p&gt;Эти 62 бросились мне в глаза, потому что они почти точно совпадают с моей смешанной точностью при строгой оценке в 60.5 (64 обучение / 58 тест). То же наблюдение, но с другой стороны. Метрика `FLEX` пришла к этому с помощью проверяющих людей. Я пришел к этому, ослабив условия тестирования.&lt;/p&gt;
&lt;p&gt;Подумайте, что это значит для таблицы лидеров. Если бенчмарк согласен с людьми только в 62 случаев, то чтобы набрать выше 62 по строгим правилам, вы должны начать воспроизводить ошибки бенчмарка. Вы перестаете учиться писать правильный SQL. Вы начинаете учиться соответствовать специфической, иногда ошибочной интерпретации каждого вопроса в BIRD. Системы с рейтингом 76 закрепили эти ошибки суждения в своем обучении. Они получают более высокие баллы, становясь *хуже* в выполнении реальной задачи.&lt;/p&gt;
&lt;p&gt;Поэтому я построил более реалистичную оценку. Я разделил 500 вопросов на тренировочный набор (151 вопрос) и тестовый набор (349 вопросов).&lt;/p&gt;
&lt;p&gt;Я использовал &lt;b&gt;тренировочный набор (train)&lt;/b&gt; для калибровки оценки: вручную пересматривал ошибки, создавал исправленные «платиновые» ответы там, где «золотой» SQL BIRD был ошибочным, и настраивал правила частичного совпадения. &lt;b&gt;Тестовый набор (test)&lt;/b&gt; был контрольным.&lt;/p&gt;
&lt;p&gt;Вот как выглядит точность, если смягчать критерии оценки уровень за уровнем:&lt;/p&gt;
&lt;table cellpadding="0" cellspacing="0" border="0" class="e2-text-table"&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;Уровень оценки (Scoring Tier)&lt;/td&gt;
&lt;td style="text-align: center"&gt;Train&lt;/td&gt;
&lt;td style="text-align: center"&gt;Test&lt;/td&gt;
&lt;td style="text-align: center"&gt;Что добавляется&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;&lt;b&gt;Только совпадение с Gold&lt;/b&gt; (≈ офиц. BIRD)&lt;/td&gt;
&lt;td style="text-align: center"&gt;64.0&lt;/td&gt;
&lt;td style="text-align: center"&gt;58.2&lt;/td&gt;
&lt;td style="text-align: center"&gt;Строгое равенство наборов результатов&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;&lt;b&gt;+ Платиновые ответы&lt;/b&gt;&lt;/td&gt;
&lt;td style="text-align: center"&gt;73.1&lt;/td&gt;
&lt;td style="text-align: center"&gt;58.5&lt;/td&gt;
&lt;td style="text-align: center"&gt;Исправляет известные ошибки в «золотом» SQL BIRD (см. примечание ниже)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;&lt;b&gt;+ Допуск форматирования&lt;/b&gt;&lt;/td&gt;
&lt;td style="text-align: center"&gt;78.8&lt;/td&gt;
&lt;td style="text-align: center"&gt;65.5&lt;/td&gt;
&lt;td style="text-align: center"&gt;Различия в `DISTINCT`, лишние колонки, округление&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;&lt;b&gt;+ Судья LLM&lt;/b&gt;&lt;/td&gt;
&lt;td style="text-align: center"&gt;94.9&lt;/td&gt;
&lt;td style="text-align: center"&gt;94.4&lt;/td&gt;
&lt;td style="text-align: center"&gt;“Принял бы человек этот ответ?”&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;b&gt;Примечание:&lt;/b&gt; «Платиновые» исправления существуют только для тренировочного набора, так как я вручную проверил эти 151 вопрос. Вот почему уровень «Платина» почти не меняется на тесте +0.3 pp против +9.1 pp на тренировке). Но посмотрите на уровень с судьей: 94.9 на тренировке и 94.4 на тесте. Разница всего в половину процентного пункта. Оценка держится на контрольной выборке даже без моих исправлений вручную.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4&gt;Результаты тренировочной выборки (151 вопрос, все 3 модели):&lt;/h4&gt;
&lt;table cellpadding="0" cellspacing="0" border="0" class="e2-text-table"&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;Модель&lt;/td&gt;
&lt;td style="text-align: center"&gt;STRICT (≈ BIRD EX)&lt;/td&gt;
&lt;td style="text-align: center"&gt;REALISTIC&lt;/td&gt;
&lt;td style="text-align: center"&gt;Общая стоимость&lt;/td&gt;
&lt;td style="text-align: center"&gt;Вызовы инструментов (P5 / Median / P95)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;`Gemini 3 Flash`&lt;/td&gt;
&lt;td style="text-align: center"&gt;68.2&lt;/td&gt;
&lt;td style="text-align: center"&gt;94.0&lt;/td&gt;
&lt;td style="text-align: center"&gt;1.80&lt;/td&gt;
&lt;td style="text-align: center"&gt;3 / 6 / 9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;`Claude Opus 4.5`&lt;/td&gt;
&lt;td style="text-align: center"&gt;64.9&lt;/td&gt;
&lt;td style="text-align: center"&gt;95.4&lt;/td&gt;
&lt;td style="text-align: center"&gt;26.37&lt;/td&gt;
&lt;td style="text-align: center"&gt;4 / 6 / 9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;`GPT-5.2`&lt;/td&gt;
&lt;td style="text-align: center"&gt;58.9&lt;/td&gt;
&lt;td style="text-align: center"&gt;95.4&lt;/td&gt;
&lt;td style="text-align: center"&gt;6.87&lt;/td&gt;
&lt;td style="text-align: center"&gt;4 / 7 / 12&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;h4&gt;Результаты тестовой выборки (349 вопросов, 2 модели):&lt;/h4&gt;
&lt;table cellpadding="0" cellspacing="0" border="0" class="e2-text-table"&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;Модель&lt;/td&gt;
&lt;td style="text-align: center"&gt;STRICT (≈ BIRD EX)&lt;/td&gt;
&lt;td style="text-align: center"&gt;REALISTIC&lt;/td&gt;
&lt;td style="text-align: center"&gt;Общая стоимость&lt;/td&gt;
&lt;td style="text-align: center"&gt;Вызовы инструментов (P5 / Median / P95)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;`Gemini 3 Flash`&lt;/td&gt;
&lt;td style="text-align: center"&gt;60.7&lt;/td&gt;
&lt;td style="text-align: center"&gt;94.6&lt;/td&gt;
&lt;td style="text-align: center"&gt;3.96&lt;/td&gt;
&lt;td style="text-align: center"&gt;4 / 6 / 9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;`GPT-5.2`&lt;/td&gt;
&lt;td style="text-align: center"&gt;55.6&lt;/td&gt;
&lt;td style="text-align: center"&gt;94.3&lt;/td&gt;
&lt;td style="text-align: center"&gt;15.32&lt;/td&gt;
&lt;td style="text-align: center"&gt;4 / 7 / 11&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;*Примечание: `Claude Opus` не запускался на тестовом наборе. После того как все три модели сошлись на ~95% на тренировке, тратить еще 60+, чтобы доказать то же самое на 349 вопросах, показалось нецелесообразным.*&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Медианная модель делает 6-7 вызовов инструментов MCP на вопрос при лимите в 10 итераций. Типичный вопрос выглядит так: изучить схему, просмотреть некоторые колонки, набросать запрос, проверить результаты, уточнить, готово. Некоторые модели, такие как `GPT-5.2`, делают несколько вызовов инструментов за итерацию, поэтому его показатель P95, равный 12, превышает лимит итераций.&lt;/p&gt;
&lt;p&gt;Все три модели достигают &lt;b&gt;94-95% при реалистичной оценке&lt;/b&gt;, независимо от того, где они начинают при строгой оценке. На тренировочной выборке разрыв между «лучшим» и «худшим» сокращается с 12.6 процентных пунктов до 1.4. На тесте — с 5.1 до 0.3. Берите любую передовую модель.&lt;/p&gt;
&lt;h3&gt;Бенчмарк иногда ошибается&lt;/h3&gt;
&lt;p&gt;BIRD — хороший бенчмарк. Но в нем есть баги. Только в тренировочном наборе (151 вопрос) я нашел 49 случаев, где «золотой» SQL явно неверен. Я не проверял вручную тестовый набор, поэтому реальное число для всех 500 вопросов, вероятно, выше.&lt;/p&gt;
&lt;p&gt;Вот пример, который мне запомнился. Вопрос просит список школ, чей совокупный балл превышает 1500. «Золотой» SQL проверяет `count` (количество) студентов, набравших более 1500 баллов. Совершенно другой запрос, совершенно другой ответ. Вы читаете вопрос, читаете «правильный» ответ и думаете: подождите, но спрашивали-то не об этом.&lt;/p&gt;
&lt;p&gt;Я создал исправленные «платиновые» ответы для этих случаев. В среднем около 14 из 151 вопроса тренировочной выборки для каждой модели совпали с платиновым ответом вместо золотого, добавив 9.1 процентных пунктов.&lt;/p&gt;
&lt;h3&gt;Людей не волнует форматирование&lt;/h3&gt;
&lt;p&gt;На тренировочной выборке еще +5.7 pp получается за счет принятия результатов, которые верны по существу, но не проходят проверку на строгое равенство:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Лишние колонки (30 случаев):&lt;/b&gt; Модель вернула запрошенные данные плюс дополнительный контекст. Человек сказал бы «спасибо, это полезно». Бенчмарк говорит «провал».&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Несовпадения `DISTINCT` (41 случай):&lt;/b&gt; Модель использовала `SELECT DISTINCT`, когда в золотом ответе этого не было, или наоборот. Уникальные значения совпадают идеально. Человек бы даже не заметил.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Различия в округлении (3 случая):&lt;/b&gt; Золотой ответ 24.67, ответ модели 24.6667. То же число, разная точность.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ни один из этих ответов не является неверным. Это различия в форматировании, которые важны только для функции сравнения строк.&lt;/p&gt;
&lt;h3&gt;Человек (LLM)-в-петле (The LLM-in-the-Loop)&lt;/h3&gt;
&lt;p&gt;Оставшийся разрыв (16 pp на тренировке, 29 pp на тесте) закрывается &lt;b&gt;судьей LLM&lt;/b&gt;. Я использовал `Gemini 3 Flash` для проверки каждого «проваленного» ответа с вопросом: *действительно ли этот SQL отвечает на вопрос?*&lt;/p&gt;
&lt;p&gt;На тестовой выборке судья выполняет больше тяжелой работы, потому что там нет «платиновых» исправлений для предварительного отлова багов бенчмарка. Что именно он спасал?&lt;/p&gt;
&lt;table cellpadding="0" cellspacing="0" border="0" class="e2-text-table"&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;Причина&lt;/td&gt;
&lt;td style="text-align: center"&gt;Кол-во&lt;/td&gt;
&lt;td style="text-align: center"&gt;Что произошло&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;&lt;b&gt;Больше отфильтровано&lt;/b&gt; (Missing rows)&lt;/td&gt;
&lt;td style="text-align: center"&gt;57&lt;/td&gt;
&lt;td style="text-align: center"&gt;Модель отфильтровала строже, чем золотой стандарт, но это обоснованно.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;&lt;b&gt;Лишние строки&lt;/b&gt; (Extra rows)&lt;/td&gt;
&lt;td style="text-align: center"&gt;33&lt;/td&gt;
&lt;td style="text-align: center"&gt;Модель интерпретировала вопрос более широко.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;&lt;b&gt;Близкие значения&lt;/b&gt; (Values close)&lt;/td&gt;
&lt;td style="text-align: center"&gt;19&lt;/td&gt;
&lt;td style="text-align: center"&gt;Числовые результаты в пределах допуска.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;&lt;b&gt;Пустой результат&lt;/b&gt;&lt;/td&gt;
&lt;td style="text-align: center"&gt;14&lt;/td&gt;
&lt;td style="text-align: center"&gt;Модель ничего не вернула, но логика была верной (данных нет).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;&lt;b&gt;Пропущенные колонки&lt;/b&gt;&lt;/td&gt;
&lt;td style="text-align: center"&gt;11&lt;/td&gt;
&lt;td style="text-align: center"&gt;Возвращено меньше колонок, но ответ на вопрос дан.&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;Это оценочные суждения. Должен ли запрос «перечислите все школы в районе» включать чартерные школы? Разумные люди могут не согласиться. Строгий бенчмарк выбирает одну интерпретацию и наказывает за все остальные. Судья просто спрашивает, можно ли обосновать интерпретацию модели.&lt;/p&gt;
&lt;p&gt;Если вы создаете ИИ-аналитику, это важно. Никто не выпускает продукт text-to-SQL, где пользователь видит сырые результаты без этапа проверки. Всегда есть человек или LLM, проверяющий выходные данные. Эти 94-95% отражают то, как эти продукты работают на самом деле. 58-64% отражают то, как работают бенчмарки.&lt;/p&gt;
&lt;h3&gt;А как насчет контекста?&lt;/h3&gt;
&lt;p&gt;Вы могли бы ожидать, что дополнительный контекст поможет. Комментарии к колонкам, описания, подсказки о значении данных. Это интуиция, лежащая в основе семантических слоев и механизмов контекста.&lt;/p&gt;
&lt;p&gt;Я протестировал это. Те же 500 вопросов, все модели, с комментариями к колонкам каждой таблицы и без них.&lt;/p&gt;
&lt;table cellpadding="0" cellspacing="0" border="0" class="e2-text-table"&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;Схема&lt;/td&gt;
&lt;td style="text-align: center"&gt;Train&lt;/td&gt;
&lt;td style="text-align: center"&gt;Test&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;&lt;b&gt;Без комментариев&lt;/b&gt;&lt;/td&gt;
&lt;td style="text-align: center"&gt;94.9&lt;/td&gt;
&lt;td style="text-align: center"&gt;94.4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;&lt;b&gt;С комментариями&lt;/b&gt;&lt;/td&gt;
&lt;td style="text-align: center"&gt;96.0&lt;/td&gt;
&lt;td style="text-align: center"&gt;94.6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;&lt;b&gt;Дельта&lt;/b&gt;&lt;/td&gt;
&lt;td style="text-align: center"&gt;1.1 pp&lt;/td&gt;
&lt;td style="text-align: center"&gt;0.2 pp&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;Один процентный пункт на тренировке, почти ничего на тесте. В большинстве вопросов правильность не изменилась.&lt;/p&gt;
&lt;p&gt;Если разбить по базам данных, становится интересно. Чем сложнее схема, тем больше помогают комментарии (усредненно по train и test):&lt;/p&gt;
&lt;table cellpadding="0" cellspacing="0" border="0" class="e2-text-table"&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;База данных&lt;/td&gt;
&lt;td style="text-align: center"&gt;Базовая точность&lt;/td&gt;
&lt;td style="text-align: center"&gt;Эффект комментариев&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;`debit_card_specializing`&lt;/td&gt;
&lt;td style="text-align: center"&gt;85.5 (самая сложная)&lt;/td&gt;
&lt;td style="text-align: center"&gt;8.7 pp&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;`european_football_2`&lt;/td&gt;
&lt;td style="text-align: center"&gt;93.2&lt;/td&gt;
&lt;td style="text-align: center"&gt;3.4 pp&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;`california_schools`&lt;/td&gt;
&lt;td style="text-align: center"&gt;95.7 (самая легкая)&lt;/td&gt;
&lt;td style="text-align: center"&gt;2.9 pp&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;Комментарии помогают, когда схема действительно запутанная. Таблица `debit_card_specializing` (попробуйте угадать, как выглядит эта схема) получила самый большой прирост. Но схемы с интуитивными названиями и очевидными связями? Там комментарии сделали только хуже. У моделей уже сформировалась правильная ментальная модель, а комментарии внесли шум.&lt;/p&gt;
&lt;p&gt;Каждый разработчик знает это о комментариях в коде. Полезны при реальной неоднозначности. Вредны, когда констатируют очевидное. `// увеличить i на 1` еще никому не помогло.&lt;/p&gt;
&lt;h3&gt;Почему простые модели данных работают&lt;/h3&gt;
&lt;p&gt;Базы данных BIRD — это не корпоративные хранилища данных. Они простые:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;7 таблиц в среднем.&lt;/li&gt;
&lt;li&gt;9 внешних ключей в среднем, в основном «один-ко-многим».&lt;/li&gt;
&lt;li&gt;Ноль связей «многие-ко-многим».&lt;/li&gt;
&lt;li&gt;Глубина join макс. 2-3 перехода, нет глубоких иерархий.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;LLM читают эти схемы так же, как опытный аналитик читает DDL. Они видят таблицу `schools` с колонками `school_name`, `district` и `enrollment`, и они знают, что делать. Внешний ключ от `schools` к `scores`? Они знают, как их соединить (join). Никому не нужен семантический слой, чтобы объяснить, что “enrollment” означает «количество студентов».&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Хорошее моделирование данных — это и есть семантический слой.&lt;/b&gt; Когда ваши таблицы названы хорошо, а объединения прямолинейны, у LLM есть всё необходимое.&lt;/p&gt;
&lt;h3&gt;Во что я бы инвестировал в первую очередь&lt;/h3&gt;
&lt;p&gt;Каждая среда уникальна, но вот как бы я расставил приоритеты, основываясь на том, что увидел:&lt;/p&gt;
&lt;ol start="1"&gt;
&lt;li&gt;&lt;b&gt;Начните с модели данных.&lt;/b&gt; Чистые таблицы, понятные названия, простые объединения. Если опытный аналитик может посмотреть на вашу схему и понять ее за несколько минут, то и LLM сможет.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Затем добавьте целевой контекст.&lt;/b&gt; Комментарии к колонкам и метаданные, но только там, где действительно существует путаница. Документируйте таблицы типа `debit_card_specializing`, а не `schools`.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;История запросов идет следом.&lt;/b&gt; Она становится важнее по мере усложнения предметной области, особенно для обнаружения недокументированных бизнес-правил (вроде “abnormal GOT &gt; 60”). Базы данных BIRD имеют простые правила. Но я работаю над (проектом) `DABstep`, у которого простая модель данных, но очень сложные правила предметной области. Тот вид знаний, который живет в головах людей, а не в названиях колонок. Там история запросов и подобранный контекст будут значить гораздо больше. Но даже тогда чистая модель данных стоит на первом месте.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Наконец, не беспокойтесь о формальном семантическом слое. Если ваша модель данных чиста, а контекст целенаправлен, это почти ничего не добавляет для сценариев использования ИИ. На самом деле, кажется, что это даже мешает, так как ИИ отлично пишет SQL, но менее хорош в работе с другими инструментами.&lt;/p&gt;
&lt;h3&gt;Начните сейчас&lt;/h3&gt;
&lt;p&gt;Планка для «данных, готовых к ИИ», ниже, чем вам говорит индустрия.&lt;/p&gt;
&lt;p&gt;Вам не нужен “движок контекста”, семантический слой, годы истории запросов или специализированная платформа метаданных. Вам нужна &lt;b&gt;чистая модель данных и LLM&lt;/b&gt;. Найдите домен, который готов к этому, и начните там.&lt;/p&gt;
&lt;p&gt;Разрыв между «точностью бенчмарка» и «примет ли это человек?» составил 31 pp на тренировочной выборке и 36 pp на тестовой. Это огромный разрыв, и он закрывается в тот момент, когда вы включаете человека или LLM в цикл проверки. Именно так и работает любой продукт ИИ-аналитики.&lt;/p&gt;
&lt;p&gt;Если ваша модель данных чиста, начните сегодня. Направьте LLM на вашу схему и задавайте вопросы. Если ваша модель данных не чиста, теперь вы знаете, с чего начать.&lt;/p&gt;
&lt;p&gt;***&lt;/p&gt;
&lt;h4&gt;Итоги статьи&lt;/h4&gt;
&lt;ol start="1"&gt;
&lt;li&gt;&lt;b&gt;Проблема:&lt;/b&gt; Принято считать, что для работы ИИ с базами данных (Text-to-SQL) нужны сложные семантические слои, история запросов и контекст.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Эксперимент:&lt;/b&gt; Автор протестировал работу современных LLM (Claude, Gemini, GPT) на известном наборе данных BIRD.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Открытие 1:&lt;/b&gt; Формальные бенчмарки занижают качество работы ИИ. Они требуют строгого совпадения SQL-запросов, хотя люди принимают ответы с правильными данными, но другим форматированием (лишние колонки, другой порядок сортировки). Истинная (“реалистичная”) точность моделей достигает &lt;b&gt;95%&lt;/b&gt;, тогда как бенчмарк показывает около 60%.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Открытие 2:&lt;/b&gt; “Готовность данных к ИИ” сводится к понятной структуре базы данных. Чистые таблицы, внятные названия колонок и простые связи работают лучше, чем нагромождение комментариев.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Открытие 3:&lt;/b&gt; Дополнительные комментарии (контекст) нужны только для реально запутанных схем. В простых случаях они даже мешают, создавая шум.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Вывод:&lt;/b&gt; Не тратьте ресурсы на сложные семантические надстройки. Инвестируйте в &lt;b&gt;чистоту модели данных&lt;/b&gt; (понятные имена таблиц и полей). Хорошая модель данных — это и есть лучший семантический слой для ИИ.&lt;/li&gt;
&lt;/ol&gt;
</description>
</item>


</channel>
</rss>