<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: TechNotes</title>
    <description>The latest articles on DEV Community by TechNotes (@technotes).</description>
    <link>https://dev.to/technotes</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4091040%2F92b57cb6-a5f6-4fc3-b7c0-10b2a6c367d5.png</url>
      <title>DEV Community: TechNotes</title>
      <link>https://dev.to/technotes</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/technotes"/>
    <language>en</language>
    <item>
      <title>DeepSeek Harness Desktop: приложение для Windows и Mac, установка и плагины</title>
      <dc:creator>TechNotes</dc:creator>
      <pubDate>Mon, 05 Oct 2026 07:00:01 +0000</pubDate>
      <link>https://dev.to/technotes/deepseek-harness-desktop-prilozhieniie-dlia-windows-i-mac-ustanovka-i-plaghiny-acm</link>
      <guid>https://dev.to/technotes/deepseek-harness-desktop-prilozhieniie-dlia-windows-i-mac-ustanovka-i-plaghiny-acm</guid>
      <description>&lt;p&gt;До 30 сентября DeepSeek Harness запускали командой &lt;code&gt;npx @deepseek-ai/dsh web&lt;/code&gt; в терминале, интерфейс открывался в браузере на локальном адресе. Нужны были Node.js, терминал и pnpm для первой установки плагина. Для новичка это барьер. 30 сентября вышла десктопная версия: скачать установщик, поставить, войти в аккаунт.&lt;/p&gt;

&lt;h2&gt;
  
  
  Что это за программа
&lt;/h2&gt;

&lt;p&gt;DeepSeek Harness, коротко &lt;code&gt;dsh&lt;/code&gt;, — агентный харнесс. Он связывает языковую модель с инструментами: агент читает и правит файлы в папке, запускает команды, выходит в сеть, строит план и готовит отчёт.&lt;/p&gt;

&lt;p&gt;Код открыт под лицензией MIT. Репозиторий создан 13 августа 2026 года, к началу октября у него 243 тысячи звёзд и 29 тысяч форков. Девиз — «Everything is a Plugin».&lt;/p&gt;

&lt;p&gt;На фреймворке Cordis собраны модель, инструменты, песочница, хранилище сессий, интерфейс и цикл агента. Поэтому поведение меняется без правки исходников, и за полтора месяца вырос каталог сторонних дополнений.&lt;/p&gt;

&lt;h2&gt;
  
  
  Две официальные сборки и неофициальная третья
&lt;/h2&gt;

&lt;p&gt;На странице deepseek.com/harness есть кнопки для macOS на Apple и Windows 64 бита. Размеры сняты запросом заголовков к серверу загрузок.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Сборка&lt;/th&gt;
&lt;th&gt;Файл&lt;/th&gt;
&lt;th&gt;Размер&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Windows x64&lt;/td&gt;
&lt;td&gt;&lt;code&gt;dsh-latest-windows-x64.exe&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;289 МБ&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;macOS, Apple Silicon&lt;/td&gt;
&lt;td&gt;&lt;code&gt;dsh-latest-macos-arm64.dmg&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;370 МБ&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;macOS, Intel&lt;/td&gt;
&lt;td&gt;&lt;code&gt;dsh-latest-macos-x64.dmg&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;386 МБ&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Все три файла датированы 29 сентября, выпуск — 0.2.0-rc.2. Сборки для Intel на странице загрузки нет, хотя файл лежит на сервере. В журнале выпуска для неё указана починка: неверная подпись встроенного Node, из-за чего при запуске падали офисные навыки. Эту сборку проверяют меньше.&lt;/p&gt;

&lt;h2&gt;
  
  
  Что лежит внутри установщика
&lt;/h2&gt;

&lt;p&gt;Оболочка — Electron вокруг того же веб-интерфейса. README называет её тонкой и такой же по поведению, как веб-версия. Большой вес объясняется просто: внутрь упаковали всё сразу.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2F176-123-175-90.sslip.io%2Fs3%2Fautopost-assets%2Fassets%2F28%2F93%2F289396fbb253403db638d76edc4a4f01b82f90dd0c817c928f52700dc7933213" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2F176-123-175-90.sslip.io%2Fs3%2Fautopost-assets%2Fassets%2F28%2F93%2F289396fbb253403db638d76edc4a4f01b82f90dd0c817c928f52700dc7933213" alt="Схема: что входит в установщик DeepSeek Harness Desktop" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Слоёв четыре:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;dsh&lt;/code&gt; с полным деревом зависимостей в подписанном архиве приложения;&lt;/li&gt;
&lt;li&gt;Node.js (исполняемый файл Electron) и pnpm для установки плагинов;&lt;/li&gt;
&lt;li&gt;отдельный Python с numpy, pandas, python-docx, python-pptx, openpyxl, Pillow, lxml, XlsxWriter;&lt;/li&gt;
&lt;li&gt;три офисных навыка по умолчанию: Word, презентации, Excel.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Установка на Windows
&lt;/h2&gt;

&lt;p&gt;Мастер установки классический, в конце галочка «запустить после установки». Программа оказывается в &lt;code&gt;AppData\Local\Programs\DeepSeek Harness&lt;/code&gt;. Запущенное приложение блокирует установку, выйти придётся через трей.&lt;/p&gt;

&lt;p&gt;После старта в трее появляется значок: одиночный щелчок показывает окно, меню умеет открыть или выйти. Крестик окно не закрывает, а прячет, при первом закрытии будет подтверждение и объяснение, что задачи продолжаются. Alt+F4 и «Закрыть окно» на панели задач действуют так же.&lt;/p&gt;

&lt;h2&gt;
  
  
  Установка на Mac
&lt;/h2&gt;

&lt;p&gt;Открываете образ и перетаскиваете значок в «Программы». В скриптах есть подпись и нотаризация Apple, поэтому предупреждения о неизвестном разработчике быть не должно. Красная кнопка и ⌘W прячут окно, приложение остаётся в Dock и работает. Значка в строке меню нет, окно возвращается щелчком по Dock, полный выход — ⌘Q.&lt;/p&gt;

&lt;p&gt;Правка 0.2.0-rc.2 решила старую проблему: GUI-программы macOS не видели переменные из &lt;code&gt;~/.zshrc&lt;/code&gt; и &lt;code&gt;~/.zprofile&lt;/code&gt;, поэтому агент не находил инструменты Homebrew и настройки прокси. При старте запускается оболочка входа, забирает окружение и передаёт его агенту, терминалам и плагинам. Таймаут — десять секунд, дальше перебираются zsh, bash и sh. Правки в файлах оболочки подхватятся после полного перезапуска.&lt;/p&gt;

&lt;h2&gt;
  
  
  Первый запуск и рабочее окно
&lt;/h2&gt;

&lt;p&gt;Войти можно в аккаунт DeepSeek через системный браузер или вставить ключ API с platform.deepseek.com. Третья кнопка — «настроить позже», но вопрос вернётся при следующем запуске. С версии 0.1.7-rc.2 после входа идёт знакомство: информация о лимите, вопрос о назначении, выбор подробности показа хода работы. Прерванное знакомство продолжают позже.&lt;/p&gt;

&lt;p&gt;Работа начинается с выбора папки, без неё поле ввода недоступно. Свежая установка создаёт папку по умолчанию и пустую сессию, первый запрос можно отправить сразу. Слева сессии с группировкой по папкам, закреплением, архивацией и фильтрацией.&lt;/p&gt;

&lt;p&gt;Внизу поле ввода с выбором модели, уровня рассуждения и режима агента. Режимов четыре: стандартный, «создатель» для разработки плагинов, PTC и минимальный с урезанным набором.&lt;/p&gt;

&lt;h2&gt;
  
  
  Окно закрыли, а агент работает
&lt;/h2&gt;

&lt;p&gt;Закрытие окна работу не останавливает: страница и сервер продолжают жить, задачи выполняются. Вернувшись, вы получите ту же сессию, черновик и положение прокрутки. Если агент работает, ждёт подтверждения или очередь сообщений не пуста, выход спросит подтверждение и перечислит, что прервётся. Без работы приложение выходит молча.&lt;/p&gt;

&lt;h2&gt;
  
  
  Права: песочница и подтверждения
&lt;/h2&gt;

&lt;p&gt;Это два независимых рычага. Режим песочницы задаёт, куда команды агента могут писать, а политика подтверждений — о чём агент обязан спросить. В интерфейсе всё собрано в один переключатель с готовыми наборами.&lt;/p&gt;

&lt;p&gt;Первый набор разрешает запись только в рабочую папку и временный каталог, на остальное спрашивает разрешение. Второй снимает ограничения и вопросы, его название — &lt;code&gt;danger-full-access&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Обновления идут своим чередом
&lt;/h2&gt;

&lt;p&gt;Проверка запускается при старте и дальше примерно раз в десять минут, ничего не скачивает и окон не открывает. О новой версии сообщает строка аккаунта в левом нижнем углу.&lt;/p&gt;

&lt;p&gt;Установка ручная: щелчок, загрузка с процентами, проверка файла, окно с кнопками установки и перезапуска. При работающих задачах появится предупреждение: остановиться и обновиться или отложить. На Windows программа закроется и откроется сама, вручную запускать не нужно.&lt;/p&gt;

&lt;h2&gt;
  
  
  Чего стоит опасаться
&lt;/h2&gt;

&lt;p&gt;Плагин работает с правами пользователя. Каталог awesome-dsh-plugin предупреждает: плагин читает файлы, пользуется ключами, ходит в сеть. Подтверждения инструментов на код плагина не распространяются, а попадание в каталог не значит проверку безопасности.&lt;/p&gt;

&lt;p&gt;Незнакомый плагин ставьте там, где нет ключей. Сборочные скрипты зависимостей подчиняются правилам pnpm, окна «разрешить ли» для них нет, и это записано в списке известных ограничений.&lt;/p&gt;

&lt;h2&gt;
  
  
  Кому ставить уже сейчас
&lt;/h2&gt;

