В начале этого года я был убеждён, что планирование станет самой важной частью разработки программного обеспечения с помощью ИИ.
Эта идея захватила меня настолько, что я построил и запустил целое десктопное приложение для разработки вокруг неё. Nuanced появился из наблюдения: ИИ радикально увеличил скорость и объём генерации кода, но интерфейсы, необходимые для поддержки этого нового темпа работы, не успевали за ним.

Подход Nuanced к планированию провалился, но он также открыл мне глаза на то, что план-режимы в целом больше не так полезны. Исторически режим планирования служил двум целям: (1) он формулировал инструкции, достаточно точные для агента, и (2) помогал людям понимать, что именно они строят.
Думаю, пункт 1 стремительно устаревает по мере того, как модели становятся лучше. Пункт 2 важен как никогда, но режим планирования — это неверная абстракция для него, особенно по мере роста числа параллельно работающих агентов.
Почему я создал Nuanced
Продукт, который я хотел создать, в конечном счёте отвечал на вопрос, который, на мой взгляд, актуален сейчас и всегда будет актуален: как люди поддерживают цельную мысленную модель программной системы, пока машины меняют её быстрее, чем человек успевает осмыслить изменения?
Модели могли написать тысячи строк кода за минуты — это означало, что вы наследуете огромный долг по поддержке, даже не успев подумать о том, что и зачем строите. Из-за этого становилось сложно рассуждать о поведении системы и отлаживать неверные предположения, которые слишком рано закреплялись в коде.

Лёгкость генерации кода давала всплеск дофамина, но при этом скрывала неудобную работу: понять, зачем вообще что-то строить, важно ли это, и тщательно оценить продуктовые, дизайнерские и инфраструктурные решения.
Нередко у меня оказывался готовый продукт прежде, чем я осознанно принял хоть одно продуктовое решение. Если я не до конца специфицировал архитектуру, агент брал на себя смелость заполнить пробелы — даже если способ, которым он разграничивал абстракции, создавал мне проблемы позже.
Эти недопонимания о задуманном поведении и дизайне расползались по множеству файлов, скрытых глубоко под поверхностью чата, и их легко было пропустить. Выуживать проблемы из этой непрозрачной глубины казалось менее эффективным, чем с самого начала спроектировать всё правильно.

