<?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 напрямую или через подписку 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>
