惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
博客园_首页
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 叶小钗
A
About on SuperTechFans
量子位
G
Google Developers Blog
云风的 BLOG
云风的 BLOG
T
Threat Research - Cisco Blogs
Spread Privacy
Spread Privacy
Hacker News - Newest:
Hacker News - Newest: "LLM"
N
News and Events Feed by Topic
C
Cybersecurity and Infrastructure Security Agency CISA
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
T
Tenable Blog
V
V2EX
月光博客
月光博客
L
Lohrmann on Cybersecurity
W
WeLiveSecurity
Webroot Blog
Webroot Blog
H
Hacker News: Front Page
酷 壳 – CoolShell
酷 壳 – CoolShell
T
The Exploit Database - CXSecurity.com
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 三生石上(FineUI控件)
T
Troy Hunt's Blog
Google Online Security Blog
Google Online Security Blog
AI
AI
腾讯CDC
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Google DeepMind News
Google DeepMind News
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
V2EX - 技术
V2EX - 技术
Martin Fowler
Martin Fowler
博客园 - Franky
I
Intezer
Project Zero
Project Zero
I
InfoQ
P
Privacy International News Feed
C
Check Point Blog
T
The Blog of Author Tim Ferriss
P
Palo Alto Networks Blog
L
LINUX DO - 最新话题
有赞技术团队
有赞技术团队
Cloudbric
Cloudbric
人人都是产品经理
人人都是产品经理
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
S
SegmentFault 最新的问题
Latest news
Latest news
小众软件
小众软件

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
z.ai GLM 5.1: Как я научил слепую модель видеть
Xronofag · 2026-04-29 · via Все публикации подряд на Хабре

Уровень сложностиСредний

Время на прочтение7 мин

Охват и читатели314

Туториал

Открытая 8B vision-модель, развёрнутая за 20 минут, закрывает 70% разрыва до фронтира – и замыкает цикл тестирования для кодинг-агентов без единого вызова к облачному API.

Проблема: мощный кодер, который работает вслепую

Если у вас есть неограниченный доступ к фронтир моделям (Calude, Codex и т.д.), то эта статья не для вас.

Сегодня доступны отличные недорогие модели для кодинга и архитектуры. Например, GLM-5.1 (реферальная ссылка +10% бонус на пополнение) умеет генерировать, рефакторить, отлаживать код, строить архитектуру – в десятки раз дешевле фронтит моделей или вообще бесплатно при локальном развёртывании.

Но у всех таких моделей часто есть общая слепая зона: они не видят результат своей работы. Кодинг-агент лего может:

  • сгенерировать HTML-страницу

  • запустить Playwright и снять скриншот

  • …и на этом всё. Скриншот лежит на диске, а модель понятия не имеет, что на нём изображено

GLM 5.1 слепая

GLM 5.1 слепая

Без обратной связи невозможно замкнуть цикл «агент написал код → агент посмотрел результат → агент исправил → агент посмотрел убедился, что исправил». Человек должен вмешиваться вручную: «нет, кнопка уехала влево», «таблица обрезана на мобильном». Это убивает автономность и делает vibe-coding полуавтоматическим и утомительным. Вместо того чтобы ставить задачи и принимать результат, творец превращается в младшего QA-тестера.

Решение: MCP-сервер с локальной vision-моделью

Идея простая: создать MCP-сервер (Model Context Protocol), который принимает скриншот и возвращает структурированное описание того, что на нём изображено. Внутри – вызов vision-модели.

Ключевой инсайт: для «зрения» на скриншотах не нужен большой ум. Задача – извлечение: OCR текста, перечисление кнопок, определение layout, детекция обрезки, а значит, для этого скорее всего достаточно компактной открытой модели. Такова была гипотеза и я ее успешно подтвердил.

Стек

Модель: qwen3-vl:8b – взята навскидку по советам Gemini/Grok – открытая, 8 миллиардов параметров, из коробки понимает изображения. Развёртывание через Ollama (для простоты, но для многопоточности и продавлена лучше API от vllm или llama.cpp), буквальноollama pull qwen3-vl:8b и готово! На GPU класса RTX 3090 / 4090 или даже Apple Silicon M-серии с 16+ GB RAM.

MCP-сервер vision-sidecar-mcpпока качалась модель я сгенерировал Grok-ом:  https://github.com/xronocode/vision-sidecar-mcp

  • analyze_image – общий анализ скриншота (нейтральный промпт)

  • analyze_structured – структурированная извлечение в JSON-схему

  • extract_table – специализированная таблица-экстракция

Время развёртывания: ~20 минут от нуля до работающего пайплайна.

Замкнутый цикл

Теперь агент может:

Кодер-модель получает текстовое описание результата и может итерировать без участия человека. Цикл замкнут.

Пример сырого JSON-ответа от vision-sidecar_analyze_image для скриншота вебсайта :

