<?xml version="1.0" encoding="utf-8" ?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:tt="http://teletype.in/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"><title>Alexandr Fadeev</title><subtitle>Меня зовут Саша — я CTO в IT проектах и работаю в геймдеве.
Пишу свой опыт работы в IT, про обучение, саморазвитие, продуктивность и здоровье.</subtitle><author><name>Alexandr Fadeev</name></author><id>https://teletype.in/atom/afadeev</id><link rel="self" type="application/atom+xml" href="https://teletype.in/atom/afadeev?offset=0"></link><link rel="alternate" type="text/html" href="https://blog.afadeev.com/?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=afadeev"></link><link rel="next" type="application/rss+xml" href="https://teletype.in/atom/afadeev?offset=10"></link><link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></link><updated>2026-09-04T01:35:58.576Z</updated><entry><id>afadeev:cB49siUY0Xm</id><link rel="alternate" type="text/html" href="https://blog.afadeev.com/cB49siUY0Xm?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=afadeev"></link><title>📺 Ютюб Премиум на год за тысячу рублей</title><published>2026-09-02T16:39:32.616Z</published><updated>2026-09-02T16:39:32.616Z</updated><summary type="html">Долгое время у меня Premium висел на российском регионе, поэтому стоил какие-то совсем смешные деньги. Но спустя несколько лет YouTube наконец сбросил регион и зафорсил покупать подписку по европейской цене — а это между прочим 15 евро в месяц вместо пары, которые я платил раньше. Я долго пытался поменять регион обратно или хотя бы выбрать какую-нибудь страну подешевле. Перепробовал кучу способов, но по факту это оказалось тупо невозможно, можете даже не тратить время. Не знаю, почему сразу н...</summary><content type="html">
  &lt;p id=&quot;6SLc&quot;&gt;Долгое время у меня Premium висел на российском регионе, поэтому стоил какие-то совсем смешные деньги. Но спустя несколько лет YouTube наконец сбросил регион и зафорсил покупать подписку по европейской цене — а это между прочим 15 евро в месяц вместо пары, которые я платил раньше.&lt;/p&gt;
  &lt;p id=&quot;bXSH&quot;&gt;Я долго пытался поменять регион обратно или хотя бы выбрать какую-нибудь страну подешевле. Перепробовал кучу способов, но по факту это оказалось тупо невозможно, можете даже не тратить время.&lt;/p&gt;
  &lt;p id=&quot;8eVC&quot;&gt;Не знаю, почему сразу не вспомнил про Plati.Market (plati.ru). Я там уже кучу раз покупал игры, подписки и прочие штуки значительно дешевле. Решение нашлось буквально за несколько минут.&lt;/p&gt;
  &lt;p id=&quot;y165&quot;&gt;💸 Покупал &lt;a href=&quot;https://plati.market/itm/youtube-premium-1-12-month-individual-link-no-card-required-no-login-required/6001712&quot; target=&quot;_blank&quot;&gt;вот этот конкретный лот&lt;/a&gt; примерно за тысячу рублей на год (€10). Сейчас он временно недоступен, но в &lt;a href=&quot;https://plati.market/cat/youtube/24279/&quot; target=&quot;_blank&quot;&gt;категории YouTube&lt;/a&gt; полно аналогичных предложений.&lt;/p&gt;
  &lt;p id=&quot;f5YM&quot;&gt;После оплаты прислали ссылку для активации. Перешел по ней с одного из своих YouTube-аккаунтов — и Premium сразу заработал. Никаких передач логина и пароля, привязки чужих карт или гемора с регионом.&lt;/p&gt;
  &lt;p id=&quot;EOun&quot;&gt;🇨🇭 Как оказалось, подписка активировалась через какую-то промоакцию швейцарского интернет-провайдера Swisscom. Прем работает уже больше пары месяцев.&lt;/p&gt;
  &lt;p id=&quot;FyAA&quot;&gt;Конечно, теоретически такую подписку могут отозвать или вообще забанить аккаунт. Но выглядит это маловероятно: по сути, аккаунт просто активировал чужой промокод в официальной акции. Даже если подписка внезапно отвалится, продавцы изи заменяют или возвращают деньги. В общем, рекомендую.&lt;/p&gt;
  &lt;p id=&quot;fUDP&quot;&gt;&lt;a href=&quot;https://t.me/digital_ponos&quot; target=&quot;_blank&quot;&gt;Подпишешься на мой Telegram?&lt;/a&gt;&lt;/p&gt;

</content></entry><entry><id>afadeev:FLyAQuBfFh-</id><link rel="alternate" type="text/html" href="https://blog.afadeev.com/FLyAQuBfFh-?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=afadeev"></link><title>🎙 Локальные диктовалки для Mac</title><published>2026-08-31T16:39:09.755Z</published><updated>2026-08-31T16:39:09.755Z</updated><summary type="html">Для голосовых заметок я пользуюсь Voicenotes. Сервис хороший, но рекомендовать его я не буду, своих денег только ради транскриайба он не стоит. Вообще платить тут не нужно, ведь хватает бесплатных альтернатив Wispr Flow и другим сервисам. 🎤 Самым интересным сейчас выглядит FluidVoice. Это нативная open source апка для macOS с live preview, историей, настройками для разных приложений и словарем, который учится на исправлениях. Есть режимы для переписывания выделенного текста и выполнения голос...</summary><content type="html">
  &lt;p id=&quot;q5St&quot;&gt;Для голосовых заметок я пользуюсь &lt;a href=&quot;https://voicenotes.com/&quot; target=&quot;_blank&quot;&gt;Voicenotes&lt;/a&gt;. Сервис хороший, но рекомендовать его я не буду, своих денег только ради транскриайба он не стоит. Вообще платить тут не нужно, ведь хватает бесплатных альтернатив Wispr Flow и другим сервисам.&lt;/p&gt;
  &lt;p id=&quot;VrSm&quot;&gt;🎤 Самым интересным сейчас выглядит &lt;a href=&quot;https://github.com/altic-dev/FluidVoice&quot; target=&quot;_blank&quot;&gt;FluidVoice&lt;/a&gt;. Это нативная open source апка для macOS с live preview, историей, настройками для разных приложений и словарем, который учится на исправлениях. Есть режимы для переписывания выделенного текста и выполнения голосовых команд.&lt;/p&gt;
  &lt;p id=&quot;pJjH&quot;&gt;🤓 &lt;a href=&quot;https://github.com/TypeWhisper/typewhisper-mac&quot; target=&quot;_blank&quot;&gt;TypeWhisper&lt;/a&gt; — самое задротное решение. Здесь можно собирать отдельные воркфлоу для приложений и сайтов: в Terminal оставлять почти сырой транскрипт, в Slack чистить текст, а в IDE сохранять технические термины. Поддерживаются локальные и облачные LLM, постобработка, словари, сниппеты и т.п. Но и возиться с настройками придется больше.&lt;/p&gt;
  &lt;p id=&quot;L064&quot;&gt;Сам &lt;a href=&quot;https://github.com/cjpais/Handy&quot; target=&quot;_blank&quot;&gt;Handy&lt;/a&gt; никуда не делся. Самый популярный полностью локальный Whisper или Parakeet, push-to-talk, вставка текста в активное поле и поддержка разных ОС. Я им сам долго пользовался. Он делает свою одну задачу, но без прикольных фич.&lt;/p&gt;
  &lt;p id=&quot;8rsT&quot;&gt;🆓 &lt;a href=&quot;https://spokenly.app/&quot; target=&quot;_blank&quot;&gt;Spokenly&lt;/a&gt; закрытое, но локальные LLM бесплатны, работают офлайн и без лимитов. Использование собственных API-ключей тоже бесплатное. По отзывам у него очень неплохая скорость работы.&lt;/p&gt;
  &lt;p id=&quot;580D&quot;&gt;В общем, платить за нормальную диктовку уже необязательно. FluidVoice выглядит самым универсальным вариантом, TypeWhisper — самым настраиваемым, а Handy остается хорошим выбором, если нужен простой push-to-talk без лишних фич.&lt;/p&gt;
  &lt;p id=&quot;9wsE&quot;&gt;&lt;a href=&quot;https://t.me/digital_ponos&quot; target=&quot;_blank&quot;&gt;Подпишешься на мой Telegram?&lt;/a&gt;&lt;/p&gt;