&lt;p&gt;Тем, кто останавливался на слове «терминал»: установщик снимает этот порог. Офисные навыки и предпросмотр документов полезны вне программирования: разобрать таблицу, собрать отчёт, свести папку документов в один файл. Вторая аудитория — те, кто уже работает с &lt;code&gt;dsh&lt;/code&gt; из терминала: сессии общие, команда ставится из меню, а фоновые задачи без открытой вкладки браузера удобнее.&lt;/p&gt;

&lt;p&gt;В полном материале есть разбор работы с командной строкой и общего дома, часть про сеть и прокси, а также про плагины и с чего начать.&lt;/p&gt;

&lt;p&gt;Текст подготовлен с использованием искусственного интеллекта.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>tools</category>
      <category>opensource</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Opus 5.5, Fable 5.1, GPT-6, DeepSeek и Grok: цены и скорость</title>
      <dc:creator>TechNotes</dc:creator>
      <pubDate>Sat, 03 Oct 2026 01:01:05 +0000</pubDate>
      <link>https://dev.to/technotes/opus-55-fable-51-gpt-6-deepseek-i-grok-tsieny-i-skorost-2nof</link>
      <guid>https://dev.to/technotes/opus-55-fable-51-gpt-6-deepseek-i-grok-tsieny-i-skorost-2nof</guid>
      <description>&lt;p&gt;Осень 2026 года выдалась самой плотной за историю этой гонки. За четыре недели вышли модели от четырёх лабораторий, и выбрать между ними по рекламным таблицам уже не получается. Ниже — что и когда выпустили, почему цифры производителей стоит делить и насколько быстро модели решают задачи на самом деле.&lt;/p&gt;

&lt;h2&gt;
  
  
  Календарь релизов уместился в один месяц
&lt;/h2&gt;

&lt;p&gt;1 сентября 2026 года Anthropic выпустила Claude Fable 5.1. Через два дня OpenAI показала GPT-6 Astra. 10 сентября DeepSeek выпустила V4.1 Flash без презентации, а 21 сентября xAI выпустила Grok 4.7.&lt;/p&gt;

&lt;p&gt;Следующий день оказался самым плотным: 22 сентября Anthropic выпустила Claude Opus 5.5, а OpenAI — GPT-6 Sol и GPT-6 Luna. 28 сентября вышла Claude Sonnet 5.5, 29 сентября — GPT-6.1 Sol. GPT-6.1 Astra OpenAI в ожидавшийся день так и не выпустила.&lt;/p&gt;

&lt;h2&gt;
  
  
  Таблицам производителей верить можно только грубо
&lt;/h2&gt;

&lt;p&gt;Цифры компаний выгодны их собственным моделям, и причины просты: выбор тестов, уровень рассуждения, собственная обвязка. Один и тот же тест в разных обвязках даёт разные числа. Terminal-Bench 4.0 для Grok 4.7 — 37,6 % у xAI против 33 % у Artificial Analysis. Сравнивать по таблицам разных компаний можно, но результат будет грубым.&lt;/p&gt;

&lt;h2&gt;
  
  
  Скорость печати: разрыв почти в четыре раза
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2F176-123-175-90.sslip.io%2Fs3%2Fautopost-assets%2Fassets%2Fb8%2F65%2Fb8653f0691075a792508b83c846a3d18e8da4bc4f5a956b7d3172adcd7b532fa" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2F176-123-175-90.sslip.io%2Fs3%2Fautopost-assets%2Fassets%2Fb8%2F65%2Fb8653f0691075a792508b83c846a3d18e8da4bc4f5a956b7d3172adcd7b532fa" alt="Скорость вывода в токенах в секунду. Данные: Artificial Analysis, 3 октября 2026 года. График: Технозаметки" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;По данным Artificial Analysis на 3 октября 2026 года лидирует DeepSeek V4.1 Flash — 224 токена в секунду. Дальше идут Claude Sonnet 5.5 (140), GPT-6 Luna (125), DeepSeek V4 Pro (109), Claude Opus 5.5 на максимальном уровне (93), Grok 4.7 (79), Claude Fable 5.1 (68), GPT-6.1 Sol (61). Замыкает список GPT-6 Astra с 54 токенами в секунду.&lt;/p&gt;

&lt;h2&gt;
  
  
  Время до первого слова расходится ещё сильнее
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2F176-123-175-90.sslip.io%2Fs3%2Fautopost-assets%2Fassets%2F6c%2Fdc%2F6cdc9907f86665cb5e28f3264681b2408c494f1468d31fec25f757c8587bc0c2" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2F176-123-175-90.sslip.io%2Fs3%2Fautopost-assets%2Fassets%2F6c%2Fdc%2F6cdc9907f86665cb5e28f3264681b2408c494f1468d31fec25f757c8587bc0c2" alt="Время до первого токена ответа, в секундах. Данные: Artificial Analysis, 3 октября 2026 года. График: Технозаметки" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Здесь разброс куда драматичнее. Обе модели DeepSeek отвечают за 1–2 секунды, Grok 4.7 — за 43. GPT-6 Luna доходит до первого токена за 133 секунды, Claude Fable 5.1 — за 187, GPT-6.1 Sol — за 282, GPT-6 Astra — за 319. Claude Sonnet 5.5 тратит 444 секунды, а Claude Opus 5.5 на максимальном уровне — 689 секунд.&lt;/p&gt;

&lt;h2&gt;
  
  
  Сколько часов чистой печати уходит на весь прогон
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2F176-123-175-90.sslip.io%2Fs3%2Fautopost-assets%2Fassets%2F47%2F40%2F4740da5753881970a2dc6722ba9b6a436351a49723957c10708a02de55257bca" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2F176-123-175-90.sslip.io%2Fs3%2Fautopost-assets%2Fassets%2F47%2F40%2F4740da5753881970a2dc6722ba9b6a436351a49723957c10708a02de55257bca" alt="Сколько часов чистой печати ушло на весь прогон индекса: выходные токены, делённые на скорость вывода. Оценка по данным Artificial Analysis. График: Технозаметки" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Если поделить выходные токены прогона индекса на скорость печати, картина такая (оценка по данным Artificial Analysis, 3 октября 2026). Claude Sonnet 5.5: 420 млн токенов при 140 токенов/с — около 840 часов. Примерно столько же у Grok 4.7. Claude Opus 5.5 и Claude Fable 5.1 — около 780 часов, DeepSeek V4 Pro — около 410, GPT-6 Astra и GPT-6.1 Sol — около 300 часов.&lt;/p&gt;

&lt;p&gt;Это именно оценка, а не замер: запросы идут параллельно, скорость меняется со временем.&lt;/p&gt;

&lt;h2&gt;
  
  
  Тест BitsMinds: качество против минут
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2F176-123-175-90.sslip.io%2Fs3%2Fautopost-assets%2Fassets%2Fd3%2F95%2Fd3953e24132d15d119b89de10773efca5ae9c3a485d141f9cdedaa198250353c" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2F176-123-175-90.sslip.io%2Fs3%2Fautopost-assets%2Fassets%2Fd3%2F95%2Fd3953e24132d15d119b89de10773efca5ae9c3a485d141f9cdedaa198250353c" alt="Одна и та же задача: сколько минут ушло у Opus 5.5, Fable 5.1 и GPT-6 Astra. Данные: BitsMinds, 22 сентября 2026 года. График: Технозаметки" width="2000" height="1014"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;22 сентября 2026 года BitsMinds прогнали Opus 5.5, Fable 5.1 и GPT-6 Astra на трёх заданиях: развязка шоссе в SVG, ярмарка у моря, страница запуска ракеты. По одной попытке на максимальном рассуждении.&lt;/p&gt;

&lt;p&gt;Качество: Opus 5.5 — 10 очков, Fable — 9, Astra — 8. По времени развязка заняла у Opus 59 минут, у Fable 26, у Astra 16. Ярмарка: 63, 35 и 27 минут. Ракета: 77, 49 и 28 минут. Opus рассуждал около часа до первой строки кода, а Astra оказалась быстрее более чем вдвое в каждом раунде.&lt;/p&gt;

&lt;h2&gt;
  
  
  DataCamp: дешёвая итерация против одного долгого круга
&lt;/h2&gt;

&lt;p&gt;DataCamp сравнил Opus 5.5 и GPT-6 Sol на клоне «Тетриса» с переворотом гравитации каждые 20 секунд. Механику правильно сделали обе модели, но подошли к ней по-разному.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sol: 6 ходов, 9 вызовов инструментов, 5 баллов из 5, 26 центов&lt;/li&gt;
&lt;li&gt;Opus: 3 хода, 2 вызова инструментов, 4,3 балла, 87 центов&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sol быстро пробовала и исправляла, Opus долго думал и писал сразу. Итог: у Sol выше балл и втрое ниже цена.&lt;/p&gt;

&lt;h2&gt;
  
  
  Одна модель и одна задача могут отличаться в пять раз
&lt;/h2&gt;

&lt;p&gt;Grok 4.7 на средней задаче индекса выдаёт 81 тысячу выходных токенов. При 188 токенах/с в день выхода это около семи минут. При 40 токенах/с через четыре дня — больше получаса. При нынешних 79 токенах/с — около семнадцати минут.&lt;/p&gt;

&lt;h2&gt;
  
  
  Быстрее решает и лучше решает — это разные модели
&lt;/h2&gt;

&lt;p&gt;Если нужен результат с первой попытки и вы готовы ждать, берите Opus 5.5 на высоком рассуждении. Если нужен рабочий вариант за четверть часа и дешевле, смотрите на GPT-6 Astra и GPT-6.1 Sol. А если задача поддаётся итерациям, Sol обойдётся втрое дешевле одного долгого круга Opus.&lt;/p&gt;

&lt;p&gt;Что делать с этими числами дальше, зависит от вашего сценария: в полной версии есть прейскурант API за миллион токенов, разбор кэша на длинной сессии, сравнение подписок, а также инструкции, как проверить модели на своих задачах и как с этим работать из России.&lt;/p&gt;