{
  "image": {
    "path": "/Users/myevdokimov/prj/kompakt/full-page.png",
    "size_bytes": 106900,
    "size_mb": 0.1,
    "mime": "image/png",
    "modified": "2026-04-11T07:24:25.613414+00:00"
  },
  "model": "qwen3-vl:8b",
  "preprocess": {
    "original_size": [1200, 3815],
    "upscaled": false
  },
  "viewport_hint": null,
  "analysis": "- Top bar:\n  - Left: \"pdf-kompakt\" (light blue text)\n  - Right: \"EN\" (dropdown indicator), \"Support the project\" (orange button with shield icon), and a question mark icon (gray)\n\n- Main content area (black background):\n  - Logo: \"kompakt\" (green and blue gradient text)\n  - Tagline: \"50–90% smaller. 100% private.\" (white text)\n  - Description: \"Free, open-source PDF compression. Desktop CLI gets 50–90% savings. Chrome extension for quick jobs. Files never leave your device.\" (white text)\n  - Buttons:\n    - \"Download Desktop\" (blue button with download icon)\n    - \"Chrome Extension\" (gray button with Chrome icon)\n  - Code snippet: \"brew tap xronocode/tools && brew install pd...\" (green text with \"Copy\" button on the right)\n  - \"Product Hunt\" badge: \"Product Hunt\" (white text on dark background with \"???\" icon)\n  - \"Support me\" button (red button with shield icon)\n\n- Bottom bar:\n  - Links: \"GitHub\", \"Releases\", \"Issues\", \"MIT License\", \"Privacy Policy\", \"Newsletter\" (white text)\n  - \"Support the project\" button (orange button with shield icon)\n  - Footer text: \"pdf-kompakt — open-source PDF compression\" (white text)\n\n- Layout:\n  - Top bar: horizontal, left-aligned text, right-aligned buttons/icons\n  - Main content: centered elements (logo, tagline, description, buttons, code snippet, badge)\n  - Bottom bar: horizontal, centered links, centered button, centered footer text\n\n- Clipping: Content appears unclipped at the bottom edge (no visible content below the footer text)."
}

А что с качеством? Вот тут начинается интересное

Естественный вопрос: «Окей, 8B-модель видит. Но насколько хорошо?»

Я провел трёхэтапную оценку на 10 скриншотах реального веб-приложения (kombo – детская математическая RPG, мой пет-проект в разработке) во вьюпортах от 320×568 (маленький мобильный) до 1440×900 (десктоп).

Оценка качества локальной Qwen3-vl:8B c Claude Opus 4.7 средствами Opus 4.7

Оценка качества локальной Qwen3-vl:8B c Claude Opus 4.7 средствами Opus 4.7

Три слоя сравнения

Слой

Модель

Описание

Baseline

qwen3-vl:8b v0.1.0

Модель из коробки, базовый промпт

Tuned

qwen3-vl:8b v0.2.2

Та же модель + тюнинг промптов и параметров сэмплинга

Frontier

Claude Opus 4.7

Фронтирная мультимодальная модель (потолок)

Важно: тюнинг был исключительно на уровне промптов и параметров inference. Никакого fine-tuning весов, никаких дополнительных данных. Чисто инженерная работа над промптом, схемой ответа и конфигурацией Ollama. Тюнинг весов – отдельная, вполне выполнимая задача, которая может ещё сократить разрыв.

9 измерений оценки

Каждый скриншот оценивался по 9 измерениям (0–5 баллов):

Измерение

Что проверяет

OCR / извлечение текста

Точность посимвольного копирования

Детекция UI-элементов

Карточки, иконки, декоративные формы

Понимание layout

Колонки, сетка, responsive-адаптация

Детекция CTA/кнопок

Кнопки, ссылки, их иерархия

Семантическое понимание

Роли секций, аудиторная сегментация

Извлечение таблиц

Ячейки, заголовки, структура

Контроль галлюцинаций

Отсутствие выдумок (цвета, тексты)

Обработка неопределённости

Детекция обрезки, below-fold контента

Полезность для downstream

Пригодность для дальнейшей обработки

Результаты

Headline numbers

                    Baseline    Tuned v0.2.2    Opus 4.7
                    ────────    ────────────    ────────
Средний балл:         3.99         4.70          5.00
Gap до фронтира:      1.01         0.30            –
Gap закрыт:             –           70%             –