Было что-то в этом опыте, от чего я чувствовал себя умственно отключённым и зомбиподобным — особенно когда такие приложения, как Conductor и Codex, открыли возможность запускать больше агентов параллельно. Я ощущал, что не могу по-настоящему сосредоточиться и достичь той же глубины понимания того, над чем работаю, что была доступна раньше. Это также затрудняло проверку корректности сгенерированных результатов.
Не было никакой ясной, читаемой цепочки, показывающей связь между запросом пользователя → решением агента → кодом → поведением продукта. Это не означало, что я хотел вернуться к старым временам, когда нужно было смотреть на строки кода или на файлы. На самом деле рассуждать об идеях на естественном языке казалось мне проще и эффективнее. Я хотел уверенно парить над кодом, не жертвуя пониманием того, как устроена система.
Существующие режимы планирования не были достаточно совместными
Я чувствовал: режимы планирования существуют, но правильной абстракции для хорошего планирования нет. Переходя от Claude Code CLI к Conductor и наконец к Codex после его запуска, я обнаруживал, что методично вытачиваю и шлифую планы, не имея чёткого места для их итерации.
Я делал это через чат, а потом копировал фрагменты плана в новые сообщения для доработки (до появления функции аннотаций в Codex). Этот рабочий процесс «скопировать-вставить» казался неуклюжим и делал проработку идей мучительной, пока нужно было ещё и следить за актуальным планом.
Я хотел дать своим планам дом, встроить их в общий рабочий процесс и превратить из эфемерных кусков текста, исчезающих в прокрутке по ходу разговора, в живой, дышащий, постоянный документ. Я хотел сделать режим планирования первоклассным примитивом, направляющим разработку. В основе этого желания лежали несколько причин:
Мне нужно было обдумать, что делать.
Мне нужно было убедиться, что я описал это достаточно точно.
Мне нужно было понимать, что было сделано.
Мне нужно было понимать, когда что-то пошло не так и почему.
Строим мечту
Я представил свой идеальный рабочий процесс и решил воплотить его в жизнь, закодировав в продукт. Nuanced позволял создавать треды, где каждый тред был отдельным диалогом. Вы обсуждали, что хотите построить, система выявляла неоднозначности и решения, требующие вашего участия, и вместе вы приходили к постоянному плану до начала реализации.
Затем Nuanced воплощал ваш план, следя за тем, чтобы сгенерированный код соответствовал вашим требованиям. Я хотел сквозной конвейер, начинающийся с намерения и проходящий весь путь до реализации, ревью и верификации. Я смотрел на это скорее как на протез для человеческого разума (или моего ADHD-разума), чем просто на очередное приложение для разработки: продукт был спроектирован так, чтобы одновременно инструктировать и помогать мне отслеживать, что происходит.
Почему я ошибался
Дело не столько в том, что мои идеи о пробелах в существующих инструментах или о том, как меняется SDLC, были неверными, — сколько в том, что наша реализация не дала ожидаемого решения. Причины:
я перепутал планирование с планом
модели стали очень хорошими
никто не хочет читать текст, написанный ИИ
мы разделили планирование и разработку так, что это стало разрушительным
1. Планирование ≠ план
Первое, что мы поняли: мы перепутали планирование с планом. Это на самом деле разные вещи. Я исходил из того, что иметь пространство, чтобы тщательно обдумать что-то до реализации, — ценно. Я также думал, что сохранять это обдумывание в большом структурированном артефакте будет ценно по ходу развития проекта. Но у ранних пользователей оказался удивительно низкий аппетит к такой спецификации.
2. Модели стали очень хорошими
По мере того как модели лучше понимали большие кодовые базы через контекст и память, они всё лучше справлялись с исследованием репозитория и разумными предположениями. Необходимость явно инструктировать их для получения продуманного результата сократилась.
Изначально я не думал о возможностях моделей как о чём-то конкурирующем с проектированием лучшего интерфейса для человеческого мышления, но во многих отношениях это именно так. Каждое решение, которое модель могла надёжно принять самостоятельно, — это одно решение меньше, которое нужно было выносить на поверхность.
3. Текст, написанный ИИ, тяжело читать
Спецификация содержала больше информации, не создавая при этом большей ясности. Наши спецификации были длинными. Они фиксировали важные решения и содержали много контекста, который казался полезным, — но проблема была в том, что они были написаны ИИ. Есть что-то в темпе и чрезмерно структурированной природе текста, написанного ИИ, что делает его очень сложным для чтения. Мои глаза раз за разом стекленели.
Вместо того чтобы отреагировать на это открытие, убив спецификацию, мы построили Spec Tour как решение. Мы думали, что вместо того, чтобы просить кого-то усвоить весь документ, Spec Tour проведёт его через важные части. Но это лишь добавило дополнительный слой сложности — ещё один текст на экране, требующий внимания.
Если нам нужно было создавать сокращённое представление спецификации, чтобы сделать её пригодной для использования, зачем вообще был нужен полный документ?
4. Мы разрезали процесс, который должен был ощущаться непрерывным
Наш рабочий процесс был слишком линейным и последовательным. Он выглядел примерно так:
чат → устранение неоднозначностей → генерация спецификации → ревью спецификации → доработка спецификации → согласование → реализация → ревью кода
Реальное мышление устроено иначе, и разделение между этими частями казалось искусственным и вынужденным. Обычно вы понимаете часть проблемы, пробуете что-то, начальная генерация учит вас чему-то новому, что может заставить вас передумать и попробовать что-то другое. Каждый шаг открывает новый вопрос. Планирование и разработка переплетены и возникают органичнее, чем позволяют план-режимы, — особенно в том виде, в котором мы реализовали это в Nuanced. Наш интерфейс вынуждал пользователей преждевременно «заканчивать думать», чтобы начать строить. После начала реализации возвращение к прежнему чат-рассуждению ощущалось как движение назад по рабочему процессу. Подняться обратно по водопаду было невозможно.