</content></entry><entry><id>afadeev:sVGo2xszaKf</id><link rel="alternate" type="text/html" href="https://blog.afadeev.com/sVGo2xszaKf?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=afadeev"></link><title>😴 Самый дешевый апгрейд сна</title><published>2026-08-31T15:41:53.526Z</published><updated>2026-08-31T15:41:53.526Z</updated><summary type="html">Я всегда считал маски для сна какой-то бесполезной херней. Неудобные, давят на глаза, сползают и в целом выглядят как вещь, которая нужна только в самолете, да и то с натяжкой. Но внезапно оказалось, что эта максимально примитивная и глупая штука реально очень круто работает. Мне маска помогает быстрее заснуть, меньше просыпаться от света и в целом заметно лучше спать. Именно простота эффекта и подкупает. 🥷 Причем не нужен никакой оверпрайснутый биохакерский девайс. Типа электрических масок,...</summary><content type="html">
  &lt;p id=&quot;hvr1&quot;&gt;Я всегда считал маски для сна какой-то бесполезной херней. Неудобные, давят на глаза, сползают и в целом выглядят как вещь, которая нужна только в самолете, да и то с натяжкой.&lt;/p&gt;
  &lt;p id=&quot;xnnQ&quot;&gt;Но внезапно оказалось, что эта максимально примитивная и глупая штука реально очень круто работает. Мне маска помогает быстрее заснуть, меньше просыпаться от света и в целом заметно лучше спать. Именно простота эффекта и подкупает.&lt;/p&gt;
  &lt;p id=&quot;ti4M&quot;&gt;🥷 Причем не нужен никакой оверпрайснутый биохакерский девайс. Типа электрических масок, с охлаждением, гигантскими поролоновыми вставками и прочими хитровыебанными конструкциями. Я отлично спал даже в обычной маске, которую мне дали в экономе в самолете.&lt;/p&gt;
  &lt;p id=&quot;cvSA&quot;&gt;Нужно просто найти ту, в которой будет комфортно. Она совсем не обязательно должна быть дорогой: пробуешь несколько разных и оставляешь ту, которая не давит, не раздражает и не сползает.&lt;/p&gt;
  &lt;p id=&quot;lglb&quot;&gt;🌅 Единственный минус — первое время может стать тяжелее просыпаться утром. Маска продолжает изображать глубокую ночь, даже когда вокруг уже светло. Но если вставать примерно в одно время, организм постепенно подстроится.&lt;/p&gt;
  &lt;p id=&quot;7ynB&quot;&gt;Короче, казалось бы какая-то бессмысленная фигня, от которой вообще ничего не ожидаешь. И именно поэтому я настолько удивлен тем, насколько хорошо она работает. Один из самых дешевых и эффективных апгрейдов сна, которые можно попробовать.&lt;/p&gt;
  &lt;p id=&quot;Muw9&quot;&gt;&lt;a href=&quot;https://t.me/digital_ponos&quot; target=&quot;_blank&quot;&gt;Подпишешься на мой Telegram?&lt;/a&gt;&lt;/p&gt;

</content></entry><entry><id>afadeev:kNOSrrbFuX1</id><link rel="alternate" type="text/html" href="https://blog.afadeev.com/kNOSrrbFuX1?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=afadeev"></link><title>🧩 Как переключаться между аккаунтами Codex и Claude</title><published>2026-08-31T15:14:52.259Z</published><updated>2026-08-31T15:14:52.259Z</updated><summary type="html">В последнее время слишком быстро высасываются квоты Codex-а. Резеты происходят уже не часто, а работать надо 🙃 Поэтому наконец мне понадобилось нормально переключаться между сервисами и подписками, не занимаясь постоянным logout/login. По совету из чатиков поставил Quotio — приложение для управления квотами и аккаунтами. Под капотом оно запускает локальный прокси CLIProxyAPI, через который и проходят запросы. Работает так: Codex / Claude Code ↓ Quotio ↓ локальный прокси CLIProxyAPI ↓ нескольк...</summary><content type="html">
  &lt;p id=&quot;K6oY&quot;&gt;В последнее время слишком быстро высасываются квоты Codex-а. Резеты происходят уже не часто, а работать надо 🙃 Поэтому наконец мне понадобилось нормально переключаться между сервисами и подписками, не занимаясь постоянным logout/login.&lt;/p&gt;
  &lt;p id=&quot;0vpI&quot;&gt;По совету из чатиков поставил &lt;a href=&quot;https://github.com/nguyenphutrong/quotio&quot; target=&quot;_blank&quot;&gt;Quotio&lt;/a&gt; — приложение для управления квотами и аккаунтами. Под капотом оно запускает локальный прокси &lt;a href=&quot;https://github.com/router-for-me/CLIProxyAPI&quot; target=&quot;_blank&quot;&gt;CLIProxyAPI&lt;/a&gt;, через который и проходят запросы.&lt;/p&gt;
  &lt;p id=&quot;HMg8&quot;&gt;Работает так:&lt;/p&gt;
  &lt;pre id=&quot;YUwS&quot;&gt;
Codex / Claude Code
        ↓
      Quotio
        ↓
  локальный прокси
   CLIProxyAPI
        ↓
 несколько аккаунтов
&lt;/pre&gt;
  &lt;p id=&quot;Qz19&quot;&gt;🔀 Мой основной кейс — переключение между корпоративным и персональным аккаунтом. Первому выставляешь priority 100, всем остальным меньше и выбираешь стратегию Fill First. Пока на основном аккаунте есть квота, все запросы идут туда. Затем прокси должен автоматически перейти к следующему. Если нужно переключиться вручную, аккаунт можно временно отключить руками в Quotio.&lt;/p&gt;
  &lt;p id=&quot;jRWR&quot;&gt;💣 Отдельно пришлось разбираться с моими скриптами для автоматизации. Некоторые из них запускают codex -exec во временном CODEX_HOME, чтобы окружение было изолированным. Они копируют только авторизацию и ничего не знают про настройки Quotio.&lt;/p&gt;
  &lt;p id=&quot;Z7Jh&quot;&gt;Пришлось развести две схемы: обычный Codex работает через Quotio, а временные окружения из скриптов продолжают использовать прямую авторизацию ChatGPT.&lt;/p&gt;
  &lt;p id=&quot;qV3C&quot;&gt;🛠️ С Claude оказалось сложнее. У меня один логин, внутри которого есть Business и Personal workspace с разными квотами. Но Quotio видел только один аккаунт. В &lt;a href=&quot;https://github.com/router-for-me/CLIProxyAPI/blob/main/sdk/auth/claude.go#L203-L228&quot; target=&quot;_blank&quot;&gt;исходниках CLIProxyAPI&lt;/a&gt; выяснилось, что имя OAuth-файла строится только из email. Поэтому при авторизации второго workspace файл первого просто затирается.&lt;/p&gt;
  &lt;p id=&quot;JaRi&quot;&gt;Решение: авторизовать один workspace, сразу переименовать его credential-файл, переключить активный workspace и повторить OAuth. После этого прокси видит оба файла и может работать с ними отдельно. Я по очереди отключил каждый и проверил реальные запросы — обе квоты действительно работают.&lt;/p&gt;
  &lt;p id=&quot;Lo2a&quot;&gt;✅ В итоге Codex и Claude Code теперь ходят через один локальный роутер, который сам выбирает аккаунт. Схема не идеальная: при повторной авторизации Claude можно снова затереть credential-файл, приоритеты приходится настраивать руками, а без запущенного Quotio ничего через прокси не работает. Но это все редко, а перелогиниваться между аккаунтами больше не нужно.&lt;/p&gt;
  &lt;p id=&quot;GFJk&quot;&gt;&lt;a href=&quot;https://t.me/digital_ponos&quot; target=&quot;_blank&quot;&gt;Подпишешься на мой Telegram?&lt;/a&gt;&lt;/p&gt;

</content></entry><entry><id>afadeev:b5uj7NS_i2k</id><link rel="alternate" type="text/html" href="https://blog.afadeev.com/b5uj7NS_i2k?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=afadeev"></link><title>Практический playbook по внедрению мультиагентных систем</title><published>2026-08-20T22:27:45.686Z</published><updated>2026-08-20T22:27:45.686Z</updated><summary type="html">Мультиагентные системы легко рисовать и неожиданно сложно эксплуатировать. Исследователь, проверяющий, планировщик и исполнитель на диаграмме выглядят как аккуратная модульная архитектура. В production эти прямоугольники превращаются в независимо падающие компоненты, которые передают друг другу неидеальные данные, конкурируют за состояние, повторяют внешние действия и иногда не согласны даже с тем, что уже произошло. Поэтому внедрение мультиагентности не стоит начинать с персонажей и промптов...</summary><content type="html">
  &lt;p id=&quot;bbff&quot;&gt;Мультиагентные системы легко рисовать и неожиданно сложно эксплуатировать. Исследователь, проверяющий, планировщик и исполнитель на диаграмме выглядят как аккуратная модульная архитектура. В production эти прямоугольники превращаются в независимо падающие компоненты, которые передают друг другу неидеальные данные, конкурируют за состояние, повторяют внешние действия и иногда не согласны даже с тем, что уже произошло.&lt;/p&gt;
  &lt;p id=&quot;4c1b&quot;&gt;Поэтому внедрение мультиагентности не стоит начинать с персонажей и промптов. Начинать нужно с самого процесса, изменяемого им состояния и сбоев, которые он обязан переживать.&lt;/p&gt;
  &lt;p id=&quot;9f6d&quot;&gt;Этот playbook описывает практическую последовательность проектирования настоящих автоматизаций: систем, которые читают контекст, готовят решения, взаимодействуют с внешними инструментами и после первой ошибки не превращаются в распределённый детектив.&lt;/p&gt;
  &lt;p id=&quot;9a18&quot;&gt;&lt;strong&gt;1. Сначала докажи, что тебе вообще нужны несколько агентов&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;3380&quot;&gt;По умолчанию используй одного агента с ограниченным набором инструментов и детерминированным workflow вокруг него.&lt;/p&gt;
  &lt;p id=&quot;9f6d&quot;&gt;Отдельный агент оправдан, если у этапа появляется хотя бы одна настоящая граница:&lt;/p&gt;
  &lt;p id=&quot;11a5&quot;&gt;• ему нужен отдельный большой или специализированный контекст;&lt;/p&gt;
  &lt;p id=&quot;4b73&quot;&gt;• ему требуются другие данные или права;&lt;/p&gt;
  &lt;p id=&quot;47a0&quot;&gt;• его можно запускать независимо или параллельно;&lt;/p&gt;
  &lt;p id=&quot;26c6&quot;&gt;• его результат необходимо независимо проверить;&lt;/p&gt;
  &lt;p id=&quot;c380&quot;&gt;• ему нужна другая модель, промпт, latency budget или набор инструментов;&lt;/p&gt;
  &lt;p id=&quot;46c1&quot;&gt;• его можно повторять, отключать или заменять без перезапуска всего процесса;&lt;/p&gt;
  &lt;p id=&quot;5be4&quot;&gt;• его результат образует естественный проверяемый контракт для следующего этапа.&lt;/p&gt;
  &lt;p id=&quot;a19d&quot;&gt;Не создавай нового агента только потому, что роли «исследователь», «критик» и «редактор» звучат как серьёзная команда. Если различие существует лишь в системном промпте, а контекст, инструменты, права и failure domain остаются общими, это могут быть режимы одного агента, а не три отдельных компонента.&lt;/p&gt;
  &lt;p id=&quot;6e8d&quot;&gt;Полезный тест — заменяемость. Если компонент нельзя независимо запустить, оценить и заменить, скорее всего это просто шаг.&lt;/p&gt;
  &lt;p id=&quot;6632&quot;&gt;&lt;strong&gt;2. Опиши workflow до проектирования агентов&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;d60d&quot;&gt;Перед архитектурой заполни карточку процесса:&lt;/p&gt;
  &lt;pre id=&quot;f10b&quot;&gt;Название:
Цель:
Триггер:
Входные данные:
Финальный результат:
Кто использует результат:
Допустимое время выполнения:
Допустимая стоимость:
Внешние изменения:
Обязательные подтверждения:
Что считается успехом:
Что считается частичным успехом:
Что считается провалом:&lt;/pre&gt;
  &lt;p id=&quot;8c56&quot;&gt;Например, workflow подготовки еженедельного материала может собрать заметки, проверить источники, создать черновик и остановиться перед публикацией. Создание черновика — внутреннее и обратимое действие. Публикация — внешний побочный эффект, который должен находиться за approval gate.&lt;/p&gt;
  &lt;p id=&quot;096f&quot;&gt;Если карточку невозможно заполнить без фразы «агент сам решит», границы процесса пока не определены. Автономность должна работать внутри ясных правил, а не заменять отсутствующие продуктовые решения.&lt;/p&gt;
  &lt;p id=&quot;47d5&quot;&gt;&lt;strong&gt;3. Явно выбери модель координации&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;634c&quot;&gt;Для сложных процессов и нормального аудита безопасным default обычно будет оркестрация.&lt;/p&gt;
  &lt;pre id=&quot;834f&quot;&gt;Триггер
  → Orchestrator
  → Сбор контекста
  → Независимая работа агентов
  → Валидация контрактов
  → Синтез
  → Человеческое подтверждение
  → Применение&lt;/pre&gt;
  &lt;p id=&quot;d950&quot;&gt;Orchestrator отвечает за порядок, состояние, параллельность, таймауты, retry policy, валидацию и остановку. Агенты получают вход, выполняют ограниченную работу и возвращают результат. Они не вызывают друг друга и не импровизируют глобальный workflow.&lt;/p&gt;
  &lt;p id=&quot;43a2&quot;&gt;Choreography подходит процессам, которые действительно построены вокруг независимых событий. Завершённый импорт может отдельно запустить индексирование, аналитику и уведомление. Если уведомление упало, это не должно отменять сам импорт.&lt;/p&gt;
  &lt;p id=&quot;3e9f&quot;&gt;Не используй чистую choreography, если порядок меняет результат, несколько агентов участвуют в одном решении, присутствуют внешние действия, требуется полный audit trail или отсутствуют правила для повторных и пришедших не по порядку событий.&lt;/p&gt;
  &lt;p id=&quot;9b7a&quot;&gt;На практике часто лучше гибрид: критический путь контролирует orchestrator, а вторичные процессы запускаются событиями.&lt;/p&gt;
  &lt;p id=&quot;ced2&quot;&gt;&lt;strong&gt;4. Проектируй агентов по ответственности, а не по персонажам&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;2d70&quot;&gt;У каждого агента должна быть одна понятная зона ответственности и операционная карточка:&lt;/p&gt;
  &lt;pre id=&quot;9d0d&quot;&gt;Имя:
Назначение:
Входной контракт:
Выходной контракт:
Разрешённые инструменты:
Разрешённые данные:
Разрешённые изменения:
Timeout:
Лимит стоимости:
Условия отказа:
Безопасность повтора:
Fallback:
Компенсирующее действие:&lt;/pre&gt;
  &lt;p id=&quot;bcdf&quot;&gt;Исследовательский агент, например, может читать интернет и предоставленные документы, но ему не нужен доступ к публикации, отправке сообщений или изменению задач. В его output входят выводы, первичные источники, даты сбора, уровень уверенности и неразрешённые противоречия. Если важное утверждение подтвердить не удалось, агент возвращает явный отказ, а не красивую догадку.&lt;/p&gt;
  &lt;p id=&quot;d9ea&quot;&gt;Права должны соответствовать минимально необходимой ответственности. Компонент, предлагающий изменение, желательно отделять от детерминированного компонента, который его применяет.&lt;/p&gt;
  &lt;p id=&quot;080e&quot;&gt;&lt;strong&gt;5. Не заставляй модель выполнять работу обычного кода&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;3e2b&quot;&gt;LLM полезны для неструктурированного текста, неоднозначной классификации, суммаризации, синтеза и подготовки черновиков. Обычный код лучше справляется с проверкой схем, фильтрацией дат, дедупликацией, расчётами, разрешениями, переходами состояния, лимитами, повторами и точными внешними действиями.&lt;/p&gt;
  &lt;p id=&quot;a44d&quot;&gt;Orchestrator желательно делать детерминированным. Модель может рекомендовать ветку, но решение о пересечении границы прав или изменении внешнего состояния должен принимать код либо человек.&lt;/p&gt;
  &lt;p id=&quot;8eb6&quot;&gt;Это повышает надёжность и резко упрощает тестирование. Нет смысла спрашивать LLM, валиден ли JSON, когда парсер отвечает на этот вопрос идеально.&lt;/p&gt;
  &lt;p id=&quot;0195&quot;&gt;&lt;strong&gt;6. Считай каждый handoff контрактом&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;4b52&quot;&gt;Агенты не должны передавать друг другу произвольный текст со словами «вроде всё готово». Для каждой передачи нужна версионированная схема.&lt;/p&gt;
  &lt;pre id=&quot;f1bf&quot;&gt;{
  &amp;quot;schema_version&amp;quot;: &amp;quot;1.0&amp;quot;,
  &amp;quot;run_id&amp;quot;: &amp;quot;weekly-2026-W34&amp;quot;,
  &amp;quot;producer&amp;quot;: &amp;quot;research_agent&amp;quot;,
  &amp;quot;created_at&amp;quot;: &amp;quot;2026-08-20T12:00:00Z&amp;quot;,
  &amp;quot;input_state_version&amp;quot;: 3,
  &amp;quot;status&amp;quot;: &amp;quot;complete&amp;quot;,
  &amp;quot;findings&amp;quot;: [],
  &amp;quot;sources&amp;quot;: [],
  &amp;quot;confidence&amp;quot;: 0.84,
  &amp;quot;warnings&amp;quot;: []
}&lt;/pre&gt;
  &lt;p id=&quot;1aca&quot;&gt;Минимально сохраняй версию схемы, идентификатор запуска, производителя, timestamp, версию входного состояния, статус, confidence, warnings и использованные доказательства.&lt;/p&gt;
  &lt;p id=&quot;caee&quot;&gt;Объект валидируется до передачи следующему агенту. Отсутствующий источник, несовместимая схема или недостаточная уверенность должны остановить процесс либо выбрать заранее описанный fallback прямо на границе. Не нужно позволять ещё трём агентам строить красивый отчёт поверх сломанного состояния.&lt;/p&gt;
  &lt;p id=&quot;923d&quot;&gt;Не меняй значение существующего поля молча. Добавление необязательного поля обычно совместимо. Превращение &lt;code&gt;confidence&lt;/code&gt; из «уверенности агента» в «процент подтверждённых утверждений» требует новой версии схемы.&lt;/p&gt;
  &lt;p id=&quot;ff37&quot;&gt;&lt;strong&gt;7. Храни состояние workflow вне контекста модели&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;080e&quot;&gt;Контекстное окно — не база данных. Для каждого запуска нужен долговечный record с версией workflow, триггером, текущим шагом, входным snapshot, версиями состояния, попытками, статусом подтверждения, внешними действиями, финальным результатом и причиной отказа.&lt;/p&gt;
  &lt;p id=&quot;8ab8&quot;&gt;Предпочитай append-only transitions или immutable snapshots:&lt;/p&gt;
  &lt;pre id=&quot;70a0&quot;&gt;state_v0 → контекст собран
