Desktop-приложение объединяет в одном окне то, что в CLI разнесено по командам: навигацию по проектам, параллельные чаты, цели выполнения local, worktree и cloud, просмотр diff и встроенный терминал. Но главное решение принимается не в интерфейсе, а до отправки prompt - где именно должен выполниться turn. От выбора цели зависит, что агент увидит, какие у него будут секреты и как откатывать результат. Визуальное удобство здесь вторично по отношению к этому выбору.
Полезно один раз свести цели выполнения в таблицу, потому что у каждой свой риск. Local работает с вашим текущим рабочим деревом - и здесь легко смешать изменения нескольких чатов или свои с агентскими. Worktree даёт отдельное управляемое дерево - но в нём может не хватать игнорируемых зависимостей и локального config. Cloud работает в настроенном удалённом окружении без ваших локальных файлов. Разные цели - разные входные данные и разный путь восстановления.
Панель обзора требует внимания именно потому, что показывает больше, чем кажется. Review pane может отображать весь Git-state проекта, включая изменения, сделанные не Codex. Поэтому вид переключают между staged и unstaged, сравнением веток и режимом Last turn - в зависимости от того, что вы хотите увидеть. Перед apply или commit обязательно проверяют целевую ветку: применить изменения не туда - обиднее, чем сделать их заново, потому что это ещё и запутывает историю.
| Target | Состояние | Риск ошибки |
|---|---|---|
| Local | Ваш текущий working tree | Смешать изменения chats или пользователя |
| Worktree | Отдельный managed Git worktree | Не хватает ignored deps / local config |
| Cloud | Настроенное remote environment | Нет ваших локальных файлов и состояния |
Режим Last turn решает конкретную задачу разделения источников. Общий Git-state смешивает ваши прежние правки, изменения других чатов и то, что агент сделал в последнем шаге. Last turn показывает именно границу последнего turn - что изменилось за конкретный шаг агента. Это тот самый инструмент, которого не хватает в общем diff: он отвечает на вопрос "что сделал агент только что", не заставляя вручную вычитать из общего состояния всё остальное.
Встроенный терминал работает в выбранном окружении и полезен для независимой проверки. Через него смотрят pwd, git status и запускают тестовые команды - не полагаясь на слова агента, а проверяя состояние самостоятельно. У терминала есть своя тонкость восстановления: если он "завис", сначала открывают его заново и выполняют простую команду, а не перезапускают приложение. Перезапуск app, пока активные чаты ещё работают, рискует прервать их - лечить нужно терминал, а не всё окно.
Переход между поверхностями устроен так, чтобы не терять текущую работу. Команда /app в CLI на macOS и Windows открывает текущую сессию в desktop-приложении - то есть один и тот же разговор можно продолжить в другой оболочке. Но есть оговорка про версии: доступность функций может различаться, потому что bundled-клиент и standalone-CLI обновляются независимо. Функция, которая есть в одном, не обязана одновременно быть в другом, и это проверяют, а не считают данностью.
Смысл desktop - в визуальном контроле над параллельностью, а не в замене дисциплины. Несколько чатов, видимый diff и переключаемые цели помогают вести несколько задач сразу и не путать их. Но те же правила, что и везде, остаются в силе: выбирать цель осознанно, проверять целевую ветку перед apply, различать источники изменений в diff. Богатый интерфейс упрощает контроль, но не отменяет необходимости понимать, где выполняется работа и что уходит в изменение.
Типичные провалы в desktop предсказуемы. Отправить prompt, не выбрав осознанно цель выполнения, и получить не те входные данные. Применить изменения не в ту ветку, не проверив target перед commit. Спутать в review pane изменения агента с чужими, не переключившись в Last turn. И перезапустить приложение из-за зависшего терминала, прервав активные чаты. Выбирайте цель до prompt, проверяйте ветку перед apply, разделяйте источники в diff и лечите терминал, а не всё окно.