Если посмотреть на то, как сейчас работает Codex, граница между планированием и исполнением исчезает по мере их слияния в одно целое. Раньше агенты для разработки кода извлекали пользу из рабочего процесса, где люди делали следующее:
план → согласование → исполнение
Тогда цена движения в неверном направлении была значительно выше. Но по мере того как агенты лучше понимают системы, они также становятся лучше в автономных действиях и тестировании собственной работы. Они хорошо пересматривают свой подход, изучив результат. Это открывает другой цикл:
понять → действовать → проверить → уточнить → скорректировать → действовать снова

В этом цикле по-прежнему происходит огромное количество планирования, но оно не обязательно должно выглядеть как документ под названием «план». Думаю, самая большая ошибка, которую я совершил, — превратить план в артефакт вместо того, чтобы проектировать процесс для улучшения человеческого понимания.
5. Режим планирования и режим разработки — странное разделение
В Nuanced был режим планирования и режим разработки, и пользователи могли начинать с любого из них.
Режим планирования всегда порождал спецификацию, тогда как режим разработки не принуждал к спецификации и мог использоваться для небольших задач, не заслуживающих такого документа.
Но разделение между этими режимами было неудобным: пользователю приходилось задавать себе мета-вопрос — заслуживает ли задача планирования, — а затем помнить, что нужно активировать режим планирования через кнопку или горячую клавишу. Это ощущалось как различие, которое ИИ должен делать за вас на основе уже имеющегося контекста, а необходимость помнить, в каком режиме нужно находиться, лишь добавляла когнитивную нагрузку.
Это осознание заставило меня почувствовать себя персонажем мема «мидвит»: оказывается, простота чат-интерфейса, где планирование происходит по необходимости, а не по умолчанию, была на самом деле отличной.

Проблема понимания до сих пор не решена
Обдумывание того, что строить, почему это важно, и оценка решений по-прежнему важны. Людям нужно строить цельную мысленную модель происходящего, но я не думаю, что большой массив текста, написанного ИИ, — это правильный интерфейс для этого. Прорабатывать решения в чате ощущается более интуитивно, но поддерживать это понимание актуальным по мере изменения системы — всё ещё открытая проблема.
Эта проблема усугубляется по мере перехода от пяти агентов к сотням. Не отставать не может означать чтение каждого диалога и попытку получить объяснение каждого изменения кода. Агенты должны находить те немногие точки, где человеческое внимание может принести наибольшую пользу, и выводить на поверхность достаточно контекста, чтобы это внимание было продуктивным.
Мы до сих пор не решили, как помочь людям оставаться ориентированными, пока сотни всё более способных агентов одновременно меняют систему. Но думаю, более глубокая проблема — как люди понимают системы, навигируют по сложным иерархиям информации и используют мощные инструменты — непреходяща. Интерфейсы меняются вместе с технологиями, которые их питают; потребность сделать сложное понятным — нет.

Что дальше: треды и мультиагентность
Мы в OpenIDE тоже много думаем о том, как должны быть устроены планирование и работа с несколькими агентами. Мы развиваем свой AI-плагин, который позволяет подключать разных агентов и работать с ними в одном месте.
У большинства агентов пока есть отдельный режим планирования, но нам кажется, что постепенно всё больше из них будут уходить от этого разделения. Особенно интересной здесь выглядит идея тредов: из любой точки обсуждения или отдельного пункта задачи можно начать новую ветку с другим агентом. Так можно параллельно исследовать варианты, уточнять решения и браться за отдельные части работы. Именно такую возможность мы планируем добавить в ближайших релизах.
Если вы раньше не слышали про OpenIDE, но пользуетесь IntelliJ IDEA, WebStorm, GoLand, PHPShtorm или PyCharm, попробуйте нашу мультиязычную IDE на базе IntelliJ Platform. В сборку OpenIDE Pro входит и наш AI-плагин для работы с разными агентами.

