Саймон Уиллисон собрал страницу рассылок голосом: Codex и GPT-6 Astra за час
Саймон Уиллисон запустил на своём блоге страницу Newsletters с архивом всех рассылок и почти целиком сделал её голосом. В десктопном приложении ChatGPT, во вкладке Codex, он полчаса диктовал задачу модели GPT-6 Astra High, пока готовил ужин. Модель написала Django-модель, миграцию, шаблоны и четыре импорта данных. Ещё полчаса ушло на ревью pull request и правки текстом. • Голос позволяет заниматься разработкой параллельно с другими делами. • Детали, логи и примеры кода эффективнее вставлять текстом. • Автор не считает голосовой режим основным способом работы.
AI-обработка оригинала Simon Willison; редакция Hamidun News
Саймон Уиллисон, автор Django и один из самых заметных практиков в теме LLM-разработки, выкатил на своём блоге страницу Newsletters: индекс всех его рассылок, и бесплатной недельной на Substack, и ежемесячной для спонсоров. Почти весь код написала модель GPT-6 Astra High в голосовом режиме Codex внутри десктопного приложения ChatGPT. Диктовка заняла около получаса, пока Уиллисон готовил ужин. Ещё полчаса ушло на ревью и правки с клавиатуры.
Полчаса у плиты
Сессию он начал текстовой командой «Start dev server and open in browser». Так на экране появилось локальное превью блога, и можно было визуально следить за прогрессом. Затем он нажал «Start new voice chat». Это не кнопка микрофона, а соседняя справа. Ноутбук встал на кухне, и работа пошла.
Задача была типовой для Django: новая модель, миграция, view, шаблоны и несколько функций импорта. Уиллисон был уверен, что модель справится. Из-за этого его постановка получилась разговорной, с «э-э» и самопоправками. Он сначала сказал, что рассылки не нужны на страницах тегов, индексе и датовых архивах, а потом передумал насчёт дат: если 19 сентября ушла рассылка, она должна появиться на странице этого дня. Копии с Substack не нужно индексировать в поиске, поскольку это дубли материалов блога. Ежемесячные выпуски содержат уникальный контент, и спустя месяц после отправки, когда их открывают, они должны попадать в поиск. Модель поняла требования; полный транскрипт Уиллисон выложил в Gist. Периодически она задавала уточняющие вопросы и шла править код.
Что получилось
За сессию собрали:
- новую Django-модель, миграцию и настройки админки;
- четыре импорта: свежие выпуски Substack через RSS, остальной архив Substack через недокументированный API, опубликованные ежемесячные выпуски из GitHub-репозитория и последний закрытый спонсорский выпуск из приватного репозитория;
- публичные страницы /newsletters/ и /newsletters/2026/;
- показ рассылок на страницах дней и месяцев, но не на главной и не в тегах;
- ссылки: недельные выпуски ведут на Substack, ежемесячные имеют собственные страницы;
- интеграцию с поиском по сайту.
С API Substack модель справилась сама. Она знала путь /api/v1/archive и попробовала его напрямую. Затем запустила поиск, чтобы понять пагинацию, и нашла статью Карен Спиннер. Дизайн индексной страницы тоже придумала модель. Уиллисон правил его голосом, поглядывая на превью через всю кухню.
До готовности не хватило импортов. Astra предложила экспортировать данные из локальной копии и загрузить в продакшен, но автору нужен был механизм, как у его прочих скриптов. Часть данных лежит в приватном репозитории GitHub, поэтому требовался новый API-ключ, а для этого надо сесть за клавиатуру.
Ревью и границы голоса
Дальше всё по обычной схеме: Codex создал ветку и открыл pull request, Уиллисон прочитал diff в интерфейсе GitHub. Главное замечание: в одном импорте модель вызывала Git через subprocess. Для приватного репозитория API надёжнее, и он переключился на текст и попросил заменить подход. Дополнительные коммиты в PR №719 включают эту замену и мелкие правки отображения. Ещё полчаса текстовых промптов, и код ушёл в продакшен.
Главный вывод автора неожиданно трезвый: ежедневным инструментом голос для него не станет. OpenAI любит показывать такие демо, например на DevDay, и там они работают. Но когда доходит до деталей, быстрее вставить пример, сообщение об ошибке или выделить нужный кусок кода, чем описывать их словами. Плюс общий офис: разговаривать с компьютером так при коллегах он бы не стал.
Сильная сторона связки в другом. Визуальное превью плюс возможность в любой момент перейти на клавиатуру делают голосовой режим куда полезнее, чем в телефоне при прогулке с собакой, где выходят в основном ресёрч и брейншторм. Практический вывод для разработчиков такой: голос годится для первого прохода, где нужно объяснить намерение и общую структуру. Доводку, ревью и всё, что завязано на точный код, лучше делать текстом. Задача для проверки подхода должна быть типовой: знакомый фреймворк, понятная схема данных, локальный сервер для обратной связи. И ревью pull request остаётся обязательным: именно оно поймало лишний вызов Git.
Соберите и запустите AI-продукт без классического кодинга
Практический интенсив Жемала Хамидуна по вайб-кодингу в Claude Code и Cursor на hamidun.com/vibecoding: от идеи и архитектуры до рабочего продакшн-сервиса, ботов и пайплайнов.
Главное из мира ИИ — раз в неделю
7 ключевых событий недели, отобранных вручную. Без шума, репостов и пресс-релизов.
Готово! Проверьте почту — мы отправили подтверждение.