Gap по измерениям (до и после тюнинга)

                  Baseline gap │ After tuning
                               │
  OCR            ████░░░░░ 0.7 │ ░ 0.0          ✓ Паритет
  UI detect      ██░░░░░░░ 0.3 │ ░ 0.0          ✓ Паритет
  Layout         ████████░ 1.2 │ ██░ 0.3        ~ Близко
  CTA            ░░░░░░░░░ 0.0 │ ░ 0.0          ✓ Паритет
  Semantic       ███░░░░░░ 0.4 │ ░ 0.0          ✓ Паритет
  Table          ██░░░░░░░ 0.3 │ ░ 0.0          ✓ Паритет
  Hallucination  █████████ 1.4 │ ████████░ 1.2  ✗ Главный gap
  Uncertainty    █████████ 2.3 │ ███░ 0.5       ~ Близко
  Downstream     █████████ 1.4 │ █░ 0.1         ✓ Почти паритет

Per-screenshot (10 скриншотов)

  Screenshot        Opus    Baseline    Tuned    Δ improved
  ──────────────    ────    ────────    ─────    ──────────
  01 desktop hero    5.0      4.0       4.7       +0.7
  02 audience cards  5.0      4.3       4.7       +0.4
  03 how it works    5.0      4.3       4.9       +0.6
  04 comparison tbl  5.0      4.4       4.9       +0.5
  05 tablet hero     5.0      4.2       4.7       +0.5
  06 tablet sections 5.0      4.4       4.8       +0.4
  07 mobile hero     5.0      3.4       4.6       +1.2  ← biggest
  08 mobile cards    5.0      4.2       4.7       +0.5
  09 mobile table    5.0      4.4       4.6       +0.2
  10 320px stress    5.0      3.1       4.7       +1.6  ← biggest
  ──────────────    ────    ────────    ─────    ──────────
  avg                5.00     3.99      4.70      +0.71

Что конкретно помогло (тюнинг без fine-tuning)

1. Sampling discipline: seed=42 + top_p=0.9 + top_k=20

Детерминированный seed убрал run-to-run variance. Tighter sampling (top_p/top_k) убрал «творчество» при извлечении – extraction-задача требует discipline, не creativity.

Результат: байт-идентичные скриншоты 03/04 теперь дают структурно идентичный output. Regression-тестирование стало возможным.

2. Structured JSON schema + glyphs_and_icons

Выделенное поле glyphs_and_icons в схеме заставляет модель эксплицитно перечислять спецсимволы. Символ ✦ (sparkle) читался как + в 100% базовых прогонов. После добавления поля – 100% корректно в structured mode.

Принцип: если модель не видит символ правильно «на автомате», заставь её назвать его явно.

Что остаётся фронтиру

Три вещи, которые 8B-модель системно не берёт:

Цветовая дифференциация. Eyebrow «FOR TEACHERS» рендерится серым (не фиолетовым) – это визуальный сигнал «на roadmap». Opus видит разницу, qwen3-vl упорно называет оба eyebrow фиолетовыми. В целом уступает в точности и мелочах.

Но вот что критично: для задачи замыкания цикла тестирования это не нужно. Кодер-агенту нужно знать: «кнопка обрезана», «текст таблицы корректен», «CTA на месте». А не «какой оттенок серого у eyebrow».

Итого, локальная VLM – high-recall, medium-precision экстрактор. Фронтир – low-volume, high-fidelity backstop. Оба слоя нужны, но 80% работы делает бесплатный локальный.

Что дальше

Средний горизонт:

  • Fine-tuning на размеченных парах (скриншот, ground-truth JSON) – qwen3-vl поддерживает LoRA - имеет смысл если задачи серьезные, а доступ к фронтиру или бюджет жестко ограничен.

  • Тесты других моделей и/или использование ансамбля из двух локальных моделей

  • Внедрение классификатора и автоматический routing: "простые" скриншоты → локально, сложные → фронтир

Длинный горизонт:

  • Мультимодальный MCP-хаб: vision + audio + document extraction в одном сервере

  • Integration с CI/CD: скриншот-тесты как часть pipeline, с автоматическим fallback на фронтир при низком confidence

Вывод

Открытая 8B-модель, развёрнутая за 20 минут на обычном GPU, после базового промпт-тюнинга (без обучения весов!) работает на ~70% от фронтира на задаче vision-extraction для UI-скриншотов.

Для 80% практических задач кодинг-агента – OCR, таблицы, кнопки, clipping – это полный паритет с Claude Opus 4.7.

Для оставшихся 20% (тонкие цвета, дизайн-интент, подсчёт строк) – отправляем на фронтир или человеку.

Цикл тестирования замкнут. Модель больше не слепая.

Код MCP-сервера, eval-скрипты, и датасет в репо https://github.com/xronocode/

Дисклеймер. Не претендую на новаторство или уникальность подхода: MCP-серверы, vision-модели и Ollama существуют не первый день. Вполне возможно кто-то уже решал аналогичную задачу и может даже решил ее более изящно. Ценность этой статьи в другом: от идеи до работающего решения с измеримым результатом за один вайб-спринт. Создал, развернул, протестировал, замерил, сравнил с фронтиром, получил конкретные цифры и отдал команде фронт-энда для внедрения в практики.