state_v1 → источники классифицированы
state_v2 → исследование завершено
state_v3 → черновик создан
state_v4 → человек подтвердил
state_v5 → внешнее действие применено&lt;/pre&gt;
  &lt;p id=&quot;6bed&quot;&gt;Исправление создаёт новую версию, а не переписывает историю. Для каждого snapshot сохраняй агента-производителя, входную версию, модель, версию промпта, инструменты, timestamp и результат валидации.&lt;/p&gt;
  &lt;p id=&quot;0e4f&quot;&gt;Так появляются lineage, replay и auditability. Если финальный результат оказался плохим, можно открыть конкретный переход, который внёс ошибку, а не восстанавливать процесс по разрозненным логам.&lt;/p&gt;
  &lt;p id=&quot;61c7&quot;&gt;&lt;strong&gt;8. Определи семантику повторов до первого сбоя&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;f5eb&quot;&gt;Для каждого шага заранее ответь: что произойдёт, если он выполнится дважды?&lt;/p&gt;
  &lt;p id=&quot;2fc6&quot;&gt;Read-only анализ обычно можно повторить безопасно. Внешние действия — нельзя. Создание задачи, отправка письма, платёж или публикация должны использовать &lt;code&gt;idempotency_key&lt;/code&gt;:&lt;/p&gt;
  &lt;pre id=&quot;e5f0&quot;&gt;workflow + run_id + action_type + target&lt;/pre&gt;
  &lt;p id=&quot;d1c8&quot;&gt;Перед применением действия система проверяет, не завершался ли этот ключ успешно раньше.&lt;/p&gt;
  &lt;p id=&quot;2f2a&quot;&gt;Автоматический retry допустим только для временных технических ошибок: timeout, сетевого сбоя, известной кратковременной недоступности и rate limit с определённой задержкой. Не повторяй автоматически ошибки валидации, отсутствие прав, отказ пользователя, несовместимые контракты и операции с неоднозначным результатом.&lt;/p&gt;
  &lt;p id=&quot;8a59&quot;&gt;Timeout не доказывает, что внешний эффект не произошёл. Сначала проверь целевую систему и только затем решай, безопасен ли новый запрос.&lt;/p&gt;
  &lt;p id=&quot;f6eb&quot;&gt;&lt;strong&gt;9. Назначь каждому сбою явный результат&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;47c5&quot;&gt;У каждого шага должно быть одно заранее выбранное поведение:&lt;/p&gt;
  &lt;p id=&quot;24a0&quot;&gt;• &lt;strong&gt;Fail closed:&lt;/strong&gt; остановить workflow. Подходит для прав, безопасности, финансовых решений и публикации.&lt;/p&gt;
  &lt;p id=&quot;074f&quot;&gt;• &lt;strong&gt;Degraded mode:&lt;/strong&gt; продолжить с явно ограниченным результатом.&lt;/p&gt;
  &lt;p id=&quot;e6cc&quot;&gt;• &lt;strong&gt;Cached fallback:&lt;/strong&gt; использовать последний допустимый результат с ограничением по свежести.&lt;/p&gt;
  &lt;p id=&quot;9683&quot;&gt;• &lt;strong&gt;Human escalation:&lt;/strong&gt; создать review artifact с объяснением проблемы и доступными действиями.&lt;/p&gt;
  &lt;p id=&quot;d16f&quot;&gt;• &lt;strong&gt;Skip:&lt;/strong&gt; пропустить некритический шаг и показать это в финальном результате.&lt;/p&gt;
  &lt;p id=&quot;447b&quot;&gt;Молчаливого fallback быть не должно. Пользователь обязан отличать полноценный результат от созданного в degraded mode.&lt;/p&gt;
  &lt;p id=&quot;c503&quot;&gt;Circuit breaker полезен вокруг нестабильных удалённых зависимостей. После нескольких временных ошибок система прекращает вызовы, ждёт cooldown и пропускает один контролируемый тестовый запрос. Пороги зависят от частоты workflow: три ошибки означают разные вещи для сервиса с тысячей запросов в минуту и для еженедельной автоматизации.&lt;/p&gt;
  &lt;p id=&quot;2e8a&quot;&gt;&lt;strong&gt;10. Запланируй компенсацию внешних действий&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;ea8f&quot;&gt;Каждое действие классифицируй как обратимое, компенсируемое или необратимое.&lt;/p&gt;
  &lt;p id=&quot;fa59&quot;&gt;Создание локального черновика обратимо. Изменение задачи можно компенсировать восстановлением предыдущей версии. Публикация компенсируется лишь частично: материал уже могли скопировать. Отправка письма необратима; максимум можно отправить исправление.&lt;/p&gt;
  &lt;p id=&quot;d0b2&quot;&gt;Если поздний шаг упал, компенсация выполняется в обратном порядке завершённых действий, но только там, где она безопасна и осмысленна. Если точный rollback невозможен, зафиксируй инцидент и передай его человеку вместо того, чтобы называть «примерно вернули как было» чистым состоянием.&lt;/p&gt;
  &lt;p id=&quot;1c40&quot;&gt;&lt;strong&gt;11. Сделай человеческое подтверждение настоящим состоянием&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;9a2c&quot;&gt;Human review — не диалог подтверждения, прикрученный в конце. Это часть state machine:&lt;/p&gt;
  &lt;pre id=&quot;8418&quot;&gt;draft_ready
  → awaiting_review
  → approved / rejected / edited / expired
  → apply&lt;/pre&gt;
  &lt;p id=&quot;09c7&quot;&gt;Review artifact должен объяснять, что изменится, почему, какие данные и агенты участвовали, что было пропущено, какие есть warnings, как выглядит точный preview или diff и какие действия доступны пользователю.&lt;/p&gt;
  &lt;p id=&quot;dbd2&quot;&gt;Подтверждение относится к конкретной версии. Если после него изменился черновик, target или параметры, старое approval перестаёт действовать.&lt;/p&gt;
  &lt;p id=&quot;82c6&quot;&gt;Разумный default: автоматически разрешать чтение, анализ и создание черновика, но требовать явного подтверждения для внешних изменений, сообщений, публикации, удаления, чувствительных данных и платных API.&lt;/p&gt;
  &lt;p id=&quot;086e&quot;&gt;&lt;strong&gt;12. Сделай наблюдаемым весь запуск&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;5825&quot;&gt;Один &lt;code&gt;run_id&lt;/code&gt; должен проходить через orchestrator, агентов и инструменты. Для каждого шага сохраняй агента, номер попытки, latency, модель, версию промпта, входную и выходную версии состояния, tool calls, результат валидации, токены, примерную стоимость, тип ошибки и fallback.&lt;/p&gt;
  &lt;p id=&quot;b97b&quot;&gt;Не складывай чувствительный input в обычные логи. При необходимости сохраняй редактированную версию, hash или ссылку на защищённый artifact.&lt;/p&gt;
  &lt;p id=&quot;67af&quot;&gt;Полезные метрики всего workflow: успешные и частично успешные запуски, ручные вмешательства, ошибки каждого этапа, общая и поагентная latency, количество повторов, стоимость, токены, частота fallback, отклонённые approvals, остановленные дубли и доля результата, которую переписал человек.&lt;/p&gt;
  &lt;p id=&quot;a5eb&quot;&gt;Последняя метрика особенно важна. Если пользователь переписывает 80 процентов работы агента, агент не экономит время только потому, что технически завершился успешно.&lt;/p&gt;
  &lt;p id=&quot;7d10&quot;&gt;&lt;strong&gt;13. Тестируй систему слоями&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;24d5&quot;&gt;Детерминированные unit-тесты должны проверять контракты, переходы состояния, idempotency, retry policy, circuit breakers, права, approval gates, компенсацию и редактирование чувствительных данных.&lt;/p&gt;
  &lt;p id=&quot;a710&quot;&gt;Контрактные тесты передают каждому агенту нормальный, пустой, неполный, противоречивый, слишком большой, устаревший, вредоносный и несовместимый по схеме input. В автоматических тестах модельные вызовы мокай: тестовый набор не должен случайно создавать счета и внешние побочные эффекты.&lt;/p&gt;
  &lt;p id=&quot;8ae4&quot;&gt;Evals могут проверять свойства, а не один точный ответ: утверждения подтверждены источниками, сомнения не скрыты, опасные действия не выполняются, структура и стиль соблюдены, агент не вышел за разрешённые данные.&lt;/p&gt;
  &lt;p id=&quot;67c4&quot;&gt;Наконец, искусственно ломай workflow. Проверь timeout, повторную доставку, рестарт orchestrator, повреждённый snapshot, несовместимую схему, отказ пользователя и падение сразу после внешнего действия. Если процесс нельзя безопасно продолжить после исчезновения orchestrator, он не готов.&lt;/p&gt;
  &lt;p id=&quot;982f&quot;&gt;&lt;strong&gt;14. Увеличивай автономность поэтапно&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;f4b4&quot;&gt;Используй последовательность:&lt;/p&gt;
  &lt;pre id=&quot;be9a&quot;&gt;ручной прототип
  → shadow mode
  → draft mode
  → reversible apply
  → controlled automation&lt;/pre&gt;
  &lt;p id=&quot;bffd&quot;&gt;В ручном прототипе сохраняются inputs и outputs, но внешних действий нет. В shadow mode workflow запускается автоматически и сравнивается с существующим ручным процессом. Draft mode создаёт review artifact. Reversible apply допускает низкорисковые действия с idempotency, audit и компенсацией. Controlled automation оставляется для хорошо изученных операций небольшого риска; необратимые и чувствительные действия остаются за approval.&lt;/p&gt;
  &lt;p id=&quot;ab8e&quot;&gt;Не повышай автономность только потому, что система пережила одну спокойную неделю. Нужны репрезентативные запуски и специально проверенные сценарии отказа.&lt;/p&gt;
  &lt;p id=&quot;b23c&quot;&gt;&lt;strong&gt;15. Установи production-readiness gate&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;da93&quot;&gt;Workflow готов к регулярному использованию, когда у каждого агента есть понятная причина существовать, все handoff валидируются машиной, состояние переживает рестарт, повторный запуск не создаёт дубли, для каждой зависимости определено поведение при отказе, внешние действия защищены approval, версии моделей и промптов сохраняются, чувствительные данные не попадают в обычные логи, частичные сбои проверены, неудачный запуск можно воспроизвести, а стоимость и latency укладываются в заданные бюджеты.&lt;/p&gt;
  &lt;p id=&quot;869e&quot;&gt;Продуктовая метрика не менее важна: пользователь должен принимать большую часть результатов без существенной переделки. Технически успешный workflow, создающий больше работы на проверку, чем убирающий, всё равно является провалом.&lt;/p&gt;
  &lt;p id=&quot;def3&quot;&gt;&lt;strong&gt;16. Удаляй агентов так же охотно, как добавляешь&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;e9bc&quot;&gt;Периодически и после крупных изменений моделей проверяй, какие агенты часто падают, какие результаты постоянно переписываются, какие дорогие этапы почти не влияют на итог, где постоянно срабатывает fallback, какие данные собираются без применения и какую LLM-работу можно заменить обычным кодом.&lt;/p&gt;
  &lt;p id=&quot;9569&quot;&gt;Мультиагентная система не обязана развиваться только добавлением новых ролей. Удаление агента часто сильнее улучшает надёжность, стоимость, latency и понятность всей архитектуры.&lt;/p&gt;
  &lt;p id=&quot;c1be&quot;&gt;Практический default намеренно скучный: детерминированный trigger, детерминированный orchestrator, минимальный контекст, несколько read-only специалистов, валидация контрактов, один этап синтеза, review artifact, явное подтверждение, отдельный apply-компонент и audit record.&lt;/p&gt;
  &lt;p id=&quot;b54f&quot;&gt;Это выглядит менее магически, чем рой автономных агентов. Зато с гораздо большей вероятностью продолжит работать после окончания демо.&lt;/p&gt;