Комментарии (27)

netricks
29.09.2026 12:45ДОСКА! Заведите доску! Spec driven мёртв по прибытии.
Планы - это в детском саду изучают. Это первое, что вам дают, чтобы агент вас не покусал и от чего вы отказываетесь через два месяца

achekalin
29.09.2026 12:45Давно не оставляет мысль, что plan mode от action mode отличается только приписками вида "обдумай, но НИЧЕГО не делай!" (может, восклицательных знаков больше).
Но вот что понимаю: чем модели становятся умнее и автономнее, тем меньше им нужен план как инструкция, но тем больше уже человеку нужен, назовем так, checkpoint (или вообще расписанное состояние вида "как мы сюда пришли, и куда собрались идти из этого состояния") как механизм управления риском.
Потому что модели пишут уже давно куда бодрее, чем человек способен понять их бег мысли, так что, когда в процессе реализации/доводки/решения модель видит очередную проблему, и уходит на очередной виток решения еще и её, не всякий человек уже понимает, куда она метнулась - и тем более как это ложится на общую картину.
А вот на таких точках остановки оглядеться и расписать для человека текущую обстановку, и узнать его мнение - это полезно.

netricks
29.09.2026 12:45И вот тут нам на помощь приходит доска, на которой зафиксировано, что, в каком порядке и зачем делалось. Читать её человек конечно не будет, зато сам агент, у которого память как у рыбки, прекрасно восстанавливает по доске ход своих мыслей

oracle_schwerpunkte
29.09.2026 12:45А можно статью про это ? Процесс понятен; интересует как оно на практике, и есть ли отличия от currentState.md, gochas.md и toDo.md?

netricks
29.09.2026 12:45Не совсем понял. Статью про то, чем доска лучше коллекции md файлов? Можете поискать статьи про linear, beards и другие. Тысячи их. На самом деле все доски примерно одинаковы. Любая система с тикетами, коментариями и поиском даёт агенту lvlup. Сам я такую статью не писал (сам я, если что, использую старый добрый kanboard)

may-cat
29.09.2026 12:45Режим планирования и стремление "ревьювить спецификации" — это рак мозга, порождённый попыткой хоть как-то контролировать нечёткую логику и, будем откровенны, оправдать свою, программистскую, ценность.
Упование на то, что детально прописанная спека, якобы, как заклинание обеспечит качество — не больше чем проекция прошлого опыта, когда код детерменированно превращался в исполняемое приложение.
Да, перед разработчиками стоит важнейший вопрос — как обеспечивать качество ИИ-сгенерированных продуктов. Куда смотреть, что проверять, какими автотестами/гардрейлами покрывать, как правильно выкатывать и обеспечивать надёжность. Но вопрос этот гораздо шире и сложнее мольбы на священные тексты спецификаций, которые, якобы, докажут как поведёт себя продукт в продакшне.
Serega_Biven
29.09.2026 12:45а вы свою ценность чем оправдываете ? способностью писать качественные промпты?

Dhwtj
29.09.2026 12:45Управлять требованиями и ревьювить спеки это разные вещи. Первое не автоматизируемо, второе бесполезно

cArmius
29.09.2026 12:45Они даже нарисовали ответ в статье, но не поняли этого
Даже в вотерфолле внутри каждого этапа вполне могли быть циклы уточнения требований и корректировок документации
"План ничто, планирование всё" - но это не значит что нужно отказываться от всех представлений планов как таковых, они все равно могут существовать. Просто план тоже может меняться.

