 
                        67
Codex написал WASD управление для Смотрителя
Эта статья является частью цикла
- Проект смотритель. Часть 1. Начало
- Проект смотритель. Часть 2. Дизайн
- Проект смотритель. Часть 3. Фоторезист
- Проект смотритель. Часть 4. Шасси
- Проект смотритель. Часть 5. Гусеницы
- Проект смотритель. Часть 6. Моделирование и печать
- Проект смотритель. Часть 7. Железо
- Проект смотритель. Часть 8. Софт
- Проект смотритель. Часть 9. Зарядная станция
- Проект смотритель. Часть 10. Bluetooth
- Проект смотритель. Часть 11. Home assistant
- Codex написал WASD управление для Смотрителя
В комментариях к ролику с демонстрацией Смотрителя меня давно просили добавиьт в интерфейс WASD управление.
А OpenAI на неделе раздали доступы Plus подписчикам к своему агенту для написания кода с интеграцией в github - Codex.
Случайности не случайны, я решил испытать Codex в деле как раз на примере этой задачи.
Что такое Codex?
Codex - автономный облачный ИИ-агент, который может параллельно выполнять несколько задач.
То есть вы можете подключить его к своему GitHub аккаунту, выдать все необходимые права к репозиториям (список можно ограничить) и заставить поработать.
Какие основные настройки он предоставляет:

Можно указать кастомный промпт, разделять ли экран по вертикали (слева - чат, справа - diff с правками кода) и шаблон названия ветки, где codex будет вести разработку.
Вдобавок можно также настроить локальное окружение (Codex располагает виртуалкой, внутри которой разворачивает ваш проект)

Есть настройки выполнения кода - можно установить образ для виртуалки и предустпновить какие-то пакеты, установить переменные окружения и секреты и скрипт, который будет запускаться для образа.
Также можно включить доступ к интернету для агента и ограничить список сайтов, к которым он сможет подключаться, а также HTTP методы (забавно, как будто без POST / UPDATE / DELETE нельзя делов натворить).

Еще можно подключиться к терминалу виртуалки и обнаружить там Ubuntu 24.04:
/workspace/esp32-caretaker$ 
lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 24.04.2 LTS
Release:    24.04
Codename:   nobleНу или просто вывести приветствие:

Что можно делать дальше? При подключении репозитория Codex автоматически стартует 3 задачи (возможно, они могут различаться, у меня такие):

Каждый работает какое-то время, шерстит код и выдает какой-то результат. Это может быть и простое текстовое описание, как в случае с Explain codebase to newcomer, так и уже готовые правки в коде, которые в пару кликов можно отправить в репозиторий в качестве ветки и/или PR.
Но стандартные задачи не особо интересны, у меня же есть давний issue про добавление WASD управления в интерфейс. Недолго думая я отправил Codex только ссылку на этот issue без дополнительных пояснений. Иии через 3 минуты у меня были готовы правки по добавлению управления в код, которые я в пару кликов превратил в PR.
После этого я еще парой промптов добавил, чтобы при управлении с клавиатуры визуально менялось положение стика и добавил поддержку русской раскладки - это все дополнительные необязательные фичи, так что можно считать, что Codex справился с задачей на ура с первого раза. Процесс разбора проекта, кодинга и отправки PR можно посмотреть в этом ролике на YouTube (ускорено в 2 раза).
Некоторые комментарии по процессу решения задачи и сравнение этого процесса с Cursor.
Весь ход решения доступен в live режиме на экране и постфактум в режиме чата.
- Codex проверяет наличие AGENTS.md в проекте - если вы решите его использовать постоянно - логично добавить этот файл со всеми необходимыми для проекта инструкциями.
- В отличии от Cursor все взаимодействие с проектом полностью открыто - Codex не умеет просматривать директории или читать файлы без консоли - все операции выполняются прямо в shell через ls / sed / grep / find и прочие команды.
- При необходимости внесения правок все также происходит наглядно через консоль и команду apply_patch, например вот так он добавил строку в readme:
root@99b15073bb5c:/workspace/esp32-caretaker# apply_patch<<'PATCH'
> *** Begin Patch
> *** Update File: readme.md
> @@
>    * **Web Interface Joystick:** Intuitive virtual joystick control
>    * **Web Interface Sliders:** Fine-grained control over individual motors
>    * **Bluetooth Controller:** Support for physical Bluetooth controllers (e.g
., ExpressLRS Joystick)
> +  * **Keyboard WASD:** Use W/A/S/D keys in the web interface
>    * **Adjustable Video Settings:** Multiple resolution options (from QQVGA to
 UXGA)
> *** End Patch
> PATCH
Success. Updated the following files:
M readme.md- Ну и схожесть с Cursor - после применения изменений Codex пытается проверить их валидность - через линтер или другие проверки, если они настроены / прописаны у вас в проекте. Например, у меня он линтером питона все проверил, но pio runзапустить уже не смог, т.к. pio не установлен на виртуалке (возможно, через настройки это возможно добавить).
Далее просто нажимаем кнопку отправки правок в репозиторий - в репозитории создается ветка codex/{feature} и из неё также можно сделать PR. Связать PR с issue он сам не смог, несмотря на то, что id он знал и оно содержалось в названии ветки, банально в описание PR не разместил соответствующую ссылку. Пришлось ему с этим помочь.
В общем и целом - выглядит довольно интересно. Буду ли я пользоваться этим на постоянке не знаю, пока кажется, что Cursor с прямым доступом к коду удобнее чисто с разработческой стороны - всегда можно руками поправить что-то быстрее чем промптами. Но для задач, не требующих такого или для людей-мимокрокодилов, имеющих посредственное отношение к программированию - инструмент довольно любопытный.
Демо
Демо полученного режима управления с клавиатуры в видео ниже. Заодно можете оценить уровень задержки управления и трансляции картинки - все в одном кадре, на предыдущих демо из-за монтажа это было местами непонятно.
Комментариев пока нет
- 
                                          Универсальный AI Telegram BotХотите в пару действий запустить собственного AI бота для Telegram?
- 
                                          Анализ истории просмотров YoutubeЗадумывались, сколько времени вы проводите за просмотром видео? Давайте считать.
- 
                                          Image2model с tripo3d и BlenderИногда хочется, чтобы нарисованный или сгенерированный персонаж стал настоящим
- 
                                          Локальный эмулятор TelegramПисали ли вы когда-нибудь телеграм ботов?
- 
                                          Реанимируем основание вешалокЕсть дома пара вешалок с плечиками, на которых удобно располагается одежда для…
- 
                                          Ложемент для столовых приборовОрганайзинг - одна из сфер, куда я периодически пытаюсь приложить руку. На этот…