</content></entry><entry><id>afadeev:eLvc482tAeB</id><link rel="alternate" type="text/html" href="https://blog.afadeev.com/eLvc482tAeB?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=afadeev"></link><title>Мультиагентная система — это распределённая система. Пора относиться к ней соответственно</title><published>2026-08-20T22:09:54.769Z</published><updated>2026-08-20T22:09:54.769Z</updated><summary type="html">Один AI-агент обычно выглядит обманчиво просто. У него есть промпт, набор инструментов, доступ к данным и понятная задача. Он получает запрос, что-то делает и возвращает результат. Если результат плохой, мы правим промпт, меняем модель или добавляем контекст. Проблемы начинаются, когда вместо одного агента появляется несколько. Один собирает информацию, второй её проверяет, третий анализирует, четвёртый принимает решение, а пятый оформляет результат. На диаграмме всё выглядит великолепно: акк...</summary><content type="html">
  &lt;p id=&quot;5af7&quot;&gt;Один AI-агент обычно выглядит обманчиво просто. У него есть промпт, набор инструментов, доступ к данным и понятная задача. Он получает запрос, что-то делает и возвращает результат. Если результат плохой, мы правим промпт, меняем модель или добавляем контекст.&lt;/p&gt;
  &lt;p id=&quot;d9a9&quot;&gt;Проблемы начинаются, когда вместо одного агента появляется несколько. Один собирает информацию, второй её проверяет, третий анализирует, четвёртый принимает решение, а пятый оформляет результат. На диаграмме всё выглядит великолепно: аккуратные прямоугольники соединены стрелочками, каждый агент занят своим делом, а где-то сверху написано *AI-powered workflow*.&lt;/p&gt;
  &lt;p id=&quot;a3e1&quot;&gt;Но пять агентов — это не просто пять промптов в плаще. Это уже распределённая система.&lt;/p&gt;
  &lt;p id=&quot;26c9&quot;&gt;И ломаться она будет соответствующе: из-за гонок данных, устаревшего состояния, повторных запросов, частичных сбоев, потерянных событий и невозможности понять, какой именно компонент превратил нормальный результат в уверенную чушь.&lt;/p&gt;
  &lt;p id=&quot;0efd&quot;&gt;&lt;strong&gt;Модель может работать идеально, а система — всё равно ошибаться&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;3b5f&quot;&gt;В &lt;a href=&quot;https://you-tldr.com/transcript/2czYyrTzILg&quot; target=&quot;_blank&quot;&gt;выступлении о production-grade мультиагентных системах&lt;/a&gt; приводится пример автоматизированной кредитной проверки. Один агент рассчитывает кредитный рейтинг, другой проверяет доход, третий оценивает риск, четвёртый ищет признаки мошенничества, а последний принимает решение.&lt;/p&gt;
  &lt;p id=&quot;2cfc&quot;&gt;По отдельности каждый компонент мог работать нормально. Проблема возникла между ними: один агент записывал новое значение в PostgreSQL, пока другой продолжал читать старое из кеша. В результате система принимала неправильные решения, хотя ни модель, ни промпт формально не были сломаны.&lt;/p&gt;
  &lt;p id=&quot;7087&quot;&gt;Это довольно важный сдвиг в мышлении. Когда AI-система ошибается, мы по привычке начинаем изучать ответы модели: достаточно ли хороший был промпт, не галлюцинировала ли она, хватило ли контекста. Но в мультиагентном воркфлоу ошибка может вообще не иметь отношения к интеллекту агентов. Агент получил корректные данные и принял корректное решение — просто данные были вчерашними.&lt;/p&gt;
  &lt;p id=&quot;a13b&quot;&gt;Чем больше агентов появляется в системе, тем меньше её надёжность зависит только от качества моделей. Начинают иметь значение порядок выполнения, правила передачи данных, владение состоянием, повторяемость операций и поведение при частичном отказе. То есть всё то скучное инфраструктурное хозяйство, которое особенно хочется пропустить, когда демо и без него вроде работает.&lt;/p&gt;
  &lt;p id=&quot;34d8&quot;&gt;&lt;strong&gt;Оркестр или танцпол&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;e560&quot;&gt;Есть два базовых способа организовать взаимодействие агентов.&lt;/p&gt;
  &lt;p id=&quot;1367&quot;&gt;При оркестрации существует центральный координатор. Он вызывает исследовательского агента, получает результат, параллельно запускает проверку фактов и анализ, ждёт их завершения, объединяет ответы и передаёт их следующему агенту. Сами агенты ничего не знают друг о друге. Они получают входные данные, выполняют свою работу и возвращают результат.&lt;/p&gt;
  &lt;p id=&quot;2bdf&quot;&gt;Такой подход не выглядит особенно революционно, зато позволяет открыть один trace и увидеть, что именно происходило: кто был вызван, с какими данными, сколько времени отвечал и где всё упало. Оркестратор может управлять таймаутами, безопасными повторами, параллельным выполнением и остановкой процесса, если результат одного из этапов не прошёл проверку.&lt;/p&gt;
  &lt;p id=&quot;d5b1&quot;&gt;В хореографии центрального координатора нет. Агенты реагируют на события. Исследователь публикует &lt;code&gt;research.completed&lt;/code&gt;, аналитик подхватывает событие и после своей работы публикует &lt;code&gt;analysis.ready&lt;/code&gt;, а генератор отчёта слушает уже его.&lt;/p&gt;
  &lt;p id=&quot;74cd&quot;&gt;Это даёт компонентам больше автономности и позволяет добавлять новых участников, не переписывая весь центральный процесс. Но вместе с автономностью появляется распределённый детектив. Было ли событие опубликовано? Получил ли его нужный агент? Не обработал ли он его дважды? Что произойдёт, если события пришли в неправильном порядке?&lt;/p&gt;
  &lt;p id=&quot;96b6&quot;&gt;Хореография хорошо подходит системам, которые действительно живут вокруг событий и не требуют строгого линейного контроля. Для сложных процессов, где важны порядок, аудит и предсказуемое поведение при ошибках, оркестрация обычно оказывается разумнее. Между ними нет религиозного выбора: на практике система может централизованно управлять критическим процессом, но публиковать события для независимых вторичных действий.&lt;/p&gt;
  &lt;p id=&quot;381e&quot;&gt;Проблемы начинаются не тогда, когда команда выбирает «неправильный» паттерн, а когда вообще не делает выбор. Агенты просто начинают вызывать друг друга, писать в общую базу и надеяться, что как-нибудь разберутся. Охуенная идея, только вот работать будет ровно до первого параллельного запроса.&lt;/p&gt;
  &lt;p id=&quot;f326&quot;&gt;&lt;strong&gt;Общее состояние — удобный способ устроить хаос&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;54e3&quot;&gt;Представим, что два агента одновременно читают одно значение. Первый обновляет его с 680 до 750, второй — с 680 до 720. Если оба просто записывают результат обратно, последнее обновление побеждает, а первое бесследно исчезает.&lt;/p&gt;
  &lt;p id=&quot;a78c&quot;&gt;Транзакции, блокировки и уровни изоляции существуют не первый день и могут решить часть этой проблемы. Но в агентских системах состояние часто размазано между базой, кешем, очередью сообщений, векторным хранилищем и контекстом самой модели. Транзакция PostgreSQL уже не очень помогает, если один компонент прочитал старые данные из Redis, а другой получил событие повторно спустя пять минут.&lt;/p&gt;
  &lt;p id=&quot;e3ad&quot;&gt;Более устойчивый подход — не позволять агентам бесконечно переписывать один общий объект, а сохранять новые версии состояния. Агент получает конкретный snapshot, выполняет работу и создаёт следующий. Предыдущие версии остаются неизменными.&lt;/p&gt;
  &lt;p id=&quot;c2f8&quot;&gt;Это не магически отменяет конкуренцию: системе всё равно нужно решать, какая ветка состояния считается актуальной и можно ли объединять параллельные результаты. Зато появляется происхождение данных. Если финальное решение оказалось плохим, можно открыть предыдущую версию и увидеть не только текущее значение, но и какой агент, на основе каких входных данных и когда его создал.&lt;/p&gt;
  &lt;p id=&quot;2933&quot;&gt;Версионированное состояние превращает расследование из гадания по логам в воспроизводимый процесс. А ещё позволяет повторно запустить воркфлоу с нужного шага, а не просить всю компанию повторить свои действия ради одного упавшего агента.&lt;/p&gt;
  &lt;p id=&quot;955e&quot;&gt;&lt;strong&gt;Агенты должны общаться через контракты&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;b644&quot;&gt;Одна из самых привлекательных особенностей LLM — способность понимать неструктурированный текст. Из этого легко сделать странный вывод, что между агентами можно передавать произвольный JSON или простыню Markdown, а следующая модель как-нибудь догадается, что имелось в виду.&lt;/p&gt;
  &lt;p id=&quot;6819&quot;&gt;Она действительно часто догадывается. В этом и ловушка.&lt;/p&gt;
  &lt;p id=&quot;f48b&quot;&gt;Если аналитик ожидает выводы, источники, дату сбора информации и оценку уверенности, эти поля должны быть частью явного контракта. Результат необходимо проверить до передачи следующему этапу. Отсутствующий источник, неправильный формат даты или слишком низкая уверенность должны остановить процесс на границе, а не обнаружиться после того, как ещё три агента построили на плохих данных красивый отчёт.&lt;/p&gt;
  &lt;p id=&quot;ec24&quot;&gt;Контракт не обязан превращать каждую передачу в бюрократический кошмар. Его задача проще: отделить допустимое состояние системы от ситуации, когда агент вернул что-то похожее на ответ.&lt;/p&gt;
  &lt;p id=&quot;fbd2&quot;&gt;Это особенно важно потому, что LLM умеют создавать правдоподобные ошибки. Обычная программа чаще падает на неожиданном формате. Модель может принять его, неверно интерпретировать и продолжить работу так уверенно, будто всё идёт по плану.&lt;/p&gt;
  &lt;p id=&quot;1ab9&quot;&gt;&lt;strong&gt;Сбой должен быть частью дизайна&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;11db&quot;&gt;Любой удалённый вызов иногда не отвечает. Модель достигает лимита, инструмент падает, сеть тормозит, провайдер возвращает ошибку, агент зависает в цикле или выдаёт результат, который не проходит валидацию.&lt;/p&gt;
  &lt;p id=&quot;0707&quot;&gt;Поэтому таймауты, ограниченные повторы и circuit breaker — не дополнительные production-фичи, которые можно прикрутить потом. Это часть нормальной семантики вызова.&lt;/p&gt;
  &lt;p id=&quot;6c27&quot;&gt;При этом бездумные ретраи способны сделать ситуацию хуже. Если агент создаёт задачу, отправляет письмо или списывает деньги, повторный вызов может повторить и побочный эффект. Такие операции должны быть идемпотентными либо использовать ключи дедупликации. Иначе «повышение надёжности» внезапно превращается в три одинаковых письма клиенту.&lt;/p&gt;
  &lt;p id=&quot;1d88&quot;&gt;Circuit breaker нужен, чтобы один сломанный компонент не утянул за собой весь воркфлоу. После серии ошибок система временно перестаёт обращаться к нему и либо переходит в ограниченный режим, либо использует последний допустимый результат, либо передаёт решение человеку. Что именно делать, определяется не инфраструктурной библиотекой, а смыслом процесса. Пропустить генерацию красивого саммари можно. Тихо пропустить проверку мошенничества — уже не очень.&lt;/p&gt;
  &lt;p id=&quot;b1ce&quot;&gt;Сложнее всего обстоят дела с действиями, которые успели изменить внешний мир. В распределённой системе обычно невозможно завернуть пять сервисов и три агента в одну большую транзакцию. Поэтому применяется Saga: после сбоя выполняются компенсирующие действия для уже завершённых шагов.&lt;/p&gt;
  &lt;p id=&quot;8c6a&quot;&gt;Компенсация не всегда означает настоящий откат. Отправленное письмо нельзя стереть из чужого почтового ящика, а опубликованный документ мог уже кто-то скачать. Иногда компенсация — это отменяющее сообщение, новая версия записи или передача ситуации человеку. Важен сам факт, что система заранее знает, как жить с частично выполненным процессом, а не впервые задумывается об этом после инцидента.&lt;/p&gt;
  &lt;p id=&quot;c787&quot;&gt;&lt;strong&gt;Observability важнее ещё одного агента&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;e259&quot;&gt;В демо достаточно увидеть финальный ответ. В production нужно понимать, как он появился.&lt;/p&gt;
  &lt;p id=&quot;036b&quot;&gt;Для каждого запуска должна сохраняться цепочка вызовов: версии промптов и моделей, входы и выходы агентов, использованные инструменты, изменения состояния, ошибки, задержки и стоимость. Чувствительные данные при этом придётся маскировать или хранить отдельно — observability не должна превращаться в крупнейшую утечку всей системы.&lt;/p&gt;
  &lt;p id=&quot;f42e&quot;&gt;Особенно важен единый идентификатор запуска, проходящий через все компоненты. Без него логи пяти агентов остаются пятью независимыми историями, которые кто-то потом будет вручную склеивать по времени. И обязательно выяснится, что часы на одном сервисе спешили.&lt;/p&gt;
  &lt;p id=&quot;bc95&quot;&gt;Хорошая трассировка нужна не только для поиска багов. Она позволяет сравнивать версии моделей, воспроизводить неудачные запуски, видеть, какой агент расходует большую часть токенов, и понимать, действительно ли добавление нового компонента улучшило результат. Без этого мультиагентность легко превращается в дорогой способ сделать систему сложнее, не имея возможности доказать, что она стала лучше.&lt;/p&gt;
  &lt;p id=&quot;38d4&quot;&gt;&lt;strong&gt;Хорошая мультиагентная система выглядит скучно&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;5ad8&quot;&gt;Самая полезная мысль здесь довольно неприятная: основная работа при создании надёжной мультиагентной системы происходит не в промптах.&lt;/p&gt;
  &lt;p id=&quot;a5be&quot;&gt;Промпты и модели определяют, насколько хорошо агент способен выполнить отдельную задачу. Архитектура определяет, переживёт ли весь процесс устаревшие данные, повторную доставку, таймаут, частичный сбой и неудачное обновление модели.&lt;/p&gt;
  &lt;p id=&quot;bb4f&quot;&gt;Поэтому production-grade система часто выглядит значительно скучнее демо. В ней есть центральный контроль там, где он нужен, версионированное состояние, явные контракты, идемпотентность, ограничения на повторы, компенсирующие действия, трассировка и человеческое подтверждение перед необратимыми операциями.&lt;/p&gt;
  &lt;p id=&quot;77b9&quot;&gt;Именно это отличает систему от набора агентов, которые бодро разговаривают друг с другом и иногда случайно делают правильную вещь.&lt;/p&gt;