i86com
29.09.2026 12:45Режим планирования использую, но редко. Это аналогично "думательному" режиму LLM (thinking mode/deep think/ и как его только не называли, чтобы не совпасть в формулировке и чтоб не засудили за это) - генерация более развёрнутого промпта перед решением задачи.
Применимость объясняется просто - дать LLM изучить проект (файлы, БД, консоль), без внесения каких-либо изменений. Как жесткое требование - "смотри, но не трогай".
По какой причине? По причине того, что у задачи иногда есть очевидное решение за пределами кода. Но ИИ-шка его не может порекомендовать, её учили писать код, вот она его и будет всегда писать, излишне переусложняя структуру, добавляя костылей и неоднозначной логики.
Простой пример - вот есть некий интернет-магазин. У него есть товары, которые время от времени обновляются из 1С. Иногда по этим товарам заканчиваются остатки на складах. Что с такими товарами делать? Показывать 404? Ставить редирект на актуальные товары? Или на раздел? Просто показывать страницу с возможностью "оставить заявку, на случай, если вдруг товар вернётся"?
А ответ - внезапно - зависит от того, какие вообще это товары и от бизнес-логики магазина. Иногда заранее известно, что товар уже точно не вернётся. Иногда, наоборот, карточка товара есть - значит скоро будет. А иногда это только менеджер может определить.
Если слепо отдать решать эту задачу LLM, то она набурагозит десятиуровневую настройку в админке на все случаи жизни, увидев которую, менеджер задумается о том, чтобы пойти (обратно) в таксисты. А иногда код даже трогать не надо - просто сказать менеджерам "А вот те товары, которые точно больше не надо - давайте их не обнулять в 1С, а тупо удалять, а фолбек на такой случай уже есть".
Но такое можно увидеть только в режиме планирования, с правильным промптом.
Или, например, вариант, сделать раздельную логику для разных типов товаров. Предложение - есть о чём задуматься, но опять же, только в режиме планирования. В обычном режиме LLM-ка brrrr генерит вам новый код под ваш запрос, нет времени думать.

tenzink
29.09.2026 12:45Интересно, а зачем вообще какой-то отдельный режим - всегда воспринимал "planning mode", как какой-то костыль. Чем он лучше чем банальный диалог, начинающийся со слов "делаем план для ..."?

Arondy
29.09.2026 12:45А чем говорить "Делаем план для ..." лучше, чем одно нажатие хоткея для переключения на режим планирования? И это на уровне харнеса не дает модели ничего редактировать, даже если она по каким-то причинам проигнорирует ваши слова.

tenzink
29.09.2026 12:45Лучше, потому что это -1 лишняя абстракция. И это неверно, что модель не должна ничего редактировать. Как раз-таки должна - создать или обновить файл с планом и связанные доки, wiki странички и трекер.

worfect
29.09.2026 12:45Если я провожу с агентом ресерч по какому-то вопросу, чтобы решить, что ваще дальше делаем, с какого перепугу он мне должен че-то редактировать в коде? Вот, епт, с какого? Я ТОЧНО знаю, что мне в этот момент НЕ НУЖНО НИЧЕГО РЕДАКТИРОВАТЬ. Либо же я точно знаю, что сейчас нужно редактировать файлы только в папочке spec. Отказ от четко зафиксированных команд, как в OpenSpec (explore - propose - apply), или от четко зафиксированного режима, как где угодно - это не отказ от абстракции, раз у тебя остается необходимость "включать" этот режим самописной "командой", которая за собой не содержит никаких четких инструкций для агента, скорее всего.
Другое дело, что эта абстракция, наверное, должна быть на другом уровне все-таки в текущих реалиях - не агента, а фреймворка\скилла\еще какой-нибудь хероборы с более четкими настройками и инструкциями для межагентской работы. Потому что, если что, классический режим планирования на уровне одного-единственного агента не подразумевает, строго говоря, создание каких-либо документов. Он подразумевает одно - не трогай пока что код.

