Обновить
8K+
8
Булашев Дмитрий@d_bulashev

PostgreSQL DBA, технический менеджер

29,1
Рейтинг
6
Подписчики
Отправить сообщение

Спасибо за развёрнутый ответ, разграничение по существу правильное, но по одному пункту, кажется, произошло недопонимание того, как устроен наш MCP-коннектор. Вы описываете harness, который проверяет исследовательские SQL-запросы модели, то есть в вашей архитектуре модель эти запросы пишет, и безопасность упирается в полноту валидатора. Задача честно сложная, и то, что вы её решаете, вызывает уважение. У нас подход другой: модель не пишет SQL вообще. Все инструменты это фиксированные доменные операции поверх предопределённых SQL запросов. Модель выбирает инструмент и параметры, но не текст запроса. DROP DATABASE на проде невозможен не потому, что его отловил фильтр, а потому что пути выполнения произвольного SQL в системе просто нет.

Дальше идут ровно те детерминированные guardrails, о которых вы говорите, и все они на стороне сервера, а не в промпте: все инструменты read-only и ни один write-эндпоинт API в MCP не выставлен. Именно поэтому можно подключать любую модель: ограничения не зависят от того, насколько она умна и насколько склонна галлюцинировать. Худшее, что может сделать галлюцинирующая модель, это вызвать не тот read-only инструмент. А чтобы она не галлюцинировала в интерпретации, пороги и критерии оценки отдаются ей как знание, сгенерированное из движка правил, плюс промпты-плейбуки с критерием интерпретации на каждом шаге.


Тезис "MCP сам по себе это только доступ к инструментам" не про нашу реализацию: guardrails у нас не снаружи модели, а в самой форме интерфейса.

Это просто опция, можете не использовать. В архитектуру заложен дискавери, c возможностью расширения новыми типами.

В демо лабе есть пример без yandex.

Dasha может работать в закрытом контуре.

Спасибо, включил пока для backend.

ошибки нет, в pg_stat_statements queryid bigint, и вычисляется не инкрементом, а хешем от запроса (если упрощённо), вполне может быть отрицательным

demo=# select queryid from pg_stat_statements where queryid < 0 limit 5;
       queryid        
----------------------
 -6178298052798786819
 -1982823150541649421
 -8792697256374604969
 -4366994356735350443
 -5878869533561797711
(5 rows)

Артем, вы проделали огромную работу! Спасибо!

Есть вопрос:
1Ска видимо умеет читать и использовать переменную NCALAYERPORT и обращаться к приложению на правильный порт!

А вы не пробовали «заставить» скрипт Кабинета налогоплательщика https://knp.kgd.gov.kz/ (или других гос.сайтов enbek.kz) обращаться к переменной NCALAYERPORT и соответственно правильному порту ?

Для аналитических баз чаще всего нас интересует AUTOVACUUM, так как данные обычно обрабатываются пакетами, и ручной VACUUM может быть неудобен.

Для аналитических баз чаще всего нас интересует AUTOVACUUM, т.к данные обычно обрабатываются пакетами, и ручной VACUUM может быть неудобен.

Дубль. И я не понял, а как связаны аналитические базы и неудобство или удобство ручного VACUUM?

Здесь VACUUM запустится, если в таблице изменилось более 500 строк или 5% от общего числа.

не так. 500 строк плюс 5% от общего числа (документация)

Информация

В рейтинге
293-й
Откуда
Тюмень, Тюменская обл. и Ханты-Мансийский АО, Россия
Зарегистрирован
Активность

Специализация

Технический директор, Архитектор баз данных
Git
Linux
PostgreSQL
Docker
Базы данных
C++
Kubernetes