</content></entry><entry><id>afadeev:IPUbsnqp35Z</id><link rel="alternate" type="text/html" href="https://blog.afadeev.com/IPUbsnqp35Z?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=afadeev"></link><title>💸 Код стал дешевым. Софт — нет</title><published>2026-08-19T15:05:15.167Z</published><updated>2026-08-19T15:05:15.167Z</updated><summary type="html">Сейчас часто говорят, что благодаря AI код стал почти бесплатным. И с одной стороны, это правда. Можно за пару промптов накатать сервис, на который раньше ушло бы несколько дней, и он даже будет работать. Именно поэтому все вокруг обложились личными новостными дайджестами, ассистентами, трекерами калорий и прочей автоматизацией. Я в том числе. Но почти все эти штуки объединяет одно: ими пользуется один человек. Если что-то сломалось, можно открыть Claude Code, немного поругаться, поправить и...</summary><content type="html">
  &lt;p id=&quot;3oOL&quot;&gt;Сейчас часто говорят, что благодаря AI код стал почти бесплатным. И с одной стороны, это правда. Можно за пару промптов накатать сервис, на который раньше ушло бы несколько дней, и он даже будет работать.&lt;/p&gt;
  &lt;p id=&quot;AuPG&quot;&gt;Именно поэтому все вокруг обложились личными новостными дайджестами, ассистентами, трекерами калорий и прочей автоматизацией. Я в том числе. Но почти все эти штуки объединяет одно: ими пользуется один человек. Если что-то сломалось, можно открыть Claude Code, немного поругаться, поправить и жить дальше.&lt;/p&gt;
  &lt;p id=&quot;EL1R&quot;&gt;🛠️ Реальным продуктом пользуются другие люди, у него появляется куча данных, интеграций, платежи и невообразимые сценарии использования. В итоге старые решения влияють на новые, и любая небольшая правка внезапно ломает что-то в другом месте.&lt;/p&gt;
  &lt;p id=&quot;tCRS&quot;&gt;🗑️ Чем дольше живет проект, тем дороже становится каждая следующая строчка. Агент, который сначала делал фичу за один промпт, постепенно начинает тратить бесконечное количество итераций даже на простые изменения. А потом четыре дня из пяти будут уходить не на новые фичи, а на исправление багов.&lt;/p&gt;
  &lt;p id=&quot;Irwi&quot;&gt;Очевидно, что AI сильно изменил разработку, но не отменил ее базовые правила. Написать код стало дешево. Написать что-то хорошее, что сможешь развивать и поддерживать несколько лет, — все еще сложно.&lt;/p&gt;
  &lt;p id=&quot;NUJZ&quot;&gt;🧠 При этом самое полезное, что сейчас можно делать, чтобы не застрять в старом мире, — учиться AI. Не обязательно только вайбкодингу, хотя без него уже тоже сложно. Можно разбираться во всем, что связано с AI и может сделать эффективнее именно в той работе, которой уже занимаешься.&lt;/p&gt;
  &lt;p id=&quot;g11b&quot;&gt;Главный навык — не просто умение быстрее генерировать результат. Намного важнее научиться принимать нормальные решения заранее, ставить задачи и держать агентов в рамках системы. Иначе магия заканчивается ровно в тот момент, когда нужно продолжить работать над первой версией. Чего большинство вообще сейчас не умеет.&lt;/p&gt;
  &lt;p id=&quot;wXHm&quot;&gt;&lt;a href=&quot;https://t.me/digital_ponos&quot; target=&quot;_blank&quot;&gt;Подпишешься на мой Telegram?&lt;/a&gt;&lt;/p&gt;

</content></entry><entry><id>afadeev:trR9Iig9PF_</id><link rel="alternate" type="text/html" href="https://blog.afadeev.com/trR9Iig9PF_?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=afadeev"></link><title>🎓 Тебе не нужны курсы по AI</title><published>2026-08-17T15:05:15.388Z</published><updated>2026-08-17T15:05:15.388Z</updated><summary type="html">Интернет забит курсами по AI и вайбкодингу. Причем похоже все они рассказывают банальнейшие правила работы с любым агентом. Для человека, который вообще не может заставить себя открыть Claude Code и разобраться самостоятельно, это, наверное, полезно. Но нормальных продвинутых курсов про харнес-инжиниринг, оркестрацию агентов и действительно интересные приемы работы с Claude Code или Codex я не видел. 🏎️ И это логично — все меняется слишком быстро. А сложные агентские системы еще нужно месяцам...</summary><content type="html">
  &lt;p id=&quot;BJW2&quot;&gt;Интернет забит курсами по AI и вайбкодингу. Причем похоже все они рассказывают банальнейшие правила работы с любым агентом. Для человека, который вообще не может заставить себя открыть Claude Code и разобраться самостоятельно, это, наверное, полезно. Но нормальных продвинутых курсов про харнес-инжиниринг, оркестрацию агентов и действительно интересные приемы работы с Claude Code или Codex я не видел.&lt;/p&gt;
  &lt;p id=&quot;jSgm&quot;&gt;🏎️ И это логично — все меняется слишком быстро. А сложные агентские системы еще нужно месяцами проверять на разных проектах, чтобы понять, дадут ли они хоть какой-то эффект где-то еще.&lt;/p&gt;
  &lt;p id=&quot;urLM&quot;&gt;А ведь материал еще нужно структурировать, красиво упаковать, зарекламить и продать. К моменту выхода курса половина уже может устареть. В лучшем случае такое обучение отстает на несколько месяцев, а обычно — на год.&lt;/p&gt;
  &lt;p id=&quot;Z3sB&quot;&gt;🤡 У меня самого тоже чешутся руки сделать какой курс по вайбкодингу. Но смысл мне рассказывать о собственных кейсах, которые сработают у всех.&lt;/p&gt;
  &lt;p id=&quot;LweD&quot;&gt;📚 При этом бесплатной информации полно. Например, есть прекрасный &lt;a href=&quot;https://luongnv.com/claude-howto/&quot; target=&quot;_blank&quot;&gt;Claude Code How To&lt;/a&gt;: команды, память, скиллы, сабагенты, хуки, MCP, плагины, продвинутые фичи и готовые примеры. Я сам еще не прошел его целиком, но уже нашел кучу вещей, о которых не знал. Полезно будет даже тем, кто сидит в CC целыми днями. Если просто пройти этот сайт и параллельно пробовать все на реальных задачах, понимание инструмента уже будет выше, чем у большинства людей, называющих себя вайбкодерами.&lt;/p&gt;
  &lt;p id=&quot;KK4S&quot;&gt;Есть &lt;a href=&quot;https://www.aihero.dev/courses&quot; target=&quot;_blank&quot;&gt;курсы Matt Pocock&lt;/a&gt;, набор скиллов которого я уже давно рекомендую всем. Банальные &lt;a href=&quot;https://cc.storyfox.cz/&quot; target=&quot;_blank&quot;&gt;cheat sheets по СС&lt;/a&gt; и прочее. Развлекайтесь.&lt;/p&gt;
  &lt;p id=&quot;LZyf&quot;&gt;Кстати мои &lt;a href=&quot;https://gs.afadeev.com/&quot; target=&quot;_blank&quot;&gt;гайды по целеполаганию&lt;/a&gt; и &lt;a href=&quot;https://afadeev.com/ru/weight-loss-short&quot; target=&quot;_blank&quot;&gt;похудению&lt;/a&gt; проживут намного дольше любого курса по AI. Люди пока обновляются реже, чем Codex резетит лимиты 🙃&lt;/p&gt;
  &lt;p id=&quot;Q9bH&quot;&gt;&lt;a href=&quot;https://t.me/digital_ponos&quot; target=&quot;_blank&quot;&gt;Подпишешься на мой Telegram?&lt;/a&gt;&lt;/p&gt;