funca
29.09.2026 12:45В ходе ресерча агент предлагает гипотезы с различными допущениями. Например - использовать функцию из фреймворка. Крутой же план. Но понять, что это не галлюцинация и у такого решения нет каких-то подводных камней или конфликтов с текущей реализацией можно лишь выполнив код.
Результаты ресерча получаются чище, если во время написания спецификаций агент может создавать и запускать тестовые программы, вносить какие-то временные правки в код проекта, а потом откатывать назад. Создавать PR, чтобы пошарить промежуточные результаты с другими членами команды.
Получается, что разница между планированием и разработкой лежит где-то на уровне семантики - как мы ставим цели и оцениваем результаты. В плане механики отличий практически нет (разве что не деплоить в прод).

Revertis
29.09.2026 12:45Это не режим планирования, а режим исследования.

funca
29.09.2026 12:45Это не режим планирования, а режим исследования
Классное замечание, я почему-то не думал об этом в таком ключе. Наверное потому, что в "Research & development" нет слова "планирование" и у меня оно ассоциировалось с первым.

tenzink
29.09.2026 12:45Режим "планирования" в контексте разных проектов формализуется по-разному. Где-то всё тривиально, и не требует модификаций кода, а где-то предполагает очень плотную работу с кодом (тут всё по делу написал @funca).
Да и режимов самописных "команд" тоже вагон и маленькая тележка: планирование, реализация, выбор архитектуры, ревью PR, работа с техдолгом, оценка харнеса, анализ проблем прода, мониторинг релиза. Планирование тут не выглядит чем-то из ряда вон, и складывается впечатление, что "режим планирования" это решение проблемы не на том уровне абстракции

funca
29.09.2026 12:45Режим read-only плохо вяжется с этапом планирования. Здесь тоже нужно писать спецификации, рисовать презентации, создавать PoC для проверки гипотез и т.п.

Revertis
29.09.2026 12:45Это режим исследования. А режим планирования - это планирование реализации какой-то фитчи или какого-то рефакторинга. То есть того, что вы сделаете за эту сессию, а то и быстрее, чем заполнится контекст модели.

funca
29.09.2026 12:45Claude code для этого теперь хватает auto mode и заклинания в промпте don't charge the code yet. А забить контекст в 1M токенов надо еще постараться. Он иногда сам переключает свой режим в planning и обратно. Я думаю, что фича полезная. Просто со стороны UX она видимо стала выглядеть как рудемент реализации, а не пользовательская ценность. О чём в общем-то и статья.

i86com
29.09.2026 12:45Возможно, в каких-то системах это идентично, но для меня "planning mode" это про план, который я обсуждаю с LLM и рассчитанный на дальнейшее выполнение этой LLM, а "делаем план для..." - это когда потом его ещё людям можно будет показать (т.е. без лишних подробностей реализации и повторения очевидных вещей).

NSK_SC
29.09.2026 12:45Планированием должны заниматься специально обученные люди. И в описанной цепочке где-то ближе к концу почему-то этот этап обозначает. С какого перепугу чат с ии стоит в начале я хз.
Планирование приложения начинается задолго до того как ИИ что-то узнает о будущем решении и особенно до первых строк кода. Тем более если это не соло программист.

innokentyBo
29.09.2026 12:45Мне кажется, здесь умер не процесс планирования, а план как большой текстовый артефакт, который нужно прочитать и сохранить в голове. Решения всё равно приходится принимать: что строим, какие ограничения считаем обязательными и по каким признакам результат принят. Их можно не собирать в длинную спецификацию, но тогда они должны жить ближе к исполнению — в проверяемых ограничениях, примерах, тестах и точках человеческого решения. Иначе сокращение плана просто переносит продуктовые и архитектурные решения внутрь модели, где их труднее заметить и оспорить.
danilovmy
Спасибо. Я читал в оригинале, и это классно, что такой материал добирается до всех читателей!