&lt;p&gt;Текст подготовлен с использованием искусственного интеллекта.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>machinelearning</category>
      <category>productivity</category>
    </item>
    <item>
      <title>SEO-плагины на DeepSeek Harness: что переезжает из Claude Code, а что нет</title>
      <dc:creator>TechNotes</dc:creator>
      <pubDate>Tue, 22 Sep 2026 23:22:38 +0000</pubDate>
      <link>https://dev.to/technotes/seo-plaghiny-na-deepseek-harness-chto-pierieiezzhaiet-iz-claude-code-a-chto-niet-4hm7</link>
      <guid>https://dev.to/technotes/seo-plaghiny-na-deepseek-harness-chto-pierieiezzhaiet-iz-claude-code-a-chto-niet-4hm7</guid>
      <description>&lt;p&gt;Год подряд SEO-плагины к нейросети значили для меня только одну связку: Claude Code и несколько MCP-серверов — Search Console, DataForSEO, выгрузки краулера. Модель сама забирает цифры, а не сочиняет их. Потом DeepSeek показал свой агентный харнесс &lt;strong&gt;DeepSeek Harness&lt;/strong&gt;, коротко &lt;code&gt;dsh&lt;/code&gt;, и стало интересно: реально ли перетащить туда весь набор и платить по тарифам DeepSeek, не переучиваясь и не трогая проекты.&lt;/p&gt;

&lt;p&gt;Коротко — да, и почти без потерь. Подробности ниже, по слоям.&lt;/p&gt;

&lt;h2&gt;
  
  
  Что такое dsh простыми словами
&lt;/h2&gt;

&lt;p&gt;Это запускатель профилей. Профиль — выстроенная стопка плагинов, сверху ваш слой настроек, файл &lt;code&gt;cordis.patch.yml&lt;/code&gt; внутри папки профиля. Сразу в комплекте веб-интерфейс, &lt;code&gt;headless&lt;/code&gt; для одиночных заданий и режимы под автоматизацию. Устанавливается из npm, пакет &lt;code&gt;@deepseek-ai/dsh&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Сразу оговорюсь: сейчас это версия 0.1.5, релиз-кандидат. Документация хорошая, но на боевых задачах я бы рядом держал привычный клиент — мало ли что поменяется от версии к версии.&lt;/p&gt;

&lt;p&gt;SEO-набор в любом харнессе складывается из трёх слоёв: где брать данные, по каким правилам с ними работать, что делать, если модель свернула не туда. Пройду по каждому.&lt;/p&gt;

&lt;h2&gt;
  
  
  Первый слой — данные через MCP
&lt;/h2&gt;

&lt;p&gt;За это отвечает плагин &lt;code&gt;dsh-mcp-client&lt;/code&gt;. Одна запись — один сервер, без обёрток. Вот DataForSEO, запущенный у вас на машине:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;insert&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;mcp-dataforseo&lt;/span&gt;
      &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;@deepseek-ai/dsh-mcp-client'&lt;/span&gt;
      &lt;span class="na"&gt;config&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;serverName&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;dataforseo&lt;/span&gt;
        &lt;span class="na"&gt;transport&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;stdio&lt;/span&gt;
        &lt;span class="na"&gt;command&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;npx&lt;/span&gt;
        &lt;span class="na"&gt;args&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;-y'&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;dataforseo-mcp-server'&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
        &lt;span class="na"&gt;env&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;DATAFORSEO_LOGIN&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;!!js&lt;/span&gt; &lt;span class="s"&gt;process.env.DATAFORSEO_LOGIN&lt;/span&gt;
          &lt;span class="na"&gt;DATAFORSEO_PASSWORD&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;!!js&lt;/span&gt; &lt;span class="s"&gt;process.env.DATAFORSEO_PASSWORD&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Облачные серверы, те же Ahrefs или Semrush, подключаются похоже: вместо &lt;code&gt;stdio&lt;/code&gt; пишете &lt;code&gt;transport: streamable-http&lt;/code&gt; и адрес. Ключи кладутся в переменные окружения, в файл профиля их совать не надо.&lt;/p&gt;

&lt;p&gt;Удобная мелочь: названия инструментов совпадают с Claude Code — &lt;code&gt;mcp__dataforseo__...&lt;/code&gt;. Всё, что у вас привязано к этим именам, будь то правила разрешений или привычные формулировки заданий, едет без правок.&lt;/p&gt;

&lt;p&gt;А теперь то, что выяснится лучше до переезда:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Мост пропускает только инструменты.&lt;/strong&gt; Ресурсы MCP и готовые подсказки (prompts) не работают. Если ваш сервер Search Console отдаёт отчёты ресурсами, модель их не увидит.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;На вызов стоит таймаут — 60 секунд по умолчанию.&lt;/strong&gt; Объёмная выгрузка выдачи сразу по куче ключей может не влезть. Поле &lt;code&gt;toolCallTimeoutMs&lt;/code&gt; это чинит.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Сервер не поднялся — харнесс всё равно стартует&lt;/strong&gt;, просто без его инструментов, с ошибкой в логе. Для ночного прогона такая тишина опасна: задание отработает, но без данных. Поставьте &lt;code&gt;failOnStartupError: true&lt;/code&gt;, чтобы падало открыто.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fammsampczimop00h5fk5.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fammsampczimop00h5fk5.jpg" alt="Ноутбук с открытым кодом крупным планом. Фото: Marc Mueller, Unsplash, CC0" width="700" height="466"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Второй слой — правила живут в навыках
&lt;/h2&gt;

&lt;p&gt;Сервер приносит цифры, но не знает ваших порядков: какой длины заголовки, что делать с дублями, по чему разводить фразы на разные посадочные. Раньше это лежало в длинной подсказке, которую каждый сочинял на свой лад. В dsh под это есть навыки — те же skills, что в Claude Code.&lt;/p&gt;

&lt;p&gt;Навык — это папка с файлом &lt;code&gt;SKILL.md&lt;/code&gt; либо просто файл &lt;code&gt;&amp;lt;имя&amp;gt;.md&lt;/code&gt; в одном из корней, которые харнесс просматривает:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;.dsh/skills&lt;/code&gt; в корне проекта;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;.agents/skills&lt;/code&gt; там же;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;$DSH_HOME/skills&lt;/code&gt; — общие навыки пользователя.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Сверху у файла шапка с обязательными полями &lt;code&gt;name&lt;/code&gt; и &lt;code&gt;description&lt;/code&gt;. По описанию модель понимает, когда навык включить, а тело подгружает только в этот момент. Вот пример:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;semantika-klastery&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Разбор&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;выгрузки&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Вордстата&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;на&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;группы&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;под&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;посадочные&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;страницы"&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="p"&gt;1.&lt;/span&gt; Читай выгрузку целиком, не кусками.
&lt;span class="p"&gt;2.&lt;/span&gt; Фразы на одну страницу, только если выдача по ним совпадает.
&lt;span class="p"&gt;3.&lt;/span&gt; В конце сверь число строк на входе и на выходе. Не сошлось — задача не сделана.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Третий пункт я теперь вставляю в каждую пакетную задачу. Модель умеет тихо переварить сто строк из пятисот и отчитаться, будто всё готово. Счётчик на входе и выходе ловит такое куда надёжнее, чем вчитывание в отчёт.&lt;/p&gt;

&lt;p&gt;Две мелочи в плюс. Тело навыка перечитывается при каждой загрузке, так что правило можно подправить прямо посреди работы, без перезапуска. И вторая: папку &lt;code&gt;.claude/skills&lt;/code&gt; харнесс по умолчанию &lt;strong&gt;не&lt;/strong&gt; просматривает. Если навыки уже там, пропишите её в &lt;code&gt;customSkillDirs&lt;/code&gt;, копировать не нужно.&lt;/p&gt;

&lt;h2&gt;
  
  
  Третий слой — хуки как страховка
&lt;/h2&gt;

&lt;p&gt;Главное, что я вынес из года работы с плагинами: первые месяц-два модели не даём права записи. Она смотрит и предлагает, а меняет человек. В Claude Code это решается хуками, и тут приятный момент: у dsh есть мост &lt;code&gt;dsh-hooks-claude-code&lt;/code&gt;, он исполняет ваш готовый &lt;code&gt;hooks.json&lt;/code&gt; без переписывания.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;insert&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;@deepseek-ai/dsh-hooks-claude-code'&lt;/span&gt;
      &lt;span class="na"&gt;config&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;configPath&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;./.claude/hooks.json&lt;/span&gt;
        &lt;span class="na"&gt;projectDir&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Основные события работают: &lt;code&gt;PreToolUse&lt;/code&gt; может запретить вызов инструмента или попросить подтверждение, &lt;code&gt;PostToolUse&lt;/code&gt; — вернуть модели результат с замечанием, &lt;code&gt;Stop&lt;/code&gt; — вынудить сделать ещё шаг, если проверка не сошлась. Хук «не трогай CMS без меня» и хук «не заканчивай, пока счётчики не сойдутся» переносятся как есть. Одно ограничение: мост берёт только командные хуки — те, что запускают внешнюю программу.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ночной аудит без интерфейса
&lt;/h2&gt;

&lt;p&gt;Для регулярных задач есть профиль &lt;code&gt;headless&lt;/code&gt;: одно задание, один ответ, выход.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dsh &lt;span class="nt"&gt;--profile&lt;/span&gt; headless &lt;span class="s2"&gt;"Сверь страницы из карты сайта с кодами ответа и закрытием в robots. Итог — таблица."&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Такую строку нетрудно повесить в планировщик раз в неделю. Задача стартует в текущей папке — там лежат навыки проекта, — а сессия сохраняется. Утром открываете и смотрите, что агент делал и где сбился.&lt;/p&gt;

&lt;h2&gt;
  
  
  Где зарыта экономия
&lt;/h2&gt;

&lt;p&gt;DeepSeek дешевле не только по прайсу. У агента, который подолгу сидит в одном проекте, почти весь вход — это повторное чтение кэша: инструкции, описания инструментов, история шагов. А кэш у DeepSeek стоит копейки, тем более вне пиковых часов.&lt;/p&gt;

&lt;p&gt;У MCP есть и другая сторона: описания всех инструментов подключённого сервера уходят в &lt;strong&gt;каждый&lt;/strong&gt; запрос. Полсотни инструментов на сервере — постоянная надбавка на каждом шаге. Пока список не трогают, эта часть не меняется и уходит в кэш. Стоит серверу обновить набор инструментов — кэш сбивается с этого места и дальше.&lt;/p&gt;

&lt;p&gt;Отсюда простое правило: не подключайте всё сразу. Держите отдельный профиль под семантику и отдельный под технический аудит, в каждом только нужные серверы. Для dsh это ложится само собой: профиль и есть такая стопка.&lt;/p&gt;

&lt;h2&gt;
  
  
  Что в итоге
&lt;/h2&gt;

&lt;p&gt;Переезд SEO-набора на DeepSeek Harness — это скорее перенос файлов, чем переделка:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MCP-серверы заводятся одной записью, имена инструментов те же, что в Claude Code;&lt;/li&gt;
&lt;li&gt;навыки — тот же формат &lt;code&gt;SKILL.md&lt;/code&gt;, старую папку достаточно указать в настройках;&lt;/li&gt;
&lt;li&gt;хуки из &lt;code&gt;hooks.json&lt;/code&gt; работают через мост, если они командные;&lt;/li&gt;
&lt;li&gt;не переезжают ресурсы MCP и готовые подсказки — проверьте, не висит ли на них что-то важное;&lt;/li&gt;
&lt;li&gt;для регулярных отчётов есть &lt;code&gt;headless&lt;/code&gt;, для разных задач — разные профили.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Осталось разобраться с тем, чего харнесс не решает: модель подаёт строки, а не выводы. Что развивать, от чего отказаться и что сказать клиенту — это по-прежнему решаете вы.&lt;/p&gt;

&lt;p&gt;Текст подготовлен с использованием искусственного интеллекта.&lt;/p&gt;

</description>
      <category>seo</category>
      <category>ai</category>
      <category>mcp</category>
      <category>llm</category>
    </item>
    <item>
      <title>DeepSeek напрямую или через подписку Ollama: что выгоднее харнессу</title>
      <dc:creator>TechNotes</dc:creator>
      <pubDate>Mon, 21 Sep 2026 06:14:36 +0000</pubDate>
      <link>https://dev.to/technotes/deepseek-napriamuiu-ili-chieriez-podpisku-ollama-chto-vyghodnieie-kharniessu-c0k</link>
      <guid>https://dev.to/technotes/deepseek-napriamuiu-ili-chieriez-podpisku-ollama-chto-vyghodnieie-kharniessu-c0k</guid>
      <description>&lt;p&gt;Сравнивать DeepSeek и Ollama как два разных продукта бессмысленно: внутри обоих работает одна и та же модель — DeepSeek-V4-Pro. Разница в том, за что вы платите. У DeepSeek вы оплачиваете только токены по факту. У Ollama — подписку за 20 долларов, внутри которой 60 долларов расхода. И есть деталь, которую обычно замечают в последнюю очередь: &lt;strong&gt;время суток&lt;/strong&gt;, когда запускаются задачи.&lt;/p&gt;

&lt;h2&gt;
  
  
  За токен берут одинаково, но с оговорками
&lt;/h2&gt;

&lt;p&gt;Прайс на модель у обоих поставщиков совпадает до долей цента. За миллион токенов:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;вход при попадании в кэш: DeepSeek — $0,003 вне пика, Ollama — $0,022;&lt;/li&gt;
&lt;li&gt;вход при промахе кэша: $0,15 против $0,66;&lt;/li&gt;
&lt;li&gt;выход: $0,60 против $1,98;&lt;/li&gt;
&lt;li&gt;подписка: у DeepSeek её нет, у Ollama — $20 в месяц, включая $60 расхода.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Обе цифры — базовые ставки, без пиковых коэффициентов. И здесь DeepSeek вне пика берёт ровно в два раза меньше Ollama. Главное слово — «вне пика». У DeepSeek удвоенный тариф действует в окна 01:00–04:00 и 06:00–10:00 UTC по будням, всё остальное — включая выходные — считается по половине. У Ollama пик наступает в 12:00–18:00 UTC по будням.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg3h58ns47zo8xy0rc9l6.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg3h58ns47zo8xy0rc9l6.jpg" alt="Техник у серверной стойки в дата-центре NERSC. Фото: Derrick Coetzee, CC0" width="799" height="531"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Какую часть счёта делает кэш
&lt;/h2&gt;

&lt;p&gt;Цена за миллион токенов мало что говорит, если не разобраться, каких токенов в работе больше. Агент, который долго трудится над одним репозиторием, почти всё время &lt;strong&gt;читает кэш&lt;/strong&gt;: инструкции, историю шагов, файлы, которые модель видит в каждом новом вызове. Свежего текста на входе немного, и он целиком уходит в промахи кэша.&lt;/p&gt;

&lt;p&gt;Я взял журнал своих сеансов: на 75 миллионов прочитанных токенов пришлось около 250 тысяч новых. Кэш покрывает 99,7% входа. Четырёхкратная разница в цене кэша бьёт по счёту заметнее, чем любая надбавка на выходе.&lt;/p&gt;

&lt;h2&gt;
  
  
  Расписание решает больше, чем прайс
&lt;/h2&gt;

&lt;p&gt;Переведу окна в московское время. Пик DeepSeek — с четырёх до семи утра и с девяти до часа дня. Пик Ollama — с трёх до девяти вечера. И это важно: вечер — как раз то время, когда за такую работу садятся. Рабочий день у сервера уже закончился, а у вас — только начался.&lt;/p&gt;

&lt;p&gt;Выходит, что в самые активные часы по Москве один и тот же запрос у Ollama стоит вчетверо дороже на кэше, вдвое — на несбитом кэше и вдвое — на выходе. Модель ни при чём: проигрывает расписание.&lt;/p&gt;

&lt;p&gt;Харнесс сам ведёт учёт по каждому сеансу: прочитанный кэш, новые входные токены, выход. Умножаете на тариф нужного окна — и правило видно сразу. Длинные автономные задачи, где агент подолгу крутит один контекст, дешевле запускать не когда вам удобно, а когда маршруту дёшево. За месяц разница в расписании набегает на ещё одну подписку.&lt;/p&gt;

&lt;h2&gt;
  
  
  Считать надо сеанс, а не токен
&lt;/h2&gt;

&lt;p&gt;Куда полезнее смотреть не на цену миллиона токенов, а на стоимость одного сеанса харнесса. Возьму реальные цифры из журнала запусков: за один сеанс агент прочитал из кэша 75 миллионов токенов, добавил 250 тысяч новых на входе и выдал 250 тысяч на выходе.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DeepSeek вне пика: 75x0,003 + 0,25x0,15 + 0,25x0,60 = $1,01
Ollama в пик:      75x0,022 + 0,25x0,66 + 0,25x1,98 = $2,43
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Два доллара сорок три против одного — при той же работе и той же модели. За сорок вечерних сеансов в месяц разница составит около 57 долларов. Подписка Ollama не спасает: она просто упаковывает расход — 60 долларов включённого использования внутри 20 долларов платы.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flfcnufgq9dlr6xl6iv1e.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flfcnufgq9dlr6xl6iv1e.jpg" alt="Видеокарта GeForce RTX 3090: железо, на котором считают открытые модели. Фото: PantheraLeo1359531, CC BY 4.0" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Что ещё даёт подписка
&lt;/h2&gt;

&lt;p&gt;Подписка Ollama — это не одна модель. В тот же счёт входят Kimi, GLM, Qwen, Mistral, и расход по ним идёт из общего пула. Если харнессу нужны разные модели под разные задачи, один счёт удобнее пяти отдельных. У DeepSeek в прайсе одна семья моделей, зато никаких подписок и обязательств.&lt;/p&gt;

&lt;p&gt;Лимиты тоже отличаются. У Ollama на Pro — три одновременных запроса, дальше они встают в очередь, а при переполнении их могут отклонить. У DeepSeek на V4-Pro заявлено 500 одновременных обращений, на Flash — 2500. Одиночному агенту это незаметно, конвейеру из субагентов — критично.&lt;/p&gt;

&lt;h2&gt;
  
  
  Как это встаёт в харнесс
&lt;/h2&gt;

&lt;p&gt;DeepSeek цепляется родным маршрутом &lt;code&gt;deepseek-official&lt;/code&gt;: усилия рассуждения, режим мышления, распознавание картинок у Flash и сжатие контекста включаются из коробки. Ollama подключается вторым провайдером через &lt;code&gt;pi-ai&lt;/code&gt; — интерфейс, совместимый с OpenAI. Идентификатор модели прописывается в настройках руками, а набор возможностей ограничен тем, что отдаёт площадка.&lt;/p&gt;

&lt;p&gt;Проверил на своём конфиге: маршрут &lt;code&gt;ollama-cloud&lt;/code&gt; собран, ключ на месте, но модели DeepSeek на текущем плане отвечают отказом 402 — до оплаты подписки работают только gpt-oss, gemma и nemotron. Это важно для сравнения: &lt;strong&gt;подписку включают до начала расчётов&lt;/strong&gt;, иначе мерить нечего.&lt;/p&gt;

&lt;h2&gt;
  
  
  Вывод
&lt;/h2&gt;

&lt;p&gt;Когда сеансы идут днём и вечером по Москве, прямая оплата у DeepSeek дешевле — иногда в разы, потому что пик Ollama бьёт точно в рабочие часы. Подписка Ollama выигрывает в другом: десяток открытых моделей на одном счёте и предсказуемая плата за месяц. Сравнивать нужно не прайсы, а собственное расписание — в этом споре оно весит больше цены токена.&lt;/p&gt;

&lt;p&gt;Разложу по ситуациям:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;один агент, работа по московскому дню и вечеру — прямая оплата DeepSeek;&lt;/li&gt;
&lt;li&gt;конвейер из субагентов — DeepSeek: у Ollama на Pro три одновременных обращения;&lt;/li&gt;
&lt;li&gt;несколько открытых моделей в одном счёте — подписка Ollama;&lt;/li&gt;
&lt;li&gt;жёсткий потолок расходов в месяц — подписка: 20 долларов платы и 60 включённого расхода;&lt;/li&gt;
&lt;li&gt;ночные и выходные прогоны — DeepSeek вне пика.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Оба маршрута спокойно живут в харнессе рядом: родной &lt;code&gt;deepseek-official&lt;/code&gt; и второй провайдер через совместимый интерфейс. Держать оба и переключаться по часам — не хитрость, а обычная калькуляция: маршрут выбирают не по вкусу, а по расписанию.&lt;/p&gt;

&lt;p&gt;Полная версия: &lt;a href="https://habr.com/ru/articles/1084484/" rel="noopener noreferrer"&gt;https://habr.com/ru/articles/1084484/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Текст подготовлен с использованием искусственного интеллекта.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>productivity</category>
      <category>discuss</category>
    </item>
    <item>
      <title>DeepSeek Harness: агент, который целиком собран из плагинов</title>
      <dc:creator>TechNotes</dc:creator>
      <pubDate>Sun, 20 Sep 2026 12:00:03 +0000</pubDate>
      <link>https://dev.to/technotes/deepseek-harness-aghient-kotoryi-tsielikom-sobran-iz-plaghinov-2bda</link>
      <guid>https://dev.to/technotes/deepseek-harness-aghient-kotoryi-tsielikom-sobran-iz-plaghinov-2bda</guid>
      <description>&lt;p&gt;DeepSeek Harness (dsh) — открытый агентский харнесс от DeepSeek AI. Внешне это просто ещё одна команда для запуска моделей, но внутри — конструктор. Здесь плагинами служит всё: хранение сеансов, песочница, сжатие контекста и даже сама модель.&lt;/p&gt;

&lt;h2&gt;
  
  
  Любая часть системы подключается как плагин
&lt;/h2&gt;

&lt;p&gt;Харнесс работает на Cordis, а его архитектура описана в статье о пространственно-временной композируемости. Идея проста: приложение не пишут монолитным кодом, а собирают из слоёв-патчей. Профиль — это список бандлов плюс ваш &lt;code&gt;cordis.patch.yml&lt;/code&gt;, и каждый новый слой может отменить или дополнить предыдущий. Поэтому команда &lt;code&gt;dsh --dump-config&lt;/code&gt; печатает всё итоговое дерево: сразу видно, какой бандл что добавил.&lt;/p&gt;

&lt;h2&gt;
  
  
  Профили заменяют режимы
&lt;/h2&gt;

&lt;p&gt;Одна и та же команда умеет разное. Разницу задаёт профиль, а не флаг:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;dsh web&lt;/code&gt; — локальный веб-интерфейс на &lt;code&gt;http://127.0.0.1:3080&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;dsh --profile headless "задача"&lt;/code&gt; — один свежий сеанс, ответ в вывод и выход: подходит для CI;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;dsh --profile sdk&lt;/code&gt; — JSON-RPC для внешних клиентов;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;dsh --profile acp&lt;/code&gt; — тот же агент внутри редактора.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Профиль живёт в отдельной папке, а патчи перезагружаются на лету: поправили плагин — изменение подхватилось без перезапуска. Свой набор добавляется командой &lt;code&gt;dsh plugin --profile web add&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Агенты внутри агента
&lt;/h2&gt;

&lt;p&gt;Харнесс умеет запускать других агентов, и это не одна кнопка, а несколько разных механизмов:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;субагенты&lt;/strong&gt; работают в фоне, у каждого свой контекст: родитель продолжает работу и получает результат, когда тот готов;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;наследник контекста&lt;/strong&gt; — субагент, который видит уже состоявшийся разговор, для задач «продолжи и проверь»;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;workflow&lt;/strong&gt; — JavaScript-сценарий, который сам раскидывает десятки субагентов по фазам, конвейером или с барьером: оркестрация описана кодом, а не диалогом;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ralph&lt;/strong&gt; — цикл свежих агентов по одному неизменному заданию, где рабочая папка служит долговременной памятью.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fq7ymru941ot7wzilmlxp.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fq7ymru941ot7wzilmlxp.jpg" alt="Схема: профиль, плагины, агент и суб-агенты" width="700" height="408"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Инструменты подбираются под задачу
&lt;/h2&gt;

&lt;p&gt;Базовый набор тоже собран из плагинов, каждый можно выключить: чтение и правка файлов, поиск по репозиторию, фоновые задания, веб-поиск и загрузка страниц, подключение внешних серверов по MCP, «скиллы» — папки с инструкциями, которые агент подгружает по надобности.&lt;/p&gt;

&lt;h2&gt;
  
  
  Песочница и сеансы
&lt;/h2&gt;

&lt;p&gt;Файловые операции ограничены песочницей: &lt;code&gt;workspace-write&lt;/code&gt; пускает только в рабочую папку. Отказ выглядит не как падение, а как честная пометка «доступ запрещён» — её можно показать человеку и попросить прав побольше. Границу при этом называют заранее: где-то агент спрашивает на каждое опасное действие, а где-то действует сам.&lt;/p&gt;

&lt;p&gt;История сеанса пишется в файл и переживает перезапуск: сеанс можно возобновить, сжать, посмотреть, сколько он съел токенов. Долгая цель живёт в состоянии сеанса, а не в голове модели.&lt;/p&gt;

&lt;h2&gt;
  
  
  Что это меняет для команд
&lt;/h2&gt;

&lt;p&gt;Для небольшой команды DSH снимает вопрос «свой агент или готовый сервис»: готовые сервисы дают фиксированный набор функций, а харнесс — конструктор. Можно начать с одного профиля, а потом добавлять плагины по мере появления задач: сегодня — публикация статей, завтра — разбор конкурентов, послезавтра — автоматическая выгрузка метрик.&lt;/p&gt;

&lt;p&gt;Отдельно стоит сказать про прозрачность. Каждый вызов инструмента, каждое изменение файла и каждый переход состояния попадают в журнал. Это не «логи для отладки», а рабочий инструмент: когда агент ошибается, видно, на каком шаге и почему. И это же делает возможной честную цену: если шаг не понадобился, его видно в журнале, а не в счёте.&lt;/p&gt;

&lt;p&gt;Наконец, DSH не заставляет переезжать целиком. Профиль можно собрать под одну задачу и держать рядом с привычными инструментами: агент по ключу ходит в ваш сервис, забирает результат и возвращает его туда, где вы работаете.&lt;/p&gt;

&lt;h2&gt;
  
  
  Как это выглядит на практике
&lt;/h2&gt;

&lt;p&gt;Мы собрали цепочку из четырёх плагинов:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft3wiepi6r29isogy7wwz.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft3wiepi6r29isogy7wwz.jpg" alt="FrameFactory: бриф и структура" width="700" height="408"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Falvgb178lfkx34qo3gla.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Falvgb178lfkx34qo3gla.jpg" alt="Prompt-Polish: улучшение запроса" width="700" height="408"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjawppqjg2de6xra83qtx.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjawppqjg2de6xra83qtx.jpg" alt="Detector-Remover: снятие AI-отпечатков" width="700" height="408"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Четыре шага: от брифа до человеческого текста&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;FrameFactory&lt;/strong&gt; формирует бриф: темы, заголовки, план статьи и чек-лист.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prompt-Polish&lt;/strong&gt; переписывает черновой запрос, убирая повторы и делая формулировки короче.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Improve-Prompt&lt;/strong&gt; показывает diff до отправки — важные термины и ссылки остаются нетронутыми.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Detector-Remover&lt;/strong&gt; добавляет разговорные обороты и лёгкую стилистическую неровность, чтобы текст реже срабатывал на AI-детекторах.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  С чего начать
&lt;/h2&gt;

&lt;p&gt;Если хочется попробовать DSH на одной задаче, порядок такой. Сначала ставится сам харнесс и запускается &lt;code&gt;dsh web&lt;/code&gt; — этого достаточно, чтобы увидеть базовый набор плагинов. Потом добавляется один-два плагина под задачу: например, для работы с текстом — генерация брифа и полировка запроса. И только после этого имеет смысл думать про субагентов и workflow: они раскрываются там, где задач уже много и они повторяются.&lt;/p&gt;

&lt;p&gt;Важно не пытаться собрать «идеальный профиль» заранее. Профиль — это не конфигурация на годы, а рабочий набор: сегодня он один, завтра вы добавили плагин, послезавтра убрали лишнее. Патчи перезагружаются на лету, так что цена ошибки низкая: неудачный слой можно откатить, а не переписывать всё заново.&lt;/p&gt;

&lt;p&gt;И ещё одно: DSH не прячет модель. Если вам нужен конкретный провайдер или конкретная модель, это тоже плагин. Значит, можно сравнить два варианта на одной и той же задаче, не переписывая агента.&lt;/p&gt;

&lt;h2&gt;
  
  
  Зачем это нужно
&lt;/h2&gt;

&lt;p&gt;DSH — не «CLI для LLM», а среда, где агент собирается под задачу: свои инструменты, свои политики, свои профили. Самое ценное здесь — не набор готовых функций, а то, что любую из них можно заменить своей: харнесс не диктует, как устроен агент, а даёт его собрать. Проект открыт под MIT и находится в developer preview — ломающие изменения обещаны прямо в README.&lt;/p&gt;

&lt;p&gt;Код и документация: &lt;a href="https://github.com/deepseek-ai/DeepSeek-Harness" rel="noopener noreferrer"&gt;github.com/deepseek-ai/DeepSeek-Harness&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Текст подготовлен с использованием искусственного интеллекта.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>opensource</category>
      <category>programming</category>
    </item>
    <item>
      <title>Xiaomi MiMo: триллион параметров, из которых работает четыре процента</title>
      <dc:creator>TechNotes</dc:creator>
      <pubDate>Tue, 15 Sep 2026 18:49:27 +0000</pubDate>
      <link>https://dev.to/technotes/xiaomi-mimo-trillion-paramietrov-iz-kotorykh-rabotaiet-chietyrie-protsienta-45n6</link>
      <guid>https://dev.to/technotes/xiaomi-mimo-trillion-paramietrov-iz-kotorykh-rabotaiet-chietyrie-protsienta-45n6</guid>
      <description>&lt;p&gt;Пока все следили за гонкой закрытых моделей, Xiaomi довела линейку MiMo до триллиона параметров — и опубликовала веса под лицензией MIT. Разбираю, что там внутри и почему это важно.&lt;/p&gt;

&lt;h2&gt;
  
  
  Это не одна модель, а целое семейство
&lt;/h2&gt;

&lt;p&gt;MiMo — не отдельный чекпойнт, а зонтик для нескольких моделей. Под ним выходили рассуждающая &lt;strong&gt;MiMo-7B&lt;/strong&gt; (май 2025), зрение &lt;strong&gt;MiMo-VL&lt;/strong&gt;, аудио &lt;strong&gt;MiMo-Audio&lt;/strong&gt;, модель для роботов и машин &lt;strong&gt;MiMo-Embodied&lt;/strong&gt;, разреженные MoE поколения &lt;strong&gt;V2&lt;/strong&gt; и &lt;strong&gt;V2.5&lt;/strong&gt;. Общего у них — имя и команда, а не архитектура. Полтора года путь выглядел так:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;май 2025 — &lt;strong&gt;MiMo-7B&lt;/strong&gt;, 25 трлн токенов, обучение с нуля ради рассуждений;&lt;/li&gt;
&lt;li&gt;июнь 2025 — &lt;strong&gt;MiMo-VL-7B&lt;/strong&gt;: картинки, видео, OCR, интерфейсы;&lt;/li&gt;
&lt;li&gt;декабрь 2025 — &lt;strong&gt;MiMo-V2-Flash&lt;/strong&gt;: 309 млрд всего, 15 млрд активных;&lt;/li&gt;
&lt;li&gt;апрель 2026 — &lt;strong&gt;V2.5&lt;/strong&gt; и &lt;strong&gt;V2.5-Pro&lt;/strong&gt;, уже под MIT;&lt;/li&gt;
&lt;li&gt;июнь 2026 — &lt;strong&gt;UltraSpeed&lt;/strong&gt; и больше тысячи токенов в секунду.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Работает не только с текстом
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;MiMo-V2.5&lt;/strong&gt; — нативная омнимодальность: 310 млрд параметров всего, 15 млрд активных, плюс визуальный энкодер на 729 млн и аудиоэнкодер на 261 млн. На вход модель принимает текст, картинки, видео и звук, на выходе выдаёт текст и вызовы инструментов. Рядом живут &lt;strong&gt;MiMo-V2.5-ASR&lt;/strong&gt; — распознавание речи под Apache 2.0 — и семейство &lt;strong&gt;TTS&lt;/strong&gt;: синтез, голос по описанию и клонирование по короткой записи.&lt;/p&gt;

&lt;h2&gt;
  
  
  Триллион, из которого реально работает 4%
&lt;/h2&gt;

&lt;p&gt;Флагман &lt;strong&gt;MiMo-V2.5-Pro&lt;/strong&gt; — это разреженная смесь экспертов: &lt;strong&gt;1.02 трлн параметров всего и 42 млрд активных на каждый токен&lt;/strong&gt;. Семьдесят слоёв, 384 эксперта, из которых для каждого токена выбираются восемь. Контекст — до 1 048 576 токенов, веса открыты под MIT.&lt;/p&gt;

&lt;h2&gt;
  
  
  Внимание с окном в 128 токенов
&lt;/h2&gt;

&lt;p&gt;Самое интересное — как удешевили длинный контекст. &lt;strong&gt;60 слоёв из 70&lt;/strong&gt; смотрят только на 128 предыдущих токенов, и лишь &lt;strong&gt;10 — на весь контекст&lt;/strong&gt;. Чтобы дешёвое окно не роняло качество, добавили обучаемый «сток внимания»: голова вправе не тратить вероятность на бесполезных соседей и «сбросить» её в пустоту.&lt;/p&gt;

&lt;h2&gt;
  
  
  Учителей много, ученица одна
&lt;/h2&gt;

&lt;p&gt;Пост-тренировка держится на &lt;strong&gt;MOPD&lt;/strong&gt;: несколько моделей-специалистов — математика, код, терминал, поиск, безопасность — дают токенные подсказки одной ученице &lt;strong&gt;на её собственных траекториях&lt;/strong&gt;, а не на чужих ответах. Рядом работает &lt;strong&gt;R3&lt;/strong&gt;: маршрутизация экспертов, записанная на инференсе, повторяется при обучении — без этого обучение MoE разъезжается.&lt;/p&gt;

&lt;h2&gt;
  
  
  Тысяча токенов в секунду
&lt;/h2&gt;

&lt;p&gt;Конфигурация &lt;strong&gt;UltraSpeed&lt;/strong&gt;: веса экспертов сжимают в MXFP4, добавляют спекулятивное декодирование DFlash и «живучие» ядра TileRT. На одном узле из восьми GPU получается больше тысячи токенов в секунду. Триллион весов в четыре бита — это около 510 ГБ, и всё это надо где-то держать.&lt;/p&gt;

&lt;h2&gt;
  
  
  Что это значит
&lt;/h2&gt;

&lt;p&gt;Xiaomi показала: открытые веса — уже не удел семимиллиардных моделей. Но &lt;strong&gt;«open-weight» точнее, чем «open source»&lt;/strong&gt;: веса есть, а данных и всего пайплайна обучения — нет. И ещё одно: миллион токенов в карточке не обещает одинаковой точности на всей длине — в GraphWalks модель держала ненулевой результат на миллионе, а прошлое поколение там резко проседало. Хостинг V2 Xiaomi погасила 30 июня 2026 года и попросила клиентов перейти на V2.5, но скачанные веса это не отменяет.&lt;/p&gt;

&lt;p&gt;Модель и карточка: &lt;a href="https://mimo.xiaomi.com/mimo-v2-5-pro" rel="noopener noreferrer"&gt;mimo.xiaomi.com&lt;/a&gt;. Код и веса: &lt;a href="https://github.com/xiaomimimo/MiMo-V2-Flash" rel="noopener noreferrer"&gt;github.com/XiaomiMiMo&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Полная версия: &lt;a href="https://habr.com/ru/articles/1082686/" rel="noopener noreferrer"&gt;https://habr.com/ru/articles/1082686/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Текст подготовлен с использованием искусственного интеллекта.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>opensource</category>
      <category>llm</category>
    </item>
    <item>
      <title>Bluetooth на хакинтоше: что купить и как подключить</title>
      <dc:creator>TechNotes</dc:creator>
      <pubDate>Sun, 13 Sep 2026 01:36:00 +0000</pubDate>
      <link>https://dev.to/technotes/bluetooth-na-khakintoshie-chto-kupit-i-kak-podkliuchit-4834</link>
      <guid>https://dev.to/technotes/bluetooth-na-khakintoshie-chto-kupit-i-kak-podkliuchit-4834</guid>
      <description>&lt;p&gt;Конфигурация такая: i5-13600KF, Gigabyte Z690 UD DDR4, RX 5700 XT, macOS 13.4.1, OpenCore 1.0.7, SMBIOS iMacPro1,1. На плате нет встроенного блютуза — как и на большинстве десктопных сборок. Адаптер придётся покупать отдельно, и вопрос только в том, какой. Граница между «заведётся сразу» и «не заработает никогда» проходит по чипу — ни цена, ни настройки её не сдвигают.&lt;/p&gt;

&lt;h2&gt;
  
  
  Главное правило: блютуз выбирается чипом
&lt;/h2&gt;

&lt;p&gt;С Monterey работа с блютузом переехала из ядра в пользовательское пространство. Устройство отбирает демон &lt;code&gt;bluetoothd&lt;/code&gt; через модуль &lt;code&gt;bm3_usb&lt;/code&gt;, а перечень поддерживаемого зашит прямо в его бинарник.&lt;/p&gt;

&lt;p&gt;Это подтверждается замером, а не только разговорами на форумах:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ioreg &lt;span class="nt"&gt;-w0&lt;/span&gt; | &lt;span class="nb"&gt;grep &lt;/span&gt;USBTransport
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;В системе загружены все транспорты блютуза — и каждый висит с пометкой &lt;code&gt;!matched&lt;/code&gt;. Кто именно их предоставляет, видно из вывода:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CSRBluetoothHostControllerUSBTransport      | provider: IOResources
BroadcomBluetoothHostControllerUSBTransport | provider: IOResources
IOBluetoothHostControllerUSBTransport       | provider: IOResources
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Когда в поле провайдера стоит &lt;code&gt;IOResources&lt;/code&gt;, а не &lt;code&gt;IOUSBHostDevice&lt;/code&gt;, эти транспорты с USB-устройствами не сопоставляются вообще — никакие идентификаторы ситуации не изменят. Если прочесать все кексты в &lt;code&gt;/System/Library/Extensions&lt;/code&gt;, под блютузом обнаружатся ровно две персоналии с USB-провайдером, обе внутри &lt;code&gt;IOBluetoothFamily&lt;/code&gt;: «Bluetooth Entitlement» с &lt;code&gt;idVendor: 1452&lt;/code&gt; (это Apple) и конкретный хаб из Mac Pro 6,1.&lt;/p&gt;

&lt;p&gt;Из этого следуют два вывода, которые сберегут вам вечер:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Инструкции в духе «откройте &lt;code&gt;IOBluetoothFamily.kext/…/Info.plist&lt;/code&gt; и впишите свои VID и PID» — а они по-прежнему выпадают первыми в поиске — не работают по двум причинам: отбором устройства теперь занимается демон, а системный том начиная с Big Sur запечатан, так что редактировать там нечего. Именно поэтому и появился &lt;code&gt;BlueToolFixup&lt;/code&gt;, который правит память, а не файлы.&lt;/li&gt;
&lt;li&gt;Неподходящий чип не настроить. Он либо есть в списке демона, либо нет; промежуточного состояния не существует, и карта портов его не создаст.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Что купить
&lt;/h2&gt;

&lt;p&gt;Рабочих вариантов четыре. Сразу уточню, откуда данные: лично я пока ни один из них не проверял — замена ещё в пути, — поэтому у каждой строки указан источник.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Вариант&lt;/th&gt;
&lt;th&gt;Чип&lt;/th&gt;
&lt;th&gt;Что ставить к нему&lt;/th&gt;
&lt;th&gt;Откуда знаю&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;USB-донгл ASUS USB-BT400 и клоны&lt;/td&gt;
&lt;td&gt;Broadcom BCM20702A0&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;BlueToolFixup&lt;/code&gt; + &lt;code&gt;BrcmPatchRAM3&lt;/code&gt; + &lt;code&gt;BrcmFirmwareData&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Bluetooth 4.0, самый массовый рабочий вариант у хакинтошников&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;USB-донгл Laird BT851 (&lt;code&gt;04b4:f901&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;Cypress CYW20704&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;BlueToolFixup&lt;/code&gt;, прошивка зашита в донгл&lt;/td&gt;
&lt;td&gt;отчёт на tonymacx86, август 2022, macOS 12.5: трекпад, AirPods, Handoff работают, AirDrop у автора не поднялся&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Карта M.2 Intel AX200 / AX210 через переходник&lt;/td&gt;
&lt;td&gt;Intel&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;IntelBluetoothFirmware&lt;/code&gt; + &lt;code&gt;IntelBTPatcher&lt;/code&gt;, Wi-Fi закрывает &lt;code&gt;AirportItlwm&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;проект OpenIntelWireless, сам не проверял&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Карта BCM94360CD на переходнике PCIe&lt;/td&gt;
&lt;td&gt;Broadcom&lt;/td&gt;
&lt;td&gt;почти ничего, видится родной&lt;/td&gt;
&lt;td&gt;с ним работают Continuity и AirDrop, но стоит заметно дороже&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Как выбирать между ними:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Нужны только наушники, клавиатура и мышь&lt;/strong&gt; — берите донгл на BCM20702A0. Это самый дешёвый путь, который точно заканчивается работающим блютузом, и половина сборок живёт именно на нём.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Нужны Handoff, AirDrop, разблокировка часами&lt;/strong&gt; — только карта Broadcom с родными идентификаторами. Донгл этого не даст никогда: Continuity опирается на связку Wi-Fi и блютуза с одной поддерживаемой карты, так что блютуз отдельно проблему не решает. Это по руководству Dortania, своего замера у меня нет.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;В сборке нет и Wi-Fi&lt;/strong&gt; — AX210 закрывает обе задачи одной картой, ценой Continuity. Мне интереснее как раз этот вариант: в EFI уже лежит выключенный &lt;code&gt;AirportItlwm&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Чего не брать: самые дешёвые донглы на CSR, &lt;code&gt;0a12:0001&lt;/code&gt;. macOS 13 отбраковывает их на этапе отбора устройства — проверено на этой машине, демон находит донгл, читает идентификаторы и следующей же строкой заявляет, что получить их не может:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[bm3_usb][GetProductAndVendorID] -- Found USB Device :
        idVendor = 0x0A12   idProduct = 0x0001   deviceClass = 0xE0
[bm3_usb][IOThreadFunc] -- USB -- Can't obtain vendorID and productID -- try again
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Дальше цикл, &lt;code&gt;Transport layer initialization failed&lt;/code&gt; и десятки перезапусков демона подряд. Ни кексты, ни карта портов, ни снятие с устройства чужих процессов отказ не двигают — он слово в слово тот же. Опознать такой донгл можно ещё в отзывах с фотографиями: у устройства, заявленного как Bluetooth 4.0, в свойствах стоит строка продукта &lt;code&gt;BT2.0&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Три условия рабочего блютуза
&lt;/h2&gt;

&lt;p&gt;Правильный чип — только первое из трёх. Остальные два делаются руками, и без них не заведётся даже верное железо.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Кекст ****&lt;/strong&gt;&lt;strong&gt;&lt;code&gt;BlueToolFixup&lt;/code&gt;&lt;/strong&gt; обязателен всем на macOS 12 и новее. Лежит в релизах BrcmPatchRAM, кладётся в &lt;code&gt;EFI/OC/Kexts&lt;/code&gt; и прописывается в &lt;code&gt;config.plist&lt;/code&gt; последней записью, после Lilu, с &lt;code&gt;MinKernel 21.0.0&lt;/code&gt;. Без него сторонние контроллеры игнорируются молча — ни ошибки, ни строки в журнале.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Прошивочные кексты по чипу.&lt;/strong&gt; Броадкомам, которым прошивка заливается при каждом старте, нужны &lt;code&gt;BrcmPatchRAM3&lt;/code&gt; и &lt;code&gt;BrcmFirmwareData&lt;/code&gt;. Интелам — &lt;code&gt;IntelBluetoothFirmware&lt;/code&gt; и &lt;code&gt;IntelBTPatcher&lt;/code&gt;. Cypress и родным картам Broadcom дополнительно не нужно ничего.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Порт, помеченный внутренним.&lt;/strong&gt; Контроллер блютуза macOS берёт только с порта, у которого в карте портов стоит &lt;code&gt;UsbConnector = 255&lt;/code&gt;. В моём &lt;code&gt;UTBMap.kext&lt;/code&gt; это правится одним значением: у порта &lt;code&gt;HS04&lt;/code&gt;, куда воткнут адаптер, &lt;code&gt;3&lt;/code&gt; меняется на &lt;code&gt;255&lt;/code&gt;. Подействовало сразу — у устройства появилось &lt;code&gt;Built-In: Yes&lt;/code&gt;, транспорт в профайлере сменился с &lt;code&gt;UART&lt;/code&gt; на &lt;code&gt;USB&lt;/code&gt;. И втыкать стоит в USB 2.0: блютуз-адаптеры — устройства Full Speed, скорость им не нужна, а перечисление на 2.0 ровнее.&lt;/p&gt;

&lt;p&gt;После правок — &lt;code&gt;ocvalidate&lt;/code&gt; на конфиг и перезагрузка.&lt;/p&gt;

&lt;h2&gt;
  
  
  Как проверить за пять минут
&lt;/h2&gt;

&lt;p&gt;Три команды отвечают на вопрос «почему не работает» почти всегда. Вот их вывод на моей машине прямо сейчас — блютуз-железа в ней нет, и видно это по второму кадру:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe2e66klv3r4nzzut3bof.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe2e66klv3r4nzzut3bof.jpeg" alt="kextstat: BlueToolFixup 2.7.2 и Lilu 1.7.2 загружены" width="800" height="185"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffzievzcl6h9akcqjf3zy.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffzievzcl6h9akcqjf3zy.jpeg" alt="system_profiler: Address NULL, State Off, чипсет BCM_4350C2 из SMBIOS" width="799" height="305"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqndu0pldy3ogl607km1o.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqndu0pldy3ogl607km1o.jpeg" alt="ioreg: четыре транспорта блютуза, все с пометкой !matched" width="799" height="211"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Три команды: кекст, состояние контроллера, транспорты&lt;/p&gt;

&lt;p&gt;Первая команда — жив ли кекст. &lt;code&gt;kextstat | grep -iE "lilu|bluetool"&lt;/code&gt;: если BlueToolFixup в списке нет, дальше идти незачем, дело в конфиге, а не в железе.&lt;/p&gt;

&lt;p&gt;Вторая — состояние контроллера, &lt;code&gt;system_profiler SPBluetoothDataType&lt;/code&gt;. Смотреть надо на две строки. Работает — настоящий &lt;code&gt;Address&lt;/code&gt; и &lt;code&gt;State: On&lt;/code&gt;. Не работает — &lt;code&gt;Address: NULL&lt;/code&gt; и &lt;code&gt;State: Off&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;А вот строка, которая обманывает многих: &lt;code&gt;Chipset: BCM_4350C2&lt;/code&gt;. Она показывается даже тогда, когда никакого блютуз-железа в машине нет вовсе — как на кадре выше. Это чип настоящего iMac Pro, зашитый в &lt;code&gt;bluetoothd&lt;/code&gt;, который смотрит на SMBIOS; ACPI-устройства за ней нет. Не радуйтесь ей и не подбирайте под неё кексты.&lt;/p&gt;

&lt;p&gt;Третья — транспорты в &lt;code&gt;ioreg&lt;/code&gt;. Пока у нужного стоит &lt;code&gt;!matched&lt;/code&gt;, контроллер не взят. Обратите внимание: транспортов там четыре, и загружены они всегда — само их присутствие ничего не обещает.&lt;/p&gt;

&lt;p&gt;Подробности всегда в журнале демона. В zsh &lt;code&gt;log&lt;/code&gt; — встроенная команда, звать надо по полному пути:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/usr/bin/log show &lt;span class="nt"&gt;--last&lt;/span&gt; 5m &lt;span class="nt"&gt;--predicate&lt;/span&gt; &lt;span class="s1"&gt;'process == "bluetoothd"'&lt;/span&gt; &lt;span class="nt"&gt;--style&lt;/span&gt; compact
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Строка &lt;code&gt;Found USB Device&lt;/code&gt; там означает, что до отбора дело дошло; &lt;code&gt;Transport layer initialization failed&lt;/code&gt; — что чип не взяли.&lt;/p&gt;

&lt;h2&gt;
  
  
  Чем закончилось у меня
&lt;/h2&gt;

&lt;p&gt;Честно: блютуза в машине пока нет — кадры выше это и показывают. Донгл, купленный наугад на маркетплейсе, оказался тем самым CSR и поехал в мусор, карта AX210 ещё едет. Приедет — допишу, что из этого вышло.&lt;/p&gt;

&lt;p&gt;Если у вас на Ventura или Sonoma работает USB-донгл, напишите в комментариях, какой именно — интересны чип и идентификаторы:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;system_profiler SPUSBDataType | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-A&lt;/span&gt; 6 &lt;span class="nt"&gt;-i&lt;/span&gt; bluetooth
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Соберу из ответов список проверенного железа и вынесу в конец статьи. Примерно этого списка мне и не хватало в начале.&lt;/p&gt;

&lt;p&gt;Текст подготовлен с использованием искусственного интеллекта.&lt;/p&gt;

</description>
      <category>linux</category>
      <category>tutorial</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Фотографии, которых никогда не было</title>
      <dc:creator>TechNotes</dc:creator>
      <pubDate>Mon, 31 Aug 2026 07:18:58 +0000</pubDate>
      <link>https://dev.to/technotes/fotoghrafii-kotorykh-nikoghda-nie-bylo-2gck</link>
      <guid>https://dev.to/technotes/fotoghrafii-kotorykh-nikoghda-nie-bylo-2gck</guid>
      <description>&lt;p&gt;Каждый день в сеть выкладывают миллионы снимков, и всё чаще среди них попадаются кадры, где фотограф не нажимал на кнопку — потому что ни камеры, ни места съёмки никогда не существовало. Долина на фото ниже выглядит как кадр из отпуска, но это работа нейросети: модель собрала её из миллиардов чужих пикселей и собственного представления о том, как выглядит «живописная долина после полудня».&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Flocalhost%3A9000%2Fautopost-assets%2Fassets%2F9c%2F5c%2F9c5c5fadbd89917a629b671e5e5f4578899a06225da2f6988fea0320f2ebba39" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Flocalhost%3A9000%2Fautopost-assets%2Fassets%2F9c%2F5c%2F9c5c5fadbd89917a629b671e5e5f4578899a06225da2f6988fea0320f2ebba39" alt="Сгенерированный нейросетью горный пейзаж с долиной и рекой" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Изображение: &lt;a href="https://commons.wikimedia.org/wiki/Category:AI-generated_images" rel="noopener noreferrer"&gt;Wikimedia Commons&lt;/a&gt;, общественное достояние, сгенерировано Stable Diffusion.&lt;/p&gt;

&lt;h2&gt;
  
  
  Как отличить выдумку от снимка
&lt;/h2&gt;

&lt;p&gt;Главный признак — &lt;strong&gt;слишком гладкое правдоподобие&lt;/strong&gt;. Настоящая фотография всегда несёт случайный мусор: провода в углу кадра, смазанного прохожего, пересвеченное небо. Нейросеть же рисует мир, в котором никто не помешал кадру состояться. Присмотритесь к деталям:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;текстуры повторяются: трава и листва местами выглядят как один и тот же штамп;&lt;/li&gt;
&lt;li&gt;геометрия плывёт: линии заборов, перил и крыш изгибаются там, где обязаны быть прямыми;&lt;/li&gt;
&lt;li&gt;свет красив, но невозможен: тени от соседних предметов падают в разные стороны.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ни один признак по отдельности не приговор: странные пальцы встречаются и на честных снимках, а невозможно красивый свет — у терпеливых пейзажистов. Работает сумма: чем больше мелких странностей собирается в одном кадре, тем выше шанс, что перед вами генерация.&lt;/p&gt;

&lt;h2&gt;
  
  
  Один запрос — три разных леса
&lt;/h2&gt;

&lt;p&gt;Насколько результат зависит от формулировки, видно по серии ниже. Автор просил у модели одно и то же: лес и синтоистское святилище. Менялся только негативный промт — список того, что модели рисовать запрещено. Убрал «зелёные деревья» — лес стал осенним. Запретил «круглые камни» — дорожка из валунов превратилась в аккуратную брусчатку.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Flocalhost%3A9000%2Fautopost-assets%2Fassets%2F27%2Fed%2F27ede06d9311110a4afe34a1b5cca2fe623e25bc06b9bc9145a95b7097e4e377" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Flocalhost%3A9000%2Fautopost-assets%2Fassets%2F27%2Fed%2F27ede06d9311110a4afe34a1b5cca2fe623e25bc06b9bc9145a95b7097e4e377" alt="Лес с синтоистским святилищем — базовый запрос без ограничений" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Flocalhost%3A9000%2Fautopost-assets%2Fassets%2F6d%2F70%2F6d7084fe87fe36a51d17704484b7d1ef1f9ea78980c5928b225509e50a226d65" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Flocalhost%3A9000%2Fautopost-assets%2Fassets%2F6d%2F70%2F6d7084fe87fe36a51d17704484b7d1ef1f9ea78980c5928b225509e50a226d65" alt="Та же сцена с запретом на зелёные деревья — осенний лес" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Flocalhost%3A9000%2Fautopost-assets%2Fassets%2F20%2F4d%2F204d2537e31c78f31901a9af346b2a9b394ea9f908f254721248669192e0acf4" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Flocalhost%3A9000%2Fautopost-assets%2Fassets%2F20%2F4d%2F204d2537e31c78f31901a9af346b2a9b394ea9f908f254721248669192e0acf4" alt="Та же сцена с запретом на круглые камни — дорожка из брусчатки" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Один запрос, три негативных промта: без ограничений, без зелёных деревьев, без круглых камней&lt;/p&gt;

&lt;p&gt;Все пейзажи в этой заметке — общественное достояние, их сгенерировали энтузиасты и выложили в открытый архив. Ещё год-два, и отличать такие кадры на глаз станет невозможно. Тогда вопрос «настоящее ли это фото» будет решать не зрение, а привычка проверять источник — та же, что давно спасает нас от выдуманных цитат и переписанных заголовков.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>photography</category>
    </item>
    <item>
      <title>Четыре шага из шума: как рисует нейросеть</title>
      <dc:creator>TechNotes</dc:creator>
      <pubDate>Fri, 28 Aug 2026 00:27:14 +0000</pubDate>
      <link>https://dev.to/technotes/chietyrie-shagha-iz-shuma-kak-risuiet-nieirosiet-4ln2</link>
      <guid>https://dev.to/technotes/chietyrie-shagha-iz-shuma-kak-risuiet-nieirosiet-4ln2</guid>
      <description>&lt;p&gt;Попросите нейросеть показать кота-космонавта — и через десять секунд получите картинку, хотя такой фотографии не существует. Генеративные модели не ищут готовое изображение и не собирают коллаж из чужих кусков. Они рисуют с нуля — из чистого случайного шума. Рассказываем, как это работает, без единой формулы.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Flocalhost%3A9000%2Fautopost-assets%2Fassets%2F39%2Fdb%2F39db4f8765b1b75cd197b296da076b961bc2aa889a1eecf63fd3824f36f035fd" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Flocalhost%3A9000%2Fautopost-assets%2Fassets%2F39%2Fdb%2F39db4f8765b1b75cd197b296da076b961bc2aa889a1eecf63fd3824f36f035fd" alt="Нейросеть изнутри: простые узлы и связи между ними — вся «магия» складывается из миллионов таких" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Диффузионную модель обучают задом наперёд. Берут миллионы настоящих фотографий и постепенно засоряют их шумом, пока не останется только рябь. Модель следит за каждым шагом порчи и запоминает, как его обратить вспять. Генерация — та же порча, запущенная в обратную сторону. Получив случайную рябь и текстовую подсказку, модель шаг за шагом убирает шум и проявляет то, что вы просили. В слайдере ниже — четыре стадии одного кадра: от помех до заката в горах.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Flocalhost%3A9000%2Fautopost-assets%2Fassets%2F9e%2Fcb%2F9ecb3208ff6ce4fe00e9c45a25ddaf055a6b3dfd024ec534d2c47142331953d2" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Flocalhost%3A9000%2Fautopost-assets%2Fassets%2F9e%2Fcb%2F9ecb3208ff6ce4fe00e9c45a25ddaf055a6b3dfd024ec534d2c47142331953d2" alt="Шаг 1: случайный шум — точка старта" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Flocalhost%3A9000%2Fautopost-assets%2Fassets%2F93%2F58%2F9358de88a7737eb983e0156cb5727d7a75acb77a6051f93ecc11982f56bb4cf6" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Flocalhost%3A9000%2Fautopost-assets%2Fassets%2F93%2F58%2F9358de88a7737eb983e0156cb5727d7a75acb77a6051f93ecc11982f56bb4cf6" alt="Шаг 2: сквозь рябь проступает силуэт гор" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Flocalhost%3A9000%2Fautopost-assets%2Fassets%2F03%2F8b%2F038bd0541b179e08dc9f0cf49986f81ef39024aefec7e672cdff8dbb832a18f0" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Flocalhost%3A9000%2Fautopost-assets%2Fassets%2F03%2F8b%2F038bd0541b179e08dc9f0cf49986f81ef39024aefec7e672cdff8dbb832a18f0" alt="Шаг 3: детали почти на месте" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Flocalhost%3A9000%2Fautopost-assets%2Fassets%2Fde%2Fcd%2Fdecd23f8a23d7f14d14da704a70555c4751ea70a9b4c4592b9068beb0129e84f" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Flocalhost%3A9000%2Fautopost-assets%2Fassets%2Fde%2Fcd%2Fdecd23f8a23d7f14d14da704a70555c4751ea70a9b4c4592b9068beb0129e84f" alt="Шаг 4: готовый кадр" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Именно поэтому два одинаковых ответа у нейросети не бывают: другой стартовый шум — другая картинка. И поэтому она путается в деталях вроде пальцев: модель не знает анатомии, она лишь помнит, как выглядят миллионы рук одновременно. Шум — это мрамор, из которого можно высечь что угодно. А ваша фраза — резец в руках скульптора.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