</content></entry><entry><id>afadeev:pOwmuar9dAH</id><link rel="alternate" type="text/html" href="https://blog.afadeev.com/pOwmuar9dAH?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=afadeev"></link><title>Weekly (15 August)</title><published>2026-08-15T11:05:14.661Z</published><updated>2026-08-15T11:05:14.661Z</updated><summary type="html">Вчера не успел, исправляюсь. 🎧️ Слушаю и смотрю 👀 ➣ Прекрасное видео, где врач рассказывает, что в перчатках, которые используют в лабораториях, везде остаются частицы, которые в исследованиях определяются как пластик. И получается, что большинство исследований на тему пластика могут быть нерелевантны. Лол. ➣ Galaxy Z Fold 8 Review — очень странный телефон, но чуваку этому понравился. В целом я пока вайб складных телефонов все еще не уловил, хотя хочется. ➣ The robot hype is worse than you th...</summary><content type="html">
  &lt;p id=&quot;wDDU&quot;&gt;Вчера не успел, исправляюсь.&lt;/p&gt;
  &lt;p id=&quot;r374&quot;&gt;&lt;strong&gt;🎧️ Слушаю и смотрю 👀&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;HbVV&quot;&gt;➣ &lt;a href=&quot;https://youtu.be/kDZlU0s-A2U?is=s2Cg3R3dBQKRGnNq&quot; target=&quot;_blank&quot;&gt;Прекрасное видео&lt;/a&gt;, где врач рассказывает, что в перчатках, которые используют в лабораториях, везде остаются частицы, которые в исследованиях определяются как пластик. И получается, что большинство исследований на тему пластика могут быть нерелевантны. Лол.&lt;/p&gt;
  &lt;p id=&quot;F08X&quot;&gt;➣ &lt;a href=&quot;https://youtu.be/Z6z_feacXW8?si=qHNsYm93IBvNgBey&quot; target=&quot;_blank&quot;&gt;Galaxy Z Fold 8 Review&lt;/a&gt; — очень странный телефон, но чуваку этому понравился. В целом я пока вайб складных телефонов все еще не уловил, хотя хочется.&lt;/p&gt;
  &lt;p id=&quot;96CH&quot;&gt;➣ &lt;a href=&quot;https://www.youtube.com/watch?v=aB5LGrHISqY&amp;list=WL&amp;index=2&quot; target=&quot;_blank&quot;&gt;The robot hype is worse than you think&lt;/a&gt; — на канале Fireship хороший разбор текущего состояния роботов. Удивительно, насколько там всё плохо и как мы, похоже, далеки от реально полезных гуманоидов.&lt;/p&gt;
  &lt;p id=&quot;LXr2&quot;&gt;&lt;strong&gt;📚️ Читаю&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;nty3&quot;&gt;➣ Неплохая статья о том, как чел сделал домашний сервер из телефона на Android: &lt;a href=&quot;https://seg6.space/posts/phone-server/&quot; target=&quot;_blank&quot;&gt;phone-server&lt;/a&gt;.&lt;/p&gt;
  &lt;p id=&quot;lHPG&quot;&gt;➣ В очередной рассылке Арнольда &lt;a href=&quot;https://arnoldspumpclub.com/blogs/newsletter/apple-cider-vinegar-weight-loss-study-retracte&quot; target=&quot;_blank&quot;&gt;интересный обзор&lt;/a&gt; про отсутствие эффекта яблочного уксуса на похудение (внезапно, лол).&lt;/p&gt;
  &lt;p id=&quot;DJVJ&quot;&gt;&lt;strong&gt;💻️ Приложения и сервисы&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;stkK&quot;&gt;➣ x.ai и Cursor выпустили &lt;a href=&quot;https://x.ai/bot&quot; target=&quot;_blank&quot;&gt;GrokBot&lt;/a&gt;, своего десктопного AI-ассистента. И я уже было заинтересовался, но проблема тут одна — $200. Спрашивается, зачем, если за те же деньги у ChatGPT ты получаешь тьму всего?&lt;/p&gt;
  &lt;p id=&quot;RCst&quot;&gt;&lt;strong&gt;👨‍💻 VibeCode&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;Ijz1&quot;&gt;➣ Увидел в одном из &lt;a href=&quot;https://youtu.be/W-SX_srBa3Y?is=K46uIzROo5heIZW_&quot; target=&quot;_blank&quot;&gt;видео&lt;/a&gt; про приложение &lt;a href=&quot;https://apps.apple.com/de/app/cmd-ctrl-command-control/id6759508413?l=en-GB&quot; target=&quot;_blank&quot;&gt;cmd ctrl app&lt;/a&gt; — удаленный доступ к AI агентам с телефона. Апка имхо стоит внимания.&lt;/p&gt;
  &lt;p id=&quot;O3az&quot;&gt;➣ Одна из самых важных фич агентов — это их кеш. Вот есть &lt;a href=&quot;https://github.com/sernote/audit-prompt-caching&quot; target=&quot;_blank&quot;&gt;скилл, который аудирует кеш LLM-агента&lt;/a&gt;, находя фейлы и прочее, тем самым оптимизируя его работу. Если тема сильно интересна, то вот здесь &lt;a href=&quot;https://habr.com/ru/companies/bitrix/articles/1008320/&quot; target=&quot;_blank&quot;&gt;референс на большую статью про кэш&lt;/a&gt;. Но тут важно понимать, что это аудит не локального CC или Codex, а агентского пайплайна в разработке.&lt;/p&gt;
  &lt;p id=&quot;27sw&quot;&gt;➣ У Глеба Кудрявцева старая, но хорошая статья на тему того, &lt;a href=&quot;https://vibeportal.ru/forum/topic/kak-stavit-tseli-v-kodeks&quot; target=&quot;_blank&quot;&gt;как правильно ставить цели (/goal) Кодексу&lt;/a&gt;, чтобы он реально их делал и проверял.&lt;/p&gt;
  &lt;p id=&quot;6sRJ&quot;&gt;➣ &lt;a href=&quot;https://loops.elorm.xyz/&quot; target=&quot;_blank&quot;&gt;Сборник &amp;quot;loop&amp;quot;-ов для агентов&lt;/a&gt;. Фактически это набор промптов для goal.&lt;/p&gt;
  &lt;p id=&quot;hxhp&quot;&gt;➣ Cloudflare &lt;a href=&quot;https://blog.cloudflare.com/kitesurf/&quot; target=&quot;_blank&quot;&gt;представил кучу AI-продуктов&lt;/a&gt;. Из интересного: браузер для агентов &lt;a href=&quot;https://blog.cloudflare.com/kitesurf/&quot; target=&quot;_blank&quot;&gt;Kitesurf&lt;/a&gt; и &lt;a href=&quot;https://blog.cloudflare.com/ai-search-easier/&quot; target=&quot;_blank&quot;&gt;AI Search&lt;/a&gt;. У первого пока не успел попробовать и понять, в чем разница с Browser Run, а вот поиск — это по сути готовый RAG из коробки. Звучит очень интересно, буду пробовать, напишу отдельный пост.&lt;/p&gt;
  &lt;p id=&quot;hqR9&quot;&gt;➣ &lt;a href=&quot;https://github.com/Forward-Future/loopy&quot; target=&quot;_blank&quot;&gt;Скилл для поиска и удаления дубликатов скиллов&lt;/a&gt;. Полезная хрень, ведь растет бесконечно, у меня уже штук шесть скиллов на код-ревью 🙃&lt;/p&gt;
  &lt;p id=&quot;EWH3&quot;&gt;➣ Warp &lt;a href=&quot;https://x.com/SpaceXAI/status/2085814657223209290&quot; target=&quot;_blank&quot;&gt;добавили поддержку Grok&lt;/a&gt; через подписки на X. Грок примечателен тем, что входит в подписку на сам X, поэтому любое его внедрение куда-либо — это хорошо.&lt;/p&gt;
  &lt;p id=&quot;QlUg&quot;&gt;➣ &lt;a href=&quot;https://github.com/cursor/plugins/blob/main/cursor-team-kit/skills/thermo-nuclear-code-quality-review/SKILL.md&quot; target=&quot;_blank&quot;&gt;Thermo-Nuclear Code Quality Review&lt;/a&gt; — хороший скилл от команды Cursor. Он больше проверяет &amp;quot;спагетти&amp;quot;-код, чем просто ревью багов.&lt;/p&gt;
  &lt;p id=&quot;2FGD&quot;&gt;➣ &lt;a href=&quot;https://github.com/cathrynlavery/diagram-design&quot; target=&quot;_blank&quot;&gt;diagram-design&lt;/a&gt; — плагин с типами диаграмм, который учит агента делать хорошие диаграммы, а не вот этот Mermaid-стоп, который они создают по дефолту.&lt;/p&gt;
  &lt;p id=&quot;DFEK&quot;&gt;&lt;a href=&quot;https://t.me/digital_ponos&quot; target=&quot;_blank&quot;&gt;Подпишешься на мой Telegram?&lt;/a&gt;&lt;/p&gt;

</content></entry><entry><id>afadeev:1Ew3uv5M_Wa</id><link rel="alternate" type="text/html" href="https://blog.afadeev.com/1Ew3uv5M_Wa?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=afadeev"></link><title>🚀 Шесть законов гиперроста AI-компаний</title><published>2026-08-12T15:05:14.688Z</published><updated>2026-08-12T15:05:14.688Z</updated><summary type="html">Наткнулся на большое исследование Севы Устинова о том, как росли Harvey, Sierra, Deel, Glean, Wiz и еще десяток быстрорастущих AI-компаний. Он собрал их метрики, интервью с фаундерами и сотрудниками, а затем выделил шесть повторяющихся законов роста. Законы тут, конечно, не в физическом смысле, а действия, которые встречаются у большинства компаний из выборки. 🎯 1. Начинать с узкой специализаци. Не строить «AI-платформу для всего», а найти один процесс, где продукт дает не 20% улучшения, а де...</summary><content type="html">
  &lt;p id=&quot;H2Ar&quot;&gt;Наткнулся на большое &lt;a href=&quot;https://sevaustinov.me/hypergrowth-research/&quot; target=&quot;_blank&quot;&gt;исследование Севы Устинова&lt;/a&gt; о том, как росли Harvey, Sierra, Deel, Glean, Wiz и еще десяток быстрорастущих AI-компаний. Он собрал их метрики, интервью с фаундерами и сотрудниками, а затем выделил шесть повторяющихся законов роста.&lt;/p&gt;
  &lt;p id=&quot;yeLz&quot;&gt;Законы тут, конечно, не в физическом смысле, а действия, которые встречаются у большинства компаний из выборки.&lt;/p&gt;
  &lt;p id=&quot;bAkA&quot;&gt;🎯 &lt;strong&gt;1. Начинать с узкой специализаци.&lt;/strong&gt; Не строить «AI-платформу для всего», а найти один процесс, где продукт дает не 20% улучшения, а десятикратную экономию времени или денег.&lt;/p&gt;
  &lt;p id=&quot;1FjG&quot;&gt;👑 &lt;strong&gt;2. Первый клиент должен быть максимально известным.&lt;/strong&gt; Один большой и уважаемый клиент создает больше доверия, чем десяток неизвестных компаний.&lt;/p&gt;
  &lt;p id=&quot;QkFv&quot;&gt;🧑‍💼 &lt;strong&gt;3. Нанимать в продажи экспертов из индустрии.&lt;/strong&gt; Юрист лучше продаст продукт другому юристу, а бывший банкир — банку. Эксперта можно за несколько недель научить продукту, но продавцу невозможно быстро выдать двадцать лет отраслевого опыта.&lt;/p&gt;
  &lt;p id=&quot;Lb9b&quot;&gt;🔍 &lt;strong&gt;4. Доказательства важнее обещаний.&lt;/strong&gt; Не рассказывать, а показывать. Платный пилот, фиксированный срок, одна понятная метрика, измеримый результат и заранее согласованная цена. Клиент покупает уже доказанный эффект, а не обещание.&lt;/p&gt;
  &lt;p id=&quot;A5kb&quot;&gt;💰 &lt;strong&gt;5. Сравнивать цену с человеческим трудом, а не с другим софтом.&lt;/strong&gt; Sierra продает обработку обращения дешевле доллара, тогда как человеческий контакт обходится примерно в $13. На таком фоне даже дорогой AI-продукт выглядит почти бесплатным.&lt;/p&gt;
  &lt;p id=&quot;W8Br&quot;&gt;📈 &lt;strong&gt;6. Встроить рост выручки в сам продукт.&lt;/strong&gt; Больше обращений, сотрудников или использования — больше выручки автоматически. Не нужно раз в год приходить к клиенту и вымучивать очередной апсейл.&lt;/p&gt;
  &lt;p id=&quot;KpCU&quot;&gt;Звучит так, будто бы магии нет, мол самые быстрые компании находят одну болезненную задачу, доказывают на ней экономику, получают правильного первого клиента и только потом расширяются. Звучит привлекательно, но фактор везения, конечно, тоже никто не отменял. Тем не менее это очень полезные мысли.&lt;/p&gt;
  &lt;p id=&quot;pCUv&quot;&gt;&lt;a href=&quot;https://t.me/digital_ponos&quot; target=&quot;_blank&quot;&gt;Подпишешься на мой Telegram?&lt;/a&gt;&lt;/p&gt;

</content></